5

ApacheTomcatに埋め込まれたWARとしてパッケージ化されたアプリケーションを配布したいと思います。つまり、Tomcatをアプリケーションと一緒に配布したいのです。

この種の配布パッケージは、Mavenでどのように実行できますか?

Maven Cargo Pluginを見たことがありますが、アプリケーションをコンテナーにローカルにデプロイすることを目的としているようです。おそらく、Cargoプラグインに対する追加のステップが必要です。cargo:package興味深いように見えますが、ドキュメントが不足しています。

4

2 に答える 2

8

Tomaszのコメントを詳しく説明すると、これを実現するために次のことができます。

  1. tomcatをダウンロードしてローカルリポジトリにインストールします。

    mvn install:install-file -DgroupId = org.apache -DartifactId = tomcat -Dversion = 7.0.10 -Dpackaging = zip -Dfile = / path / to / file

  2. unpack目標を使用maven dependency pluginして、Tomcatを作業フォルダーに解凍します

  3. maven assembly pluginアプリケーションwarをwebappsフォルダーに配置し、zipを作成するために使用します

このpom.xmlとこのアセンブリ記述子を参照できます。

于 2011-04-06T04:14:24.120 に答える
4

より良い方法は、Herokuのドキュメントで指定されているものである可能性があります(ただし、Heroku以外のアプリでも機能するはずです)

要約すると(リンクが切れた場合に備えて)

Tomcat embedパッケージはTomcat、メインクラスの1つで参照できるAPIを提供できます。

<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-core</artifactId>
    <version>${tomcat.version}</version>
</dependency>

そして、あなたは次のようなメインクラスが必要になります、

package launch;

import java.io.File;
import org.apache.catalina.startup.Tomcat;

public class Main {

    public static void main(String[] args) throws Exception {

        String webappDirLocation = "src/main/webapp/";
        Tomcat tomcat = new Tomcat();
        tomcat.setPort(8080);

        tomcat.addWebapp("/", new File(webappDirLocation).getAbsolutePath());
        System.out.println("configuring app with basedir: " + 
            new File("./" + webappDirLocation).getAbsolutePath());

        tomcat.start();
        tomcat.getServer().await();
    }
}
于 2013-11-11T11:42:49.743 に答える