maven是怎么判断包在本地仓库和远程仓库哪个是新的

发布网友 发布时间:2022-04-23 17:08

我来回答

1个回答

热心网友 时间:2022-04-14 08:11

maven对构件的更新判断基本上是两种,一种是稳定版本,一种是maven特有的SNAPSHOT版本。

稳定版本很好判断,直接根据maven构件的坐标体系就能够获得。先从本地仓库中找,如果本地仓库没有,就从pom.xml和setting.xml配置的远程仓库来找。

SNAPSHOT版本的判断比较麻烦,基本步骤如下:

假设我在2014年08月22日09时40分52秒在我自己的电脑上使用 “mvn install” 构建了“com.mycompany.demo:test:1.0-SNAPSHOT”。

那么Maven会在本地仓库目录“~/.m2/com/mycompany/demo/test/1.0-SNAPSHOT/”下生成文件“maven-metadata-local.xml”,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<metadata modelVersion="1.1.0">
<groupId>com.mycompany.demo</groupId>
<artifactId>test</artifactId>
<version>1.0-SNAPSHOT</version>
<versioning>
<snapshot>
<localCopy>true</localCopy>
</snapshot>
<lastUpdated>20140822084052</lastUpdated>
<snapshotVersions>
<snapshotVersion>
<extension>jar</extension>
<value>1.0-SNAPSHOT</value>
<updated>20140822084052</updated>
</snapshotVersion>
<snapshotVersion>
<extension>pom</extension>
<value>1.0-SNAPSHOT</value>
<updated>20140822084052</updated>
</snapshotVersion>
</snapshotVersions>
</versioning>
</metadata>

十点钟的时候,其他同事更新了com.mycompany.demo:test:1.0-SNAPSHOT的内容,并通过 "mvn deploy" 发布到了公司的Maven服务器上。

公司Maven服务器上产生了文件:

test-1.0-20140822.100021-1.jar
test-1.0-20140822.100021-1.pom

并更新了maven-metadata.xml,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<metadata modelVersion="1.1.0">
<groupId>com.mycompany.demo</groupId>
<artifactId>test</artifactId>
<version>1.0-SNAPSHOT</version>
<versioning>
<snapshot>
<timestamp>20140822.100021</timestamp>
<buildNumber>34</buildNumber>
</snapshot>
<lastUpdated>20140822100021</lastUpdated>
<snapshotVersions>
<snapshotVersion>
<extension>jar</extension>
<value>1.0-20140822.100021-1</value>
<updated>20140822100021</updated>
</snapshotVersion>
<snapshotVersion>
<extension>pom</extension>
<value>1.0-20140822.100021-1</value>
<updated>20130407081828</updated>
</snapshotVersion>
</versioning>
</metadata>

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com