Devops实现之maven详解(三)

本文详细介绍了Maven的配置命令、maven-metadata.xml的作用、dependency scope的用法、settings.xml配置解析以及如何将本地jar包发布到本地和远程仓库。通过mvn help命令查看生效配置,理解maven-metadata.xml在版本更新中的作用,学习如何在pom.xml中管理依赖范围,以及设置settings.xml以自定义Maven行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Maven查看当前生效配置、pom、环境变量等命令(mvn help用法)

  1. 检查当前Maven环境启用的文件
    mvn help:effective-settings
  2. 查看当前项目的pom配置,包括所有依赖
    mvn help:effective-pom
  3. 查看当前处于激活状态的profile
    mvn help:active-profiles
  4. 指定使用某个配置文件执行Maven命令
    mvn -s
    mvn -s ~/.m2/settings_local.xml clean deploy
  5. 检查环境

​ 查看当前项目的所有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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值