4

私はEclipseを使用して、「warパッケージング」を必要とするMavenでのアプリエンジンプロジェクトを開発しています(maven-gae-pluginアーキタイプを使用)。

サブプロジェクトの1つで変更が行われたときにすべてが更新されるように、他のプロジェクト(たとえば、一般的なライブラリプロジェクト)を含めるにはどうすればよいですか?

1つの解決策は「マルチモジュールプロジェクト」である可能性がありますが、Mavenが親プロジェクトをpomパッケージ化する必要がある理由がわかりません。また、pomパッケージに変更すると、appengineの互換性が損なわれる可能性があります(dev-serverの実行、Eclipseプラグインからのデプロイなど)。

4

2 に答える 2

4

マルチモジュールプロジェクトは、ライブラリ依存プロジェクトをパッケージ化する方法であるだけでなく、実際には戦争または耳です。プロパティ、プラグイン、動作を共有できます...

これは、最終的な構造に関係なく、それらをリンクする方法です。彼ら自身のライフサイクルは関連しています。

したがって、あなたが望むことを行うためのより良い方法は

/
|your-parent-project
+--pom.xml --> pom
|
+--/your-webapp-project
|  +--pom.xml --> war
|  
+--/your-service-project
|  +--pom.xml --> jar
|  
+--/your-dao-project
|  +--pom.xml --> jar
|  
+--/your-common-resources-project
|  +--pom.xml --> zip

引き続き war プロジェクトをデプロイしますが、親プロジェクトにはチーム、CI、依存関係管理に関する情報が含まれます。

親プロジェクトをリリースします (maven-release-plugin を使用すると、タグ付けとギルドが自動的に行われます)。これは、ライフサイクル全体とそれらすべての間の関係を保持するためです。

Reactor (maven 順序付けエンジン) は、ビルドの順序を依存関係に合わせて調整します。リソース、dao、サービス、webapp ...

Sonatype の本を読むべきです: http://www.sonatype.com/books/mvnref-book/ .

このちょっとした説明がお役に立てば幸いです。

于 2012-06-25T14:02:57.167 に答える
1

マルチモジュールプロジェクトは、これを行う方法です。戦争プロジェクトは子モジュールである必要があり、そのプロジェクトはgae-pluginを使用する必要があります。親プロジェクトは、共通ライブラリ、戦争、および含める可能性のある他のプロジェクト間の関係の単なる記述子です。私たちのアプリケーションには、2つの戦争プロジェクト(1つはウェブサイト用、1つは別のバージョンのアプリで実行される一部のmap-reduceのもの)、共通のコードベース(jarとしてパッケージ化)、およびappengine-remoteプロジェクトがあります。ユーティリティ関数。

親が単なる「pom」である理由は、実行可能なコードとしてどこにもデプロイされていないためです。

于 2012-06-25T13:54:44.983 に答える