1

我正在寻找一个mvn基于(受支持的)命令,它将为我提供运行mvn package命令将产生的所有工件的所有 GroupID:ArtifactID:Version (GAV) 的列表。

对于没有父 pom 的单模块 Maven 项目,这是微不足道的:您可以查看 pom 内部。

对于具有父 pom 的单个模块 Maven 项目,您可以使用help:effective-pom它,它将显示一个带有<version>元素存在的 pom 文件。

对于一个多模块的Maven项目(reactor),其实你也可以这样做(没想到,刚试了一下就知道了)。这将允许为(多个)<project>元素解析文件。

还有什么要考虑的吗?

这样做的总体目标是能够为下游持续交付 ( http://go.cd/ ) 阶段/步骤/作业提供有关应该使用哪个版本的上游依赖项的信息。

4

1 回答 1

1

通常,您无法在构建运行之前生成列表...问题是基于 pom 模型并没有描述所有工件,因为某些插件可以产生补充工件(maven-assembly-plugin、maven-shade-插件,maven-jar-plugin 通过 test-jar 等)

您可以做的是在构建运行后获取生成的工件列表..(安装)。你的问题启发了我实现一个 EventSpy,它在构建结束时生成这样的列表......看起来像这样:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.423 s
[INFO] Finished at: 2016-05-08T13:22:10+02:00
[INFO] Final Memory: 24M/310M
[INFO] ------------------------------------------------------------------------
[INFO] --             Maven Artifact Collector Summary                       --
[INFO] ------------------------------------------------------------------------
[INFO] test.maven.plugin.profiler:parse-pom:0.1.0-SNAPSHOT:jar
[INFO] test.maven.plugin.profiler:parse-pom:0.1.0-SNAPSHOT:pom
[INFO] test.maven.plugin.profiler:parse-pom:0.1.0-SNAPSHOT:jar:jar-with-dependencies

我能做的是增强它并编写一个包含信息的文件(或多或少任何格式)......目前它只是一个 PoC......也许你可以提供更多信息或创建问题或 PR并请求可能需要的东西......也许这对其他人来说也很有趣......

此外,您的下游部分必须在可用的存储库缓存中具有这些工件(在文件系统上或通过存储库管理器或 docker 数据容器)...

于 2016-05-08T11:36:06.667 回答