如何根据Maven中的坐标检查工件源?

时间:2012-04-25 12:52:07

标签: maven maven-scm

我即将编写一个工具,我们的开发人员可以根据其maven坐标检查工件的来源。该工具应该能够为所有SNAPSHOT依赖项以递归方式检出源。

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

如果没有,我的家用酿造工具会做以下几行:

  1. 解析.m2 / settings.xml以确定使用哪个仓库下载人工制品的pom。
  2. 使用下载的pom中的scm-tag创建一个临时bootstrap-pom。
  3. 使用scm:bootstrap和bootstrap-pom结帐。
  4. [可选]搜索具有SNAPSHOT依赖关系的poms的来源并重复此过程。
  5. 我的第二个问题是:这听起来像是一个好方法吗?想到任何警告?

2 个答案:

答案 0 :(得分: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的目录中,执行bootstrap:

mvn -Pbootstrap-profile-id scm:bootstrap

将检查顶级项目。

我不知道你怎么做这个递归。您可以使用dependency:copy-dependencies请求传递依赖项并复制POM,然后在每个上运行引导过程。不确定这是怎么回事。

答案 1 :(得分: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