1

Mavenを使用してマルチモジュールWebアプリを構築しています。通常どおり戦争を構築し、開発者のマシンと tomcat を使用してローカルのテスト サーバーにデプロイして実行します。

次に、アプリケーションをクラウドにデプロイします。これを行うために、すべてのライブラリがプリロードされた特別なバージョンの tomcat と、コードのみを含む特別なバージョンの war を作成します。ここでのポイントは、Tomcat がクラウド サーバーにプリロードされており、war が変更されるたびにアップロードされることです。現在、構築された war から依存関係を手動で削除する必要があります。

Mavenがこれを行うための最良の方法は何ですか? カスタム パッケージ タイプをビルドするか、ポスト ビルド プラグインを実行してこれらの war を削除する必要がありますか? または、他の何か?このカスタム ビルドを有効にする最善の方法は、プロファイルを使用することだと思います。これらの依存関係を新しいプロファイルに設定して削除しようとしscope = providedましたが、推移的な依存関係は依然として戦争に巻き込まれました。

4

2 に答える 2

1

Mavenでプロファイルを使用して実現できます。あなたが言ったように、それは機能していません。何か間違った設定をしていると思います。次のようなものを試してください:

 <profiles>
    <profile>
      <id>dev</id>
      <activation>
        <!-- active by default, turn off when on prod -->
        <activeByDefault>true</activeByDefault>
      </activation>
      <dependencies>
        <!-- include this in dev, not in prod -->
        <dependency>
          <groupId>com.company</groupId>
          <artifactId>xyz</artifactId>
        </dependency>
      </dependencies>
    </profile>
  </profiles>

次に、コマンド ラインでプロファイルmvn package -P !devを非アクティブ化devして、jar が含まれないようにします。

com.company:xzyに含まれていないことを確認してください<project><dependencies></dependencies></project>

于 2012-05-31T07:26:43.003 に答える
1

すべての依存関係を除外したい場合は、war プラグインを使用してpackagingExcludesそうすることができます:

    <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.2</version>
        <configuration>
            <packagingExcludes>WEB-INF/lib/*.jar</packagingExcludes>
            ...
        </configuration>
    </plugin>

このプラグインをプロファイル内で指定して、本番環境でのみ実行します。

于 2012-05-31T10:39:40.973 に答える