@xiaoxiaowang
2019-06-16T08:06:47.000000Z
字数 1765
阅读 650
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
在执行真正的项目构建之前清理项目是一个很好的实践