3

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

如果我运行“mvn install”,它将安装哪些工件?或者,如果我运行“mvn deploy”,它将部署哪些工件?

这可能是一个相当简单的插件,但如果它已经以编程方式在某处可用,我不想重新发明它。似乎这应该在某处很容易获得。

4

1 回答 1

4

正如Andrew Logvinov已经评论的那样,任何 maven 插件都可以附加额外的工件。因此,如果不实际构建项目并执行绑定到生命周期阶段的所有插件,我认为这是不可能的package

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

部署插件允许使用这样的文件 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);
        }
    }
}
于 2012-05-07T08:24:32.300 回答