如何确定从一个Maven反应堆计划是建立什么样的文物(即:包括子模块)?(How to determ

2019-07-29 06:09发布

(注:这个问题最初是由丹·艾伦在Google+上这里提出: https://plus.google.com/114112334290393746697/posts/G6BLNgjyqeQ )

如果我跑了“MVN安装”,它会安装什么文物? 或者,如果我跑了“MVN部署”,将其部署是什么文物?

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

Answer 1:

正如安德鲁Logvinov已经评论,任何Maven插件可以附加额外的构件。 所以,我不认为这将有可能无需实际建设该项目,并执行绑定到生命周期阶段高达所有插件package

我不知道任何已经存在的插件这样做的,在关闭很可能是运行实际部署到一个临时目录,然后列出包含文件。 为了避免修改你的本地库,而这样做,你会希望避免install阶段。 在verify阶段的比赛前直接install ,部署的魔力就可以被显式调用。

在部署插件允许使用文件的URL像这样指定备用库:

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);
        }
    }
}


文章来源: How to determine what artifacts are built from a maven reactor plan (ie: including sub modules)?