Java maven是否总是在上传所有工件后部署maven-metadata.xml文件
maven部署工件的顺序是什么?据我所见,我可以说它上传了所有工件,最后更新了maven-medata.xml文件Java maven是否总是在上传所有工件后部署maven-metadata.xml文件,java,maven,maven-metadata,Java,Maven,Maven Metadata,maven部署工件的顺序是什么?据我所见,我可以说它上传了所有工件,最后更新了maven-medata.xml文件 现在可以保证在上传其他工件之后,maven总是最后上传这2个文件吗?maven总是按照相同的顺序部署工件文件。它通常看起来像这样: [INFO] --- maven-deploy-plugin:2.7:deploy (default-deploy) @ hello-world --- Downloading: http://localhost:48080/storages/st
现在可以保证在上传其他工件之后,maven总是最后上传这2个文件吗?maven总是按照相同的顺序部署工件文件。它通常看起来像这样:
[INFO] --- maven-deploy-plugin:2.7:deploy (default-deploy) @ hello-world ---
Downloading: http://localhost:48080/storages/storage0/snapshots/org/foo/examples/hello-world/1.0-SNAPSHOT/maven-metadata.xml
Uploading: http://localhost:48080/storages/storage0/snapshots/org/foo/examples/hello-world/1.0-SNAPSHOT/hello-world-1.0-20160430.031713-1.jar
Uploaded: http://localhost:48080/storages/storage0/snapshots/org/foo/examples/hello-world/1.0-SNAPSHOT/hello-world-1.0-20160430.031713-1.jar (3 KB at 11.5 KB/sec)
Uploading: http://localhost:48080/storages/storage0/snapshots/org/foo/examples/hello-world/1.0-SNAPSHOT/hello-world-1.0-20160430.031713-1.pom
Uploaded: http://localhost:48080/storages/storage0/snapshots/org/foo/examples/hello-world/1.0-SNAPSHOT/hello-world-1.0-20160430.031713-1.pom (2 KB at 41.6 KB/sec)
Downloading: http://localhost:48080/storages/storage0/snapshots/org/foo/examples/hello-world/maven-metadata.xml
Uploading: http://localhost:48080/storages/storage0/snapshots/org/foo/examples/hello-world/1.0-SNAPSHOT/maven-metadata.xml
Uploaded: http://localhost:48080/storages/storage0/snapshots/org/foo/examples/hello-world/1.0-SNAPSHOT/maven-metadata.xml (798 B at 21.1 KB/sec)
Uploading: http://localhost:48080/storages/storage0/snapshots/org/foo/examples/hello-world/maven-metadata.xml
Uploaded: http://localhost:48080/storages/storage0/snapshots/org/foo/examples/hello-world/maven-metadata.xml (312 B at 8.7 KB/sec)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
如您所见,它所做的第一件事是尝试在工件级别解析maven metadata.xml
文件,以确定此工件是否有其他版本,以及是生成全新的maven metadata.xml
文件,还是更新现有文件(如果有),使用它正在部署的新版本。始终会在部署的最后生成或更新maven metadata.xml
文件
有三个级别可以定位maven metadata.xml
文件:
- 工件级别:这在
/groupId
级别(例如,如果您的artifactId
是groupId
并且您的org.foo.examples
是artifactId
,那么路径将是hello world
)。这用于管理基本版本或发布版本org/foo/examples/hello world/maven metadata.xml
- 版本级别:这在
/groupId
/artifactId
级别,(例如,如果您的Version
是groupId
,您的org.foo.examples
是artifactId
,版本是hello world
,路径将是1.0-SNAPSHOT
)。这用于管理时间戳快照org/foo/examples/hello world/1.0-SNAPSHOT/maven metadata.xml
- 插件组级别:这是插件的
级别,用于管理同一插件组下的不同插件groupId
关于Maven元数据如何工作的非常详细的解释,请看我把它们放在一起。注意到了与您提到的相同的事情。但我也注意到了一件奇怪的事情。当部署源代码和java文档以及jar时,会多次更新。对于pom.xml和jar.xml,会更新一次,然后在源jar被上传之后更新一次但是包级别/工件级别的maven-metadata.xml只在jar pom和版本级别的maven-metadata.xml更新后更新一次。在这种情况下,版本级别的maven-metadata.xml在packagelevel maven-metadata.xml更新后再更新两次。您的想法是生成几个子工件,如
javadocs
,源代码等,这些都将添加到maven metadata.xml
文件中。maven metadata.xml
文件还包括pom
的GAV(groupId
,artifactId
,version
)协调信息,因为这也被视为一个子工件。因此,对于任何生成jar
(且没有其他子工件)的项目,您的maven metadata.xml
文件还将包含pom.xml
的详细信息。当然,如果您使用maven部署插件
(这是默认行为)。我同意。我唯一关心的是包/工件级别的maven-metata.xml不是我在上面的评论中建议的最后一个总是要更新的文件。你同意吗?尝试部署一个工件并粘贴整个输出。我总是按照相同的顺序。只是好奇。想知道maven如何处理存储库中相同包版本的并发更新和2个开发人员一样,尝试同时在存储库中推送相同版本的包。这里没有事务。