1.Maven查看当前生效配置、pom、环境变量等命令(mvn help用法)
- 检查当前Maven环境启用的文件
mvn help:effective-settings - 查看当前项目的pom配置,包括所有依赖
mvn help:effective-pom - 查看当前处于激活状态的profile
mvn help:active-profiles - 指定使用某个配置文件执行Maven命令
mvn -s
mvn -s ~/.m2/settings_local.xml clean deploy - 检查环境
查看当前项目的所有mvn配置
mvn -X
6.打印所有可用的环境变量和Java系统属性
mvn help:system
2.maven-metadata.xml文件的作用
总结:解决相同版本号,修改时间不同,如何获取最新内容。
过程:maven在build后从maven服务器Downloading 最新的maven-metadata.xml这个文件可以看作版本信息,作为一个版本比对,和本地仓库(.m2/repository)中jar包文件夹下的maven-metadata-local.xml(本地jar包maven-metadata.xml的副本)做比较,看lastUpdated时间戳值,哪个值更大,就以哪个文件为准。这里需要注意的是,若是maven-metadata-local.xml文件的值大,这时候就中止下载了,直接使用本地的jar包,所以你得自己准备好自己想用的jar包。
更新策略:
找到本地的maven配置文件settings.xml,打开后找到下面:
<repository>
<id>snapshots</id>
<name>Snapshots</name>
<url>url</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
找到xml中的updatePolicy标签,改为never即可。
<repository>
<id>snapshots</id>
<name>Snapshots</name>
<url>url</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
</snapshots>
</repository>
改完后再去build就不会去download maven-metadata.xml文件了,根据自己需求改。
这个属性为更新策略,aways:每次,never:从不,daily:每日。
公司配置
<metadata modelVersion="1.1.0">
<groupId>com.github.wxiaoqi</groupId>
<artifactId>ace-auth-client</artifactId>
<version>1.0-SNAPSHOT</version>
<versioning>
<snapshot>
<timestamp>20210318.141355</timestamp>
<buildNumber>5</buildNumber>
</snapshot>
<lastUpdated>20210318141355</lastUpdated>
<snapshotVersions>
<snapshotVersion>
<extension>jar</extension>
<value>1.0-20210318.141355-5</value>
<updated>20210318141355</updated>
</snapshotVersion>
<snapshotVersion>
<extension>pom</extension>
<value>1.0-20210318.141355-5</value>
<updated>20210318141355</updated>
</snapshotVersion>
<snapshotVersion>
<classifier>sources</classifier>
<extension>jar</extension>
<value>1.0-20210318.141355-5</value>
<updated>20210318141355</updated>
</snapshotVersion>
</snapshotVersions>
</versioning>
</metadata>
3.Maven pom文件中dependency scope用法
在Maven中依赖的域有: compile、provided、runtime、system、test、import。
依赖范围(Scope) | 编译classpath | 测试classpath | 运行时classpath | 传递性 | 说明 |
---|---|---|---|---|---|
compile | Y | Y | Y | Y | spring-core |
test | - | Y | - | - | junit |
provided | Y | Y | - | - | servlet-api |
runtime | - | Y | Y | Y | jdbc驱动 |
system | Y | Y | - | Y | 本地jar包 |
compile(默认)
当依赖的scope为compile的时候,那么当前这个依赖的包,会在编译的时候被加入进来,并且在打包(mvn package)的时候也会被加入进来。
编译范围有效,在编译与打包时都会加入进去。
provided
当依赖的scope为provided的时候,在编译和测试的时候有效,在执行(mvn package)进行打包时不会加入。比如, 我们开发一个web应用,在编译时我们需要依赖servlet-api.jar,但是在运行时我们不需要该 jar包,因为这个jar 包已由web服务器提供,如果在打包时又被加入进去,那么就可能产生冲突。此时我们就可以使用 provided 进行范围修饰。
system
与provided相同,不过被依赖项不会从maven仓库获取,而是从本地文件系统拿,需要配合systemPath属性使用。比如:
<dependency>
<groupId>org.open</groupId>
<artifactId