3

(注: この質問は、元々 Google+ で Dan Allen が投稿したものです: https://plus.google.com/114112334290393746697/posts/G6BLNgjyqeQ )

「mvn install」を実行した場合、どのアーティファクトがインストールされますか? または、「mvn deploy」を実行した場合、どのアーティファクトがデプロイされますか?

これは、作成するのがかなり簡単なプラグインになる可能性がありますが、プログラムで既にどこかで利用できる場合は、これを再発明したくありません。これはどこかですぐに入手できるはずです。

4

1 に答える 1

4

Andrew Logvinovが既にコメントしたように、Maven プラグインは追加のアーティファクトを添付できます。したがって、実際にプロジェクトをビルドし、ライフサイクル フェーズにバインドされたすべてのプラグインを実行しなければ、これは可能ではないと思いますpackage

これを行う既存のプラグインについては知りません。おそらく、実際のデプロイを一時ディレクトリに実行してから、含まれているファイルを一覧表示することになるでしょう。installこれを行っている間にローカル リポジトリを変更しないようにするには、フェーズを回避する必要があります。フェーズはのverify直前installに発生し、展開モジョを明示的に呼び出すことができます。

deploy プラグインを使用すると、次のようにファイル 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 に答える