JavaWeb之Maven

五、Maven

目錄:Maven項(xiàng)目架構(gòu)管理工具、下載安裝Maven、配置環(huán)境變量、阿里云鏡像、本地倉(cāng)庫(kù)、在IDEA中使用Maven、補(bǔ)充:在IDEA中配置Tomcat、pom文件、可能遇到的問(wèn)題

1.Maven項(xiàng)目架構(gòu)管理工具

學(xué)習(xí)此技術(shù)的原因
①在JavaWeb開發(fā)中,需要使用大量的jar包,手動(dòng)去導(dǎo)入。
②用一個(gè)東西自動(dòng)導(dǎo)入和配置jar包。
目前用就是為了方便導(dǎo)入jar包的。
Maven的核心思想:約定大于配置。
Maven會(huì)規(guī)定好如何去編寫Java代碼,必須要按照這個(gè)規(guī)范來(lái)。有約束,不要去違反。

2.下載安裝Maven

Maven官網(wǎng):https://maven.apache.org

下載安裝Maven

下載完成后解壓即可。

3.配置環(huán)境變量

在系統(tǒng)環(huán)境變量中,配置環(huán)境變量:
①M(fèi)2_HOME Maven目錄下的bin目錄
②MAVEN_HOME Maven的目錄
③在系統(tǒng)的Path中配置%MAVEN_HOME%\bin
具體操作:右擊我的電腦——>屬性——>高級(jí)系統(tǒng)設(shè)置——>環(huán)境變量——>系統(tǒng)變量 新建——>變量名為M2_HOME,變量值為Maven目錄下的bin目錄——>繼續(xù)新建——>變量名為MAVEN_HOME,變量值為Maven的目錄。配置PATH變量:雙擊PATH——>新建——>內(nèi)容為%MAVEN_HOME%\bin。

高級(jí)系統(tǒng)設(shè)置

環(huán)境變量
系統(tǒng)變量的新建
創(chuàng)建系統(tǒng)變量M2_HOME
創(chuàng)建系統(tǒng)變量MAVEN_HOME
雙擊PATH
配置PATH中變量
測(cè)試成功

打開控制臺(tái)——>輸入mvn -version,測(cè)試Maven是否安裝成功,必須保證配置完成。

4.阿里云鏡像

鏡像:mirrors
作用加速下載。
國(guó)內(nèi)建議使用阿里云的鏡像。
在conf文件夾中的settings.xml中的<mirrors>添加:

<mirror>
  <id>nexus-aliyun</id>
  <mirrorOf>*,!jeecg,!jeecg-snapshots</mirrorOf>
  <name>Nexus aliyun</name>
  <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

5.本地倉(cāng)庫(kù)

本地倉(cāng)庫(kù)就是在本地的倉(cāng)庫(kù),可以聯(lián)想到遠(yuǎn)程倉(cāng)庫(kù)。
建立一個(gè)本地倉(cāng)庫(kù):localRepository
在Maven目錄中新建一個(gè)文件夾maven-repo。

新建文件夾maven-repo

在conf文件夾中的settings.xml中添加:

<localRepository>D:\Maven\apache-maven-3.6.3\maven-repo</localRepository>

其中為maven-repo的路徑。

6.在IDEA中使用Maven

1)用模板創(chuàng)建一個(gè)Maven項(xiàng)目
Create New Project——>Maven——>檢查Java是否配置好,勾選Create from archetype,選擇下面的maven-archetypr-webapp——>填寫項(xiàng)目名稱和項(xiàng)目地址,并填寫GAV——>選擇Maven的地址、用戶設(shè)置文件和本地倉(cāng)庫(kù)(IDEA有自帶的Maven)——>Finish

Create New Project

檢查Java是否配置好,勾選Create from archetype,選擇下面的maven-archetypr-webapp
填寫項(xiàng)目名稱和項(xiàng)目地址,并填寫GAV
選擇Maven的地址、用戶設(shè)置文件和本地倉(cāng)庫(kù)

