2016-05-06 13 views
0

実行可能なwarファイルの作成を簡略化するMavenプラグインを作成しました。この方法は、http://uguptablog.blogspot.co.uk/2012/09/embedded-jetty-executable-war-with.htmlに記載されている方法に似ています。私たちのカスタムmojoは、antrunプラグインとunpack-dependenciesの作業を行い、開発者が単純なWebアプリケーションを心配する必要がない、混乱と詳細を大幅に削減します。別のMavenプラグインからパッケージ化する際にMANIFEST.MFにエントリを追加する

プラグインが正常に動作している、そしてWebアプリケーションPOMは次のようになります。私たちが何をしたいのですがどのような

 <plugin> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.2</version> 
      <configuration> 
       <attachClasses>true</attachClasses> 
       <archive> 
        <manifest> 
         <mainClass>com.acme.Bootstrap</mainClass> 
        </manifest> 
       </archive> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>com.acme</groupId> 
      <artifactId>exec-war-plugin</artifactId> 
      <version>1.0-SNAPSHOT</version> 
     </plugin> 

は、唯一のメインを書き込むために必要だとして、Mavenの戦争 - プラグインの設定を削除で-Classプロパティをマニフェストに追加します。これを実現する方法を見るのに苦労していますが、私は、2つの可能なアプローチを見ることができます:

  • はどういうわけか、余分なマニフェストエントリが必要とされていることを私たちのモジョから定期的な戦争のプラグインに示します。これがリモートでも可能かどうかわかりません

  • デフォルトのwarプラグインを拡張しましたか?私は戦争のプラグインがパッケージング/ライフサイクルに縛られているのでこれが可能かどうかは分かりませんが、別のプラグインからこのプラグインに影響を与えることはできません。各プロジェクトはライフサイクルをカスタマイズする必要があります。ライフサイクルは、上記の設定よりもはるかに難しいオブジェクトです。

ご忠告いただきありがとうございます。

+0

プラグインでマニフェストファイルを自分で作成しないとどうなりますか? – khmarbaise

+0

標準のwarプラグインは、このケースではカスタムWARプラグインを上書きします。 – jugglingcats

答えて

0

最も簡単な解決策は次のようachive configuration of the Maven War Pluginを使用することです:

しかし、あなたのプラグインがあなたのプラグインがMavenの戦争 - プラグインの前に実行されることを確認するために、ライフサイクル・フェーズgenerate-resourcesにバインドする必要があり、与えられたPOM手段を起こしますあなたのプラグインは、Maven-War-Pluginの後に実行されます。

<project> 
    ... 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-war-plugin</artifactId> 
     ... 
     <configuration> 
      <archive> 
      <manifestFile>target/xyz/MANIFEST.MF</manifestFile> 
      </archive> 
     </configuration> 
     ... 
     </plugin> 
    </plugins> 
    </build> 
    ... 
</project> 

さらに、このような古代のバージョンではなくuptodate version of the pluginを使用することをお勧めします。

ところで、contributions to the maven-war-pluginは、このようなことをサポートするのはどうですか?

+0

こんにちは、本当にあなたの応答を感謝しますが、実際に問題を解決していません。私たちは、Maven-War-Plugin設定の必要性を完全に排除しようとしています。私の例でmainClassの代わりにmanifestFileを使用しても、その目標は達成されません。貢献についてのあなたの要点...それはそれになるかもしれません;-) – jugglingcats

+0

あなたのプラグインは適切なファイルと構造を作成しなければならず、あなた自身のライフサイクルと別のパッケージタイプを定義する必要があります。 -plugin .... – khmarbaise

+0

ありがとう、私はそのオプションを見ていきます。少なくとも私は今、もっと簡単な方法はないと知っています... – jugglingcats

関連する問題