4

「戦争」としてパッケージ化されたMaven Webプロジェクトがあります。パッケージは、war 形式に準拠した war ファイルを生成します。しかし、プロジェクトをデフォルトの「war」形式とともに「jar」としてパッケージ化するのが好きです。そのため、「maven jar」プラグインを使用してそれを実現しようとしています。次のjarプラグイン構成を使用しています。

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <executions>
                <execution>
                    <id>make-a-jar</id>
                    <phase>package</phase>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <classesDirectory>${project.build.outputDirectory}</classesDirectory>
                <includes>
                    <include>../../src/main/webapp/**</include>
                    <include>**/*</include>
                </includes>
            </configuration>
        </plugin>

「package」コマンドは、クラスと「resources」フォルダーの内容を含む jar ファイルを生成し、war ファイルは適切な「war」ファイルを生成します。

ただし、「src/main/webapp」の内容は jar ファイルに含まれていません。jar プラグインを使用して src/main/webapp の内容を jar に含める方法は?

4

2 に答える 2

2

Mavenでそれを行う唯一のクリーンな方法は、プロジェクトを2つのプロジェクトに分割することです。1つはjarを構築するためのもので、もう1つは戦争を構築するためのものです(特にMavenを使用する場合、より単純な標準プロジェクトの方が1つの大きな非標準プロジェクトよりも優れています)

ここで、src / main / webapp内のファイルも共有する場合は、warオーバーレイ(依存関係としてwar)を使用するか、springservletDispatcherとそのmvc:resourcesタグのようなものを使用できます。

于 2013-03-20T08:57:54.683 に答える
1

通常、Maven war:warは次の 2 つの重要なパラメーターを提供します。

1archiveClasses

Web アプリケーションのクラス用に JAR ファイルを作成するかどうか。このオプションの構成パラメーターを使用すると、コンパイルされたクラスが JAR ファイルにアーカイブされクラス ディレクトリが webapp から除外されます。 デフォルト値: false。 ユーザー プロパティは: archiveClasses です。

2attachClasses

クラス (WEB-INF/classes ディレクトリのコンテンツ) を追加のアーティファクトとしてプロジェクトに添付するかどうか。デフォルトでは、追加アーティファクトの分類子は「クラス」です。パラメータで変更でき<classesClassifier>someclassifier</classesClassifier>ます。

これはMaven War Pluginを提供する機能ですが、src/main/webapp作成された jar ファイルには含まれません。次に、Maven Assembly Pluginを検討してください。

Maven 用のアセンブリ プラグイン は、主に、ユーザーがプロジェクトの出力を、その依存関係、モジュール、サイト ドキュメント、およびその他のファイルと共に単一の配布可能なアーカイブに集約できるようにすることを目的としています。現在、次の形式でディストリビューションを作成できます。

  1. ジップ
  2. タール
  3. tar.gz
  4. tar.bz2
  5. dir
  6. 戦争
  7. および ArchiveManager が構成されているその他の形式

Assembly Descriptorsを使用すると、一部の配布ファイルをフィルタリングし たり、アーティファクトを含めたり除外したりすることができます。これは、必要なコンテンツ/リソースを含む独自のアーカイブを作成できることを意味します。

あなたが言及したようにMaven Jarプラグインを使用したい場合。また、以下も提供します。

  1. jar アーティファクトからコンテンツを含める/除外するには
  2. プロジェクトから追加の添付 jar アーティファクトを作成するには

使い方のページに詳しい情報が表示されます。

これが役立つことを願っています。

于 2013-03-20T00:46:58.160 に答える