3

我即将编写一个工具,我们的开发人员可以使用该工具在给定 maven 坐标的情况下检查工件的来源。该工具还应该能够选择递归地检查所有 SNAPSHOT 依赖项的源。

我的第一个问题是:我需要编写这个工具吗?可以想象这不是一个非常独特的用户场景,但我还没有找到适合实现这一目标的东西。我查看了 scm:checkout 和 scm:bootstrap,两者都需要有关连接 url 的知识,因为我只有一个 artifactID。除了编写自定义工具之外,还有其他方法吗?

如果没有,我的家庭 brew 工具将执行以下操作:

  1. 解析 .m2/settings.xml 以确定要使用的存储库 下载工件的 pom。
  2. 使用下载的 pom 中的 scm-tag 创建一个临时 bootstrap-pom。
  3. 使用 scm:bootstrap 和 bootstrap-pom 来检查源。
  4. [可选] 搜索具有 SNAPSHOT 依赖项的 pom 源并重复该过程。

我的第二个问题是:这听起来对你来说是个好方法吗?有什么需要注意的地方吗?

4

2 回答 2

1

对于您想以这种方式签出的每个项目,您可以添加一个包含用于 scm 插件引导目标的插件配置的配置文件。插件配置将与 scm URL 在同一个 POM 中,以便处理 #2 和 3; 你不需要单独的 bootstrap-pom。

要获取初始 POM,您可以dependency:get从命令行使用:

mvn dependency:get -Dartifact=some.group:my.artifact:version:pom -Ddestination=someDirectory

在下载 POM 的目录中,执行引导程序:

mvn -Pbootstrap-profile-id scm:bootstrap

这将检查顶级项目。

我不知道你会如何使这个递归。您可能可以使用dependency:copy-dependencies请求传递依赖项和复制 POM,然后在其中的每一个上运行引导过程。不知道这将如何工作。

于 2012-04-25T16:30:08.913 回答
0

user944849 的解决方案对我不起作用,但这是一个有效的示例

mvn dependency:get -Dartifact=ar.com.hjg:pngj:2.1.0:pom  -Ddest=pom.xml
mvn scm:bootstrap -Dgoals=validate
mv target/checkout ~/projects/pngj
于 2014-05-28T06:50:07.720 回答