[关闭]
@zero1036 2018-08-28T02:04:05.000000Z 字数 4569 阅读 2183

Maven使用技巧汇总

工具


一、Setting.xml配置说明

Setting Content
localRepository 本地仓库路径,默认:${user.home}/.m2/repository

二、pom.xml配置说明

2.1、父项目与子项目的Version

子项目建议在<parent>中指定使用父项目版本号,参考如下例子

  1. <project>
  2. <groupId>tg.prj</groupId>
  3. <artifactId>code-web</artifactId>
  4. <version>1.0.0-SNAPSHOT</version>
  5. <modules>
  6. <module>code-contracts</module>
  7. <module>code-service</module>
  8. </modules>
  9. </project>
  1. <project>
  2. <parent>
  3. <artifactId>code-web</artifactId>
  4. <groupId>tg.prj</groupId>
  5. <!--指定父项目版本号-->
  6. <version>1.0.0-SNAPSHOT</version>
  7. </parent>
  8. <artifactId>code-contracts</artifactId>
  9. </project>

2.2、依赖机制

项目依赖示例:

  1. <dependencies>
  2. <dependency>
  3. <groupId>log4j</groupId>
  4. <artifactId>log4j</artifactId>
  5. <version>1.2.14</version>
  6. </dependency>
  7. </dependencies>
  1. version标签被忽略时,会自动升级最新版本;
  2. 父项目添加依赖时,所有子项目都会增加该依赖;反之,子项目添加依赖只会作用于该子项目中;
  3. Maven搜索依赖包顺序:本地仓库-->远程仓库

2.3、自定义属性<properties>

父项目中可以自定义<properties>,自身及其子项目均可以通过${xxx}调用,可以应用于多项目间同一依赖包的统一版本。例如:

  1. <!--父项目-->
  2. <project>
  3. <properties>
  4. <doll.version>1.1.7</doll.version>
  5. </properties>
  6. <project>
  7. <!--子项目-->
  8. <project>
  9. <dependencies>
  10. <dependency>
  11. <groupId>tg.prj</groupId>
  12. <artifactId>doll-core</artifactId>
  13. <version>${doll.version}</version>
  14. </dependency>
  15. </dependencies>
  16. <project>

2.4、dependencyManagement<dependencyManagement>

父Maven模块中通过dependencyManagement来指定子模块中的Maven依赖版本号。


三、Maven与classpath

Java源码文件资源在Maven工程的默认路径是:src/main/java,其他资源文件的默认路径是src/main/resources,Maven在打包时,会将src/main/resources目录的资源文件复制到class目录。


四、Maven命令

4.1 更新父子模块版本号

首先,需要有一个packaging类型为pom的pom.xml文件即我们的parent项目pom文件.在这个parent项目中配置好groupId,artifactId,version以及properties,prerequisites,dependencies.

还有一个重要的配置项是modules.加入了这个项目之后执行maven版本号更新时才会同时去更新子模块的版本号.

子模块改变的部分:

  1. <parent>
  2. <groupId>com.hlf</groupId>
  3. <artifactId>common-parent</artifactId>
  4. <version>0.0.1-SNAPSHOT</version>
  5. </parent>
  6. <groupId>com.hlf</groupId>
  7. <artifactId>projectA</artifactId>

发现没有,在这里只放了父模块的version没有放子模块的

>mvn versions:set -DnewVersion=0.0.2-SNAPSHOT

4.2 发布远程仓库

  1. mvn deploy:deploy-file -DgroupId=com.ppmoney.ppcode -DartifactId=ppcode-contracts -Dversion=1.0.2 -Dpackaging=jar -Dfile=D:\TGProject\ppcode-service\ppcode-contracts\target\ppcode-contracts-1.0.2.jar
  2. -Durl=http://maven.scm.ppmoney.com/content/repositories/PPMoneyRepos/ -DrepositoryId=PPMoneyRepos

http://www.cnblogs.com/zbw911/p/6439451.html

deploy 400解决办法:http://www.javatang.com/archives/2010/01/23/4518375.html

