Java maven是否总是在上传所有工件后部署maven-metadata.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部署工件的顺序是什么?据我所见,我可以说它上传了所有工件,最后更新了maven-medata.xml文件


现在可以保证在上传其他工件之后,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个开发人员一样,尝试同时在存储库中推送相同版本的包。这里没有事务。