0

マルチモジュールの Maven プロジェクトがあり、Web プロジェクトの pom.xml ファイルは次のようになります。

<parent>
    <artifactId>myapp</artifactId>
    <groupId>com.myapp</groupId>
    <version>1.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>myapp-web</artifactId>
<packaging>war</packaging>
<name>myapp-web Maven Webapp</name>
<url>http://maven.apache.org</url>

これはSpring MVCアプリケーションで、jettyインスタンスも埋め込まれています:

    Server server = new Server(8080);

    WebAppContext webAppContext = new WebAppContext();
    webAppContext.setContextPath("/");
    webAppContext.setWar("file:/path/to/war/myapp-web.war"); 
    webAppContext.setParentLoaderPriority(true);
    server.setHandler(webAppContext);

    server.start();
    server.join();

Maven を使用して Web プロジェクトをビルドします。

mvn clean package

私を混乱させているのは、ビルド中に maven が生成した myapp.war ファイルを解凍したときに、lib フォルダーを調べたところ、Web プロジェクトの .jar ファイルが表示されないことです。

また、.war ファイルを使用して組み込みの jetty を実行するにはどうすればよいですか?

4

1 に答える 1

0

戦争を引き起こすことになったWebプロジェクトのコンテンツは、jarファイルではなく、戦争中のWEB-INF/クラスに直接入る必要があります。

埋め込まれた桟橋を正しく設定している限り、次を使用して戦争を実行できるはずです。

java -jar myapp-web.war

構成には、メインメソッドの作成、適切な突堤の依存関係の追加、およびマニフェストの生成時にメインクラスの指定が含まれます。

jetty-console-maven-pluginは、これらすべてを設定するためのより簡単な代替手段かもしれません。このガイドをご覧ください:http ://www.dzone.com/links/r/make_your_war_file_executable_with_the_jetty_cons.html

于 2013-02-25T04:41:58.253 に答える