一、介紹下載
Maven項目對象模型(POM),可以通過一小段描述信息來管理項目的構建,報告和文
檔的軟件項目管理工具。
在項目開發中Maven可以對jar包和對工程之間的依賴關係進行管理,集成tomcat插
件,maven項目可以自動發佈到tomcat下。
maven倉庫中存儲jar包,可以一次下載,所有項目通用。
Maven下載:
下載地址:https://maven.apache.org/download.cgi
下載後只需解壓,無需安裝
注意:需要解壓到不帶中文的文件夾路徑下
配置本機環境變量
新建環境變量名:JAVA_HOME
將解壓文件路徑添加進去:如:D:\java\jdk1.8.0_231\
將環境變量添加進path
環境變量中:%MAVEN_HOME%\bin;
測試環境變量
cdm
運行mvn –version
命令
能看到相關版本信息表示添加成功。
Maven兩個主要配置文件:
settings.xml
是maven的全局配置文件。
pom.xml
文件是所在項目的局部配置
二、修改配置文件
編輯配置文件:conf文件夾裏的settings.xml
1、指定本地倉庫的路徑
指定本地倉庫的路徑,即下載的jar包存放位置
<localRepository>D:\java\repository</localRepository>
2、配置JDK版本
使用Maven創建的java項目,需要可以在配置文件中設置默認使用的jdk版本。
找到配置jdk的節點<profiles>
裏配置。
注意不同版本的maven中配置不同,找到原來的節點,在原來的基礎上修改。
配置代碼:
<profile>
<id>jdk18</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
3、配置鏡像
Maven的中央倉庫是在國外的,如果網絡有限制,會導致jar包下載的很慢或者無法下載。
找到配置節點<mirrors>
裏配置
阿里雲鏡像
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<!--用來表示該mirror是關聯的哪一個倉庫,其值爲其關聯倉庫的id-->
<mirrorOf>central</mirrorOf>
</mirror>
華爲雲鏡像
<mirror>
<id>huaweicloud</id>
<mirrorOf>*</mirrorOf>
<url>https://mirrors.huaweicloud.com/repository/maven/</url>
</mirror>
網易鏡像
<mirror>
<id>nexus-163</id>
<mirrorOf>*</mirrorOf>
<name>Nexus 163</name>
<url>http://mirrors.163.com/maven/repository/maven-public/</url>
</mirror>
騰訊鏡像
<mirror>
<id>nexus-tencentyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus tencentyun</name>
<url>http://mirrors.cloud.tencent.com/nexus/repository/maven-public/</url>
</mirror>
三、IDEA配置
1、idea中配置好文件路徑
2、創建maven項目
如果創建成功,會在IntelliJ中看到完整的目錄結構。
如果創建失敗,可以在控制檯中查看EventLog
有些資源Maven需要聯網下載,如果download失敗,項目可能創建失敗。
如果創建同名的工程也會報錯,此時需要刪除工程目錄下對應的文件夾,並刪除回收站中對應的文件。
3、創建目錄
右鍵單擊main->New->Directory
右鍵java文件夾->Mark Directory As ->Sources Root將文件夾更改成源碼文件
右鍵resources->Mark Directory As –>Resources Root
java文件夾下用於存放package,相當於eclipse普通工程中的src目錄。
resources中用於存放配置文件和屬性文件。
還可以在src下創建test文件夾,用於junit測試。test下同樣創建java和resources
也可以右鍵項目-選擇Open Module Settings打開項目配置頁面更改
4、maven配置文件
pom.xml是maven的核心配置文件,在pom.xml中可以定義工程的依賴關係,和引用jar包的信息。
示例:引用了junit的jar包,版本是4.12
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<!--限制Dependency的作用範圍-->
<scope>test</scope>
</dependency>
5、maven配置插件
<build>
<finalName>test001</finalName>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<path>/</path>
<port>8080</port>
</configuration>
</plugin>
</plugins>
</build>
pligins用於定義插件,此處引用了tomcat的插件。path是訪問路徑,如果我們同時運
行多個項目,訪問路徑都是根路徑,可以通過修改port端口號來訪問項目。
6、測試tomcat
命令clean tomcat7:run
配置成功後可以在工具欄裏看到剛纔配置的命令,點擊綠色的三角
在瀏覽器中看到信息表示tomcat配置成功
7、查看jar包
通常,在pom.xml中加入後maven會自動下載jar包
在項目的External Libraries中可以看到maven下載的jar:
如果在pom.xml中加入後,在左側看不到jar包,可以右鍵點擊pom.xml,選擇Maven->Reimport
或者在IDEA右側點擊Maven Project:
jar包沒有正確引入的時候,pom.xml中會出現錯誤提示:
未正確引用的依賴,顏色是不一樣的。具體提示的顏色與IntelliJ的主題有關。
8、排除jar衝突
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<!-- 排除衝突jar包 -->
<exclusions>
<exclusion>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
</exclusion>
</exclusions>
</dependency>
Maven繼承
1、pom工程
pom工程中只有一個pom.xml文件,不包含java和resource目錄,它只用來保存一些依賴信息。
在pom.xml中添加依賴信息信息,如junit、mysql等,也可以定義插件信息:
<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>
<groupId>com.maven.test</groupId>
<artifactId>test-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<!-- 自定義屬性 -->
<properties>
<junit.version>4.12</junit.version>
<mysql.version>5.1.32</mysql.version>
</properties>
<!--繼承自該項目的所有子項目的默認依賴信息。這部分的依賴信息不會被立即解析,
而是當子項目聲明一個依賴(必須描述group ID和artifact ID信息),如果group ID和
artifact ID以外的一些信息沒有描述,則通過group ID和artifact ID匹配到這裏的依
賴,並使用這裏的依賴信息。-->
<dependencyManagement>
<dependencies>
<!--用於junit測試 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency>
<!-- mysql驅動包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<!--產生的構件的文件名,默認值是${artifactId}-${version}。-->
<finalName>${project.artifactId}</finalName>
<!--使用的插件列表 。-->
<plugins>
<!-- 資源文件拷貝插件 -->
<plugin> <!--plugin元素包含描述插件所需要的信息。-->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<!--作爲DOM對象的配置-->
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- java編譯插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
<!--子項目可以引用的默認插件信息。該插件配置項直到被引用時纔會被解析或
綁定到生命週期。給定插件的任何本地配置都會覆蓋這裏的配置-->
<pluginManagement>
<plugins>
<!-- 配置Tomcat插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
2、創建子工程
在子工程中添加父工程裏定義過的依賴:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
可以不用寫版本號了,它會自動繼承父工程裏定義的版本。
打包
clean
清除編譯結果
package
打包
install
安裝到本地倉庫
Maven常用setting標籤含義:
setting頂級元素
localRepository
作用:表示構建系統本地倉庫的路徑。
其默認值:~/.m2/repository。
interactiveMode
作用:表示maven是否需要和用戶交互以獲得輸入。
如果maven需要和用戶交互以獲得輸入,則設置成true,反之則應爲false。默認爲true。
usePluginRegistry
作用:maven是否需要使用plugin-registry.xml文件來管理插件版本。
如果需要讓maven使用文件~/.m2/plugin-registry.xml來管理插件版本,則設爲true。默認爲false
offline
作用:表示maven是否需要在離線模式下運行。
如果構建系統需要在離線模式下運行,則爲true,默認爲false。
當由於網絡設置原因或者安全因素,構建服務器不能連接遠程倉庫的時候,該配置就十分有用。
pluginGroups
作用:當插件的組織id(groupId)沒有顯式提供時,供搜尋插件組織Id(groupId)的列表。
該元素包含一個pluginGroup元素列表,每個子元素包含了一個組織Id(groupId)。
當我們使用某個插件,並且沒有在命令行爲其提供組織Id(groupId)的時候,Maven就會使用該列表。默認情況下該列表包含了org.apache.maven.plugins和org.codehaus.mojo
servers
作用:一般,倉庫的下載和部署是在pom.xml文件中的repositories和distributionManagement元素中定義的。然而,一般類似用戶名、密碼(有些倉庫訪問是需要安全認證的)等信息不應該在pom.xml文件中配置,這些信息可以配置在settings.xml中。
mirrors
作用:爲倉庫列表配置的下載鏡像列表。
proxies
作用:用來配置不同的代理。
profiles
作用:根據環境參數來調整構建配置的列表。
settings.xml中的profile元素是pom.xml中profile元素的裁剪版本。
它包含了id、activation、repositories、pluginRepositories和 properties元素。這裏的profile元素只包含這五個子元素是因爲這裏只關心構建系統這個整體(這正是settings.xml文件的角色定位),而非單獨的項目對象模型設置。如果一個settings.xml中的profile被激活,它的值會覆蓋任何其它定義在pom.xml中帶有相同id的profile。
activeProfiles
作用:自動觸發profile的條件邏輯。
如pom.xml中的profile一樣,profile的作用在於它能夠在某些特定的環境中自動使用某些特定的值;這些環境通過activation元素指定。
activation元素並不是激活profile的唯一方式。settings.xml文件中的activeProfile元素可以包含profile的id。profile也可以通過在命令行,使用-P標記和逗號分隔的列表來顯式的激活(如,-P test)
Maven常用pom標籤含義: