2016-08-11 6 views
1

設定で定義されている各環境の定義済みフォルダ構造のリソースを作成してバンドルする独自のmaven-environment-pluginを作成しています。プラグインは、フォルダ構造とリソースをzipファイルに出力し、それをターゲットフォルダに配置します。ターゲットフォルダからzipファイル(自作のMavenプラグインで作成)をローカルリポジトリに作成する方法は?

質問

  • がどのように私はmaven-assembly-pluginのように私のプラグインの仕事はので、私の出力は、私は「MVNをインストール」を使用する場合にも、私のローカルリポジトリで終わるフォルダをターゲットにすることができますか?
  • これに印を付ける必要はありますか?それはmaven-assembly-pluginが使用されるときに自動的にそれをします。
  • maven-assembly-pluginどうすればこのことを確認できますか?

私はプラグインの開発にmojoを使用しています。

<plugin> 
    <groupId>dk.kmd.devops.maven.plugin</groupId> 
    <artifactId>envconfiguration-maven-plugin</artifactId> 
    <version>1.0.3</version> 
    <configuration> 
     <environments> 
      <environment>${env.local}</environment> 
      <environment>${env.dev}</environment> 
      <environment>${env.t1}</environment> 
      <environment>${env.t2}</environment> 
      <environment>${env.p0}</environment> 
     </environments> 
     <sourceConfigDir>${basedir}/src/main/config</sourceConfigDir> 
     <zipEnvironments>true</zipEnvironments> 
    </configuration> 
    <executions> 
     <execution> 
      <phase>generate-resources</phase> 
      <goals> 
       <goal>generateEnv</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

答えて

1

あなたはその公式成果物の一部としてビルドに(つまりこの場合は、正しい用語です)新しいアーティファクト(生成されたzipファイル)を添付する必要があります。

これはbuild-helper-maven-pluginattach-artifact目標は何をするか、基本的である:

は、追加のアーティファクトをインストールして展開されるように取り付けます。 its official examplesから

、添付の目標:

は通常antrun:run後に実行、またはインストールおよび展開のためのプロジェクトに添付するファイルを作成し、別のプラグイン、。

この場合の別のプラグインは、開発したプラグインにすることができます。

  • 設定し、このプラグインあなたが自動的に生成されたファイル
を添付する機能をプラグインに追加し、さらに pom.xml構成として、生成されたアーティファクトを添付、または
  • する:したがって、あなたの場合には2つのソリューションがあります

    2番目のケースは、MavenProjectHelperとそのattachArtifactメソッドを使用して、Maven APIでカバーすることができます。、インポートすることができ、あなたのモジョで

    は経由要素として次のとおりです。

    /** 
    * Maven ProjectHelper 
    */ 
    @Component 
    private MavenProjectHelper projectHelper; 
    

    次に、上記の方法を使用します。あなたはおそらく既にそれを提供する必要Mavenの依存関係を持っている必要があり

    projectHelper.attachArtifact(project, "zip", outputFile); 
    

    を、しかし、その場合に備えてthis one

    注意してください成果物はclassifierを介して追加の成果物としてビルドにアタッチされます。つまり、既定の成果物名の接尾辞がデフォルトの成果物と区別され、ビルドの出力として一意になります。


    実際の例を参照するとして、さらに、あなたの(最後の)質問に答えるGitHubのmaven-pluginsリポジトリにthisクエリを確認し、attachArtifact文字列をチェックするには、それはMavenのプラグインの数で使用される表示されます、その中で、例えばAbstractAssemblyMojoクラスのhereなどのmaven-assembly-pluginがあります。

  • +1

    素晴らしい! Thx a lot :)私は間違いなく2番目のケースに行く予定です。私のプラグインを他のプラグインから独立させたい。戻ります – Elias

    関連する問題