mvn 用法

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文件 
原文地址:https://www.cnblogs.com/lhj588/p/2651241.html