.war ファイルを生成する Maven プロジェクトがあります。
サーブレット コンテナー (jetty、tomcat など) と war アプリケーションを埋め込んだ実行可能 jar を生成するように maven を構成し、次のようなコマンドで Web アプリケーションを実行できる実行可能 jar を生成したいと考えています。
java -jar mywebapp.war
そのようなアーティファクトを取得する Maven プラグインはありますか?
現時点では、jetty-runnerを使用してアプリのテスト バージョンを実行しています。テストには非常に満足していますが、再配布には実行可能な戦争ほど便利ではありません (jenkins のように)。
アップデート
@ jesse-mcconnell: 結果を得るために、Web アプリケーション (pom.xml を除く) の 1 行も変更したくありません。私の戦争を別の方法でパッケージ化し、選択したアプリサーバーの下で展開できるようにし、さらに実行可能な戦争として実行できるようにするだけです。
完璧なソリューションは、実行可能な war 自体に含まれるすべての必要な構成ファイルを指定して、組み込むアプリケーションサーバーを選択する機能も提供する必要があります。
@khmarbaise:私はジェンキンスについて知っています、私はすでにコードをずっと前にチェックしました、それはwinstoneサーブレットコンテナを使用しています、そしてそれはhttpからアクセスできる戦争にMain.classを入れます(そして私はそれが間違っていると思います)
完璧な解決策は、次のようなものを含む戦争を生成する可能性があります:
├── META-INF
│ └── MANIFEST.MF (Main-Class: WEB-INF.container.classes.Main)
└── WEB-INF
├── web.xml
├── classes
├── lib
└── container
├── lib (jetty.jar/tomcat.jar/whatever.jar)
├── etc (configuration files for the container)
└── classes
└── Main.class
- Main.class は etc 構成をデフォルトとして使用する必要がありますが、コマンド ライン (ポート、コンテキストなど) で共通パラメーターをオーバーライドしたり、新しい構成を指定したりできます。
- Main.class は、コンテナー内からコンテナー jar と構成をロード (または tmp.dir に抽出) し、appserver を起動できる必要があります。
これが私がそれを作る方法です。
最後に、自己完結型の方法で実行する機能を備えた、任意のアプリケーションサーバーにデプロイできる通常の戦争があります。