Maven常用命令及常见知识在项目中的实际运用 - 不断更新中

项目中有用的Maven命令

 

一、maven是什么?

Maven这个词可以翻译为“知识的积累”,也可以翻译为“专 家”或“内行”。作为Apache组织中的一个颇为成功的开源项目,Maven主要服务于基于Java平 台的项目构建、依赖管理和项目信息管理。无论是小型的开源类库项目,还是大型的企业级应用;无论是传统的瀑布式开发,还是流行的敏捷模式,Maven都能大显身手。

 

1.  将没有在maven官方repository中的jar包加入到本地的maven repository中:

mvn install:install-file  -Dfile=path-to-your-artifact-jar -DgroupId=your.groupId -DartifactId=your-artifactId  -Dversion=your-version -Dpackaging=jar

 

2.  使Maven2在下载依赖包的同时下载其源代码包和文档的方法

   (Maven import the source code and documentation)

1). 使用maven命令:mvn dependency:sources 下载依赖包的源代码。

 

2). 使用参数 -DdownloadSources=true 下载源代码jar。 -DdownloadJavadocs=true 下载javadoc包。

      mvn eclipse:eclipse -Declipse.useProjectReferences=true -DdownloadSources=true -DdownloadJavadocs=true 

      mvn dependency:sources -DdownloadSources=true -DdownloadJavadocs=true

      mvn -DdownloadSources=true -DdownloadJavadocs=true -DoutputDirectory=target/eclipse-classes eclipse:eclipse

     mvn -DdownloadSources=true eclipse:eclipse

 

更为直观的理解:使用mvn eclise:clean eclipse:eclipse之前,eclipse中项目的布局是:


 在使用该命令之后,项目布局是:


 

3. 使用Maven命令执行java Class的main方法:

 

mvn exec:java -Dexec.mainClass="com.wsheng.test.RunSampleMainClass" -Dexec.classpathScope=test

 

4. 在控制台中执行Maven命令时,怎样用log记录查看所有的执行过程中的信息: 

1) 如查看maven在install时的具体执行信息:

       常规: mvn clean install -DskipTests

       查看详细信息: mvn clean install -DskipTests -X -e

2) 将Maven在install时执行的具体信息输出到C盘目录下的log.txt中

 a) 首先使用plugin enable dependency tree

.            <plugin>

              <groupId>org.apache.maven.plugins</groupId>

              <artifactId>maven-dependency-plugin</artifactId>

              <version>2.5.1</version>

              <executions>

                  <execution>

                     <id>build-classpath</id>

                     <phase>generate-sources</phase>

                     <goals>

                         <goal>build-classpath</goal>

                     </goals>

                     <configuration>

                         <!-- configure the plugin here -->

                     </configuration>

                  </execution>

              </executions>

           </plugin>

  b). mvn clean install -X > c:/log.txt

 

5. maven中多个命令可以合并使用:maven –U clean eclipse:clean eclipse:eclipse

mvn clean:  清除目标目录中的生成结果。

mvn eclipse:eclispse: 生成 Eclipse 项目文件及包引用定义,注意,需确保定义Classpath Variables: M2_REPO,指向本地maven类库目录。

 

6.mvn clean install site -DskipTests -Dmaven.test.skip

  • Clean Lifecycle 在进行真正的构建之前进行一些清理工作。
  • Default Lifecycle 构建的核心部分,编译(complile),测试(test),打包(package),安装(install), 部署(deploy)等等。mvn clean install会把生成的jar打包到MAVEN的本地仓库中
  • Site Lifecycle 生成项目报告,站点,发布站点。
  • -Dmaven.test.skip 在编译,打包,部署时忽略测试包中的Class和Resources.

如果想跳过测试阶段,可用:

mvn package -DskipTests

想临时性跳过测试代码的编译,可用:

mvn package -Dmaven.test.skip=true

maven.test.skip同时控制maven-compiler-plugin和maven-surefire-plugin两个插件的行为,既跳过编译,又跳过测试。

 7. mvn -v 查看所在机器上maven的安装版本 

 

 8.  设置maven中下载jar包的时候使用代理服务器下载,也可同时设置哪些主机不使用代理。

    编辑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指定哪些主机名不使用代理 

 

9.查看Maven中的依赖情况:

mvn dependency:list   可以看到当前项目已解析的依赖 
mvn dependency:tree  看到依赖树 
mvn dependency:analyse 查看依赖的工具 

 

10. 剪裁反应堆(执行模块)

有时多个模块的话,有可能只是选取其中的某些部分执行: 
 比如mvn-aggragtor下有mvn-email,mvn-parent,mvn-persist,mvn-email等模块依赖mvn- parent模块,则 
mvn clean install -pl account-email -am 
-pl:构建指定的模块,模块间用逗号分割 -am:同时构健模块的所依赖的模块 

 

11. Maven跳过测试和测试代码的编译:

跳过测试scope(test):mvn package-DskipTests 
跳过测试代码的编译:  mvn package-Dmaven.test.skip=true 

注: 默认情况下,maven-surefile-plugin的test目标会自动执行测试 

src/test/java下的一组命名模式的测试类,该组模式为 
   **/Test*.java: 
   **/*Test.java: 
   **/*TestCase.java:  12. Maven中执行指定的测试: mvn test-Dtest=类名  mvn test-Dtest=Random*Test  ( 匹配 ) 注: 在pom中,可以自动运行以Tests结尾的测试类 
       <plugin> 
   <configuration> 
     <includes> 
     <include>**/*Tests.java</include> 
    </includes> 
同样可以用<excludes><exclude>去排除运行测试的类  13. 测试覆盖率报告 
mvn跟开源测试覆盖率统计工具 合成,比如 
mvn cobertura:cobertura  之后在target/site/cobertura下看到index.html文件  14. 指定Maven只执行某个特定的类中的所有方法:如执行类TestCircle.
mvn -Dtest=TestCircle test
当然可以使用匹配模式来指定执行几个class
mvn -Dtest=TestCi*le test
更强的地方在于你可以混合使用多个名称和模式,用逗号隔开即可
mvn -Dtest=TestSquare,TestCi*le test
15.执行某个类中的几个方法或者某个方法 注意:1. 在2.7.3版本中,在一个Test Class中,你只可以执行多个方法。            2. 只支持Junit4.x和TestNG
mvn -Dtest=TestCircle#mytest test
当然,也可以使用模式
mvn -Dtest=TestCircle#test* test
在surefire 2.1,可以选择执行多个方法,这种方式只能用junit4.x
mvn -Dtest=TestCircle#testOne+testTwo test
 16. 如果希望某个Unit Test失败时不会影响其他Unit Test的执行,则使用      -Dmaven.test.failure.ignore=true 其它Maven有用的小知识: 1. maven的编译依赖范围: 
        compile:默认使用该依赖,对编译,测试,运行三种classpath 都有效 
        test: 只对测试时有效,如junit 
        provided:在运行时无效,对编译和测试有效,如servlet-api 
        runtime:如JDBC,对测试和运行有效,在编译时无效  2. 归类依赖 

猜你喜欢

转载自josh-persistence.iteye.com/blog/1874950