4.3 运行Java main

1、运行前先编译代码,exec:java不会自动编译代码,你需要手动执行mvn compile来完成编译。

mvn compile

2、编译完成后,执行exec运行main方法。
不需要传递参数:

mvn exec:java -Dexec.mainClass="com.vineetmanohar.module.Main"  

需要传递参数:

mvn exec:java -Dexec.mainClass="com.vineetmanohar.module.Main" -Dexec.args="arg0 arg1 arg2"  

指定对classpath的运行时依赖:

mvn exec:java -Dexec.mainClass="com.vineetmanohar.module.Main" -Dexec.classpathScope=runtime  

4.4 跳过单元测试

-Dmaven.test.skip=true

4.5 跳过生成javadoc

-Dmaven.javadoc.skip=true

4.6 查看maven依赖关系

mvn dependency:tree

–Dverbose:加上这个参数,可以将当前所有的依赖关系都展示出来,包括来自不同处的依赖项。
–Dincludes:可以进行参数过滤,如果需要查询spring相关的依赖,可以mvn dependency:tree -Dverbose -Dincludes=*spring*:*spring*。当然,可以将输出结果导入到文本中。只需要在命令后加入”>a.txt”即可。

mvn help:effective-pom:
上述命令可以将当前项目自己的POM已经从父类中继承的POM内容输出,可以输出到文本中。
mvn help:effective-pom>a.txt

4.7 排除依赖

dependency

在dependency中,可以通过exclusions标签进行依赖排除。
例如,排除spring

  1. <exclusions>
  2. <exclusion>
  3. <groupId>org.springframework</groupId>
  4. <artifactId>spring</artifactId>
  5. </exclusion>
  6. </exclusions>

排除所有

  1. <exclusions>
  2. <exclusion>
  3. <groupId>*</groupId>
  4. <artifactId>*</artifactId>
  5. </exclusion>
  6. </exclusions>

4.8 构建指定项目

命令: mvn -pl <arg module name>

-am --also-make: 同时构建所列模块的依赖模块;
-amd -also-make-dependents: 同时构建依赖于所列模块的模块;
-pl --projects <arg>: 构建制定的模块,模块间用逗号分隔;
-rf -resume-from <arg>: 从指定的模块恢复反应堆。

示例:

  1. [INFO] Scanning for projects...
  2. [INFO]
  3. [INFO] ------------------------------------------------------------------------
  4. [INFO] Building dubbo-demo-provider 2.5.4-SNAPSHOT
  5. [INFO] ------------------------------------------------------------------------
  6. [INFO]
  7. [INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ dubbo-demo-provider ---
  8. [INFO] com.alibaba:dubbo-demo-provider:jar:2.5.4-SNAPSHOT
  9. [INFO] +- com.alibaba:dubbo-demo-api:jar:2.5.4-SNAPSHOT:compile
  10. [INFO] +- com.alibaba:dubbo:jar:2.5.4-SNAPSHOT:compile
  11. [INFO] | \- commons-logging:commons-logging:jar:1.1.1:compile
  12. [INFO] +- org.springframework:spring:jar:2.5.6.SEC03:compile
  13. [INFO] +- org.javassist:javassist:jar:3.15.0-GA:compile
  14. [INFO] +- org.jboss.netty:netty:jar:3.2.5.Final:compile
  15. [INFO] +- org.apache.mina:mina-core:jar:1.1.7:compile
  16. [INFO] +- org.glassfish.grizzly:grizzly-core:jar:2.1.4:compile
  17. [INFO] | +- org.glassfish.grizzly:grizzly-framework:jar:2.1.4:compile
  18. [INFO] | | \- org.glassfish.gmbal:gmbal-api-only:jar:3.0.0-b023:compile
  19. [INFO] | | \- org.glassfish.external:management-api:jar:3.0.0-b012:compile
  20. [INFO] | +- org.glassfish.grizzly:grizzly-portunif:jar:2.1.4:compile
  21. [INFO] | \- org.glassfish.grizzly:grizzly-rcm:jar:2.1.4:compile
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注