mvn 用法
1、查看版本、打包
mvn -v
mvn clean
mvn package (直接打包)
mvn package -Dmaven.test.skip=true ( 跳過測試代碼的編譯)
2 設置代理
編輯settings.xml文件
<proxies>
<proxy>
<id>abc</id>
<active>true</active>
<protocol>http</protocol>
<host> </host>
<port></port>
<username>...</username>
<password>....</password>
<nonProxyHosts>.....</nonProxyHosts>
</proxy>
</proxies>
nonproxyhosts指定哪些主機名不使用代理
3 mvn clean install會把生成的jar打包到MAVEN的本地倉庫中
5 maven的編譯依賴范圍:
compile:默認使用該依賴,對編譯,測試,運行三種classpath 都有效
test: 只對測試時有效,如junit
provided:在運行時無效,對編譯和測試有效,如servlet-api
runtime:如JDBC,對測試和運行有效,在編譯時無效
6 歸類依賴
比如spring下的很多模塊,都是同一個項目的,版本都相同,則為了優化,可以這樣,
先定義一個<properties>項,即
<properties>
<abc>1.0</abc>
</properties>
然后其他的dependcy中,可以這樣
<version>${abc}</version>
7 mvn dependency:list
可以看到當前項目已解析的依賴
mvn dependency:tree 看到依賴樹
mvn dependency:analyse 查看依賴的工具
8 MVN的倉庫
MVN倉庫的路徑形式為groupId/artifactId/version/articatId-version.packagin
倉庫分為本地倉庫和遠程倉庫
本地倉庫的路徑修改,可以修改settings.xml
<settings>
<localRepository>d:\java\......</localRepository>
</settings>
9 MVN的生命周期:clean(清理項目),default是構建項目,site是建立項目站點
10 命令行與生命周期
mvn clean
mvn test
mvn clean install
mvn clean deploy site-depoly
MVN的插件和目標對應的關系 dependcy:analyze 冒號前面是插件前綴,冒號后面是
插件的目標
11 聚合
當想一次過構建多個模塊時,可以使用聚合,關系是包含和被包含的關系:
<modules>
<module>.. </module>
<module>.....</module>
</modules>
12 繼承
抽取一個parent.pom,比如:
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.juvenxu.mvnbook.account</groupId>
<artifactId>account-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Account Parent</name>
<properties>
<springframework.version>2.5.6</springframework.version>
<junit.version>4.7</junit.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-
plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-
plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
這里有定義了父的依賴和插件。而子的繼承則變為:
<parent>
<groupId>com.juvenxu.mvnbook.account</groupId>
<artifactId>account-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../account-parent/pom.xml</relativePath>
</parent>
。。。。這里定義具體的依賴,其依賴不需要版本號了,比如這樣:
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
</dependencies>
13 剪裁反應堆
比如多個模塊的話,有可能只是選取其中的某些部分:
比如mvn-aggragtor下有mvn-email,mvn-parent,mvn-persist,mvn-email依賴mvn-
parent,則
mvn clean install -pl account-email -am
-pl:構建指定的模塊,模塊間用逗號分割 -am:同時構健模塊的所依賴的模塊
14 默認情況下,maven-surefile-plugin的test目標會自動執行測試
src/test/java下的一組命名模式的測試類,該組模式為
**/Test*.java:
**/*Test.java:
**/*TestCase.java:
跳過測試:mvn package-DskipTests
跳過測試代碼的編譯: mvn package -Dmaven.test.skip=true
15 只運行指定的測試:
mvn test-Dtest=類名
匹配
mvn test-Dtest=Random*Test
在pom中,可以自動運行以Tests結尾的測試類
<plugin>
<configuration>
<includes>
<include>**/*Tests.java</include>
</includes>
同樣可以用<excludes><exclude>去排除運行測試的類
16 測試覆蓋率報告
mvn跟開源測試覆蓋率統計工具 合成,比如
mvn cobertura:cobertura
之后在target/site/cobertura下看到index.html文件