等待項(xiàng)目的初始過(guò)程
Ⅰ會(huì)自動(dòng)導(dǎo)入包。

自動(dòng)導(dǎo)入包中

Ⅱ出現(xiàn)BUILD SUCCESS說(shuō)明項(xiàng)目創(chuàng)建成功了。


出現(xiàn)BUILD SUCCESS

觀察Maven倉(cāng)庫(kù)中多出的東西。
IDEA中的Maven設(shè)置:File——>Settings——>Build,Execution,Deployment——>Maven

IDEA中的Maven設(shè)置

自動(dòng)導(dǎo)入源碼,先不勾選

注意:經(jīng)常在IDEA中會(huì)出現(xiàn)一個(gè)問(wèn)題,就是項(xiàng)目自動(dòng)創(chuàng)建完成后,這個(gè)MavenHome會(huì)使用IDEA默認(rèn),如果發(fā)現(xiàn)了這個(gè)問(wèn)題,手動(dòng)改為本地的。
2)創(chuàng)建一個(gè)普通的Maven項(xiàng)目
Create New Project——>Maven(不勾選任何,直接Next)——>填寫項(xiàng)目名稱和項(xiàng)目地址,并填寫GAV——>Finish

普通的Maven項(xiàng)目

模板創(chuàng)建的Maven項(xiàng)目

模板方式生成的,只有在web應(yīng)用下才會(huì)有。
對(duì)比這個(gè)普通的Maven項(xiàng)目,模板創(chuàng)建的Maven項(xiàng)目在main中創(chuàng)建文件夾java和resources就完整了。
3)標(biāo)記文件夾功能
①右擊文件夾——>Mark Directory as
ⅠSources Root 源碼目錄
ⅡTest Sources Root 測(cè)試源碼目錄
ⅢResources Root 資源目錄
ⅣTest Resources Root 測(cè)試資源目錄
②File——>Project Structure…——>Modules——>點(diǎn)擊項(xiàng)目——>選中文件夾——>標(biāo)記

標(biāo)記文件夾功能的另一種方式

java編譯成class文件放在不同的文件夾中,放在target目錄里。
在模板創(chuàng)建的Maven項(xiàng)目中去除pom.xml中的<scope>test</scope>會(huì)繼續(xù)下載。

補(bǔ)充:三、5.在IDEA中配置Tomcat

右上角配置——>點(diǎn)擊加號(hào)——>Tomcat Server——>Local——>Name改為Tomcat 9,確認(rèn)配置——>警告點(diǎn)擊Fix——>點(diǎn)擊加號(hào)——>Artifact…——>選擇war或war exploded


配置
點(diǎn)擊加號(hào),選擇Tomcat
Name改為Tomcat 9,確認(rèn)配置
解決警告問(wèn)題

解決警告問(wèn)題
問(wèn)題的原因:訪問(wèn)一個(gè)網(wǎng)站,需要指定一個(gè)文件夾名字。(必須要的配置)
注:Application content可以寫,也可以不寫。默認(rèn)訪問(wèn)路徑為localhost:8080。假如寫了/ping,路徑為localhost:8080/ping。這個(gè)過(guò)程叫做虛擬路徑映射。

將默認(rèn)訪問(wèn)路徑改為localhost:8080/ping

啟動(dòng)Tomcat,訪問(wèn)到index.jsp。


啟動(dòng)Tomcat,訪問(wèn)到index.jsp

7.pom文件

pom.xml是Maven的核心配置文件。


Maven項(xiàng)目結(jié)構(gòu)

MavenWeb項(xiàng)目模板

<?xml version="1.0" encoding="UTF-8"?>

<!--Maven版本和頭文件-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <!--這里是自己配置的GAV-->
  <groupId>ping</groupId>
  <artifactId>untitled1</artifactId>
  <version>1.0-SNAPSHOT</version>
  <!--Package:項(xiàng)目的打包方式
  jar:java應(yīng)用
  war:JavaWeb應(yīng)用
  -->
  <packaging>war</packaging>

  <!--配置-->
  <properties>
    <!--項(xiàng)目的默認(rèn)構(gòu)建編碼-->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <!--編碼版本-->
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>

  <!--項(xiàng)目依賴-->
  <dependencies>
    <!--具體依賴的jar包配置文件-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
    </dependency>
  </dependencies>

  <!--項(xiàng)目構(gòu)建用的東西-->
  <build>
    <finalName>untitled1</finalName>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

Maven的高級(jí)之處在于,可以導(dǎo)入這個(gè)jar包依賴的其它jar包。
Maven由于約定大于配置,可能遇到寫的配置文件,無(wú)法被導(dǎo)出或者生效的問(wèn)題,解決方案:

<!--在build中配置resources,來(lái)防止資源導(dǎo)出失敗的問(wèn)題-->
<build>
  <resources>
    <resource>
      <directory>src/main/resources</directory>
      <excludes>
        <exclude>**/*.properties</exclude>
        <exclude>**/*.xml</exclude>
      </excludes>
      <filtering>false</filtering>
    </resource>
    <resource>
      <directory>src/main/java</directory>
      <includes>
        <include>**/*.properties</include>
        <include>**/*.xml</include>
      </includes>
      <filtering>false</filtering>
    </resource>
  </resources>
</build>

IDEA中的其它操作:目錄樹,可以生成Maven中jar包的關(guān)聯(lián)圖。

目錄樹,可以生成Maven中jar包的關(guān)聯(lián)圖

8.可能遇到的問(wèn)題

1)用Maven3.6.2去建項(xiàng)目,所有的依賴無(wú)法導(dǎo)入,會(huì)報(bào)錯(cuò)Unable to import maven project:See logs for details,存在兼容性問(wèn)題。
解決方法:降級(jí)使用Maven3.6.1。
2)Tomcat閃退
3)IDEA中每次都要重復(fù)配置Maven
解決方法:在IDEA 中的全局默認(rèn)配置中去配置 Configure——>Settings

在IDEA 中的全局默認(rèn)配置中去配置

注意左上角為Default Settings,即為在全局配置中配置

4)Maven項(xiàng)目中的Tomcat無(wú)法配置
5)Maven默認(rèn)Web項(xiàng)目中的web.xml版本問(wèn)題

Maven默認(rèn)Web項(xiàng)目中默認(rèn)的web.xml版本過(guò)低

解決方法:參考使用Tomcat里ROOT中的,替換為webapp4.0版本。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
  version="4.0"
  metadata-complete="true">
</web-app>

6)Maven倉(cāng)庫(kù)的使用
倉(cāng)庫(kù)地址:http://mvnrepository.com/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Maven 多圖預(yù)警 Maven 項(xiàng)目架構(gòu)管理工具 用來(lái)方便導(dǎo)入jar包Maven的核心思想:約定大于配置 有約束...
    洛玖言閱讀 135評(píng)論 0 0
  • 本教程默認(rèn)已經(jīng)把jdk配置好,eclipse安裝好,接下來(lái)安裝配置maven。 首先下載maven:https:/...
    DaShanENG閱讀 1,162評(píng)論 0 1
  • 約定(慣例)優(yōu)先于配置 這個(gè)原則說(shuō)對(duì)于一些配置信息,maven會(huì)有給定的default默認(rèn)值,這樣,就不需要用戶去...
    普通一般社會(huì)人閱讀 304評(píng)論 0 2
  • 今天是劉小愛自學(xué)Java的第98天。 感謝你的觀看,謝謝你。 話不多說(shuō),開始今天的學(xué)習(xí): 經(jīng)過(guò)97天的學(xué)習(xí),對(duì)于J...
    劉小愛閱讀 463評(píng)論 0 3
  • 依賴管理,倉(cāng)庫(kù)及構(gòu)建生命周期 依賴配置 在之前的筆記中,我們?cè)敿?xì)的給出了依賴聲明的語(yǔ)法規(guī)則,其中,最重要的,就是依...
    普通一般社會(huì)人閱讀 444評(píng)論 0 0

友情鏈接更多精彩內(nèi)容