@xiaoxiaowang
2019-06-16T08:06:47.000000Z
字数 1765
阅读 714
Java Maven 笔记



范围类型有: 编译、测试、运行 三种classpath

(如第三方给的jar包,且仓库中心又没有,可以使用system范围,如)
<dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.0</version><scope>system</scope><systemPath>${project.basedir}/src/lib/jsoup-proxy.jar</systemPath></dependency>


两个依赖关系
A->B->C->X(1.0)
A->D->X(2.0)
两个依赖都间接来到X,
maven引用原则(依赖调解(Dependency Mediation))
A->B->Y(1,0)
A->C->Y(2,0)









正确的设置relativePath很重要

可继承的pom元素

依赖范围 import的用法

插件跟依赖一样可以使用*Management来管理





对于裁剪功能,需要用的时候可以查阅文档

跳过测试
mvn package -DskipsTests



注意:上述几种命令行动态指定测试类的方法都应该只是临时使用,如果长时间只运行项目的某几个测试,那么测试就会慢慢失去其本来的意义。

也可以使用excludes排除一些测试


版本号定义约定


${basedir} 标识项目根目录即包含pom.xml 文件的目录;${version}标识项目版本;
${project.artifactId} 对应了元素的值${project.build.sourceDirectory} 项目的主源码目录 默认src/main/java/${project.build.testSourceDirectory} 项目的测试源码目录,默认为src/test/java${project.outputDirectory} 项目主代码编译输出目录,默认为target/classes${project.testOutputDirectory}: 项目测试代码编译输出目录 ,默认为target/testclasses/${project.groupId}: 项目的groupId${project.artifactId} 项目的artifactId${project.version} 项目的version 与${version}等价${project.build.finalName} 项目打包输出文件的名称,默认为${project.artifactId}-${project.version}可以通过<properties><xxx>val</xxx></properties>



dependency:list 或 dependency:tree 来查看依赖关系mvn clean install 在执行真正的项目构建之前清理项目是一个很好的实践