Prev / Next / たまにっき。

依存ライブラリのコピー2

Category: [Maven2]
2006-03-10

作ってみた.

$ cat DependenciesCopyMojo.java
package jp.cafebabe.maven.plugins.dependencies;
/**
  @goal copy
  @requiresDependencyResolution runtime
 */
public class DependenciesCopyMojo extends AbstractDependenciesMojo{
    /**
      The maven project.

      @parameter expression="${project}"
      @required
      @readonly
     */
    private MavenProject project;
    /**
      The directory containing generated classes.

      @parameter expression="${project.build.directory}"
      @required
     */
    private File outputDirectory;

    public void execute() throws MojoExecutionException{
        if(!outputDirectory.exists()){
            outputDirectory.mkdirs();
        }

        List<Artifact> artifacts = project.getRuntimeArtifacts();

        getLog().info("copying dependencies...");

        try{
            for(Artifact artifact: artifacts){
                FileUtils.copyFileToDirectory(artifact.getFile(), outputDirectory);
            }
        } catch(IOException e){
            throw new MojoExecutionException("copy failed", e);
        }
    }
}


フィールドがどこで初期化されているのか全くわかりません.
ソースコード中に明示的に初期化していないのに,そして,private なのに,実行時にはなぜか初期化されています.

そして,

@requiresDependencyResolution runtime


の一行がなくて,2 時間ほど悩んでた.この一行がないと,runtime dependencies が取ってこれないみたいだ.

で,作り終わった後に,プロジェクトが依存する全てのjarを集めるには という記事見つける.orz

Category: [Maven2]