如何确定从maven reactor计划构建的工件(即:包括子模块)?

时间:2012-05-04 18:24:21

标签: maven maven-plugin maven-3

(注意:此问题最初由Dan Allen在Google+上提出:https://plus.google.com/114112334290393746697/posts/G6BLNgjyqeQ

如果我运行'mvn install',它会安装什么工件?或者,如果我运行'mvn deploy',它会部署哪些工件?

这可能是一个相当简单的插件,但我不想重新发明它,如果它已经以编程方式在某处可用。看起来这应该可以随时随地使用。

1 个答案:

答案 0 :(得分:3)

正如Andrew Logvinov已经评论过,任何maven插件都可以附加 额外的文物。所以我认为没有实际可行的话 构建项目并执行绑定到生命周期阶段的所有插件,直到package

我不知道有任何预先存在的插件这样做,可能会关闭 将实际部署运行到临时目录,然后列出 包含文件。为避免在执行此操作时修改本地存储库,您 我想避免install阶段。 verify阶段直接发生 在install之前,可以显式调用部署mojo。

deploy plugin允许使用如下文件网址指定备用存储库:

mvn verify deploy:deploy -DaltDeploymentRepository=snapshots::default::file:///home/jh/Temp/repository

列出所有附加工件的maven插件的最简单实现可能如下所示:

/**
 * @goal list-artifacts
 * @phase verify
 */
public class ListArtifactsMojo extends AbstractMojo {

    /**
     * @parameter default-value="${project}"
     * @required
     * @readonly
     */
    MavenProject project;

    public void execute() throws MojoExecutionException, MojoFailureException {
        Collection<Artifact> artifacts = new ArrayList<Artifact>();
        artifacts.add(project.getArtifact());
        artifacts.addAll(project.getAttachedArtifacts());

        for (Artifact artifact : artifacts) {
            System.out.println("Artifact: " + artifact);
        }
    }
}