注:この質問の最初のバージョンでは何の回答も得られなかったので、より一般的なものに変更しました...
環境
私のプロジェクトは、いくつかの Maven モジュールといくつかの Web アプリケーションに分かれています。構造は次のとおりです。
my-project
+ pom.xml
+-- commons
+-- persistence
+-- ...
+-- web-app-1
+-- web-app-2
+-- ...
すべての Web アプリケーションは、JS、CSS、画像ファイルなどの共通のリソースを共有します。
これらのリソースを各 で複製する代わりに、WAR プロジェクトであるweb-app-X
という別のプロジェクトを作成することにしました。web-resources
その場合、構造は次のようになります。
my-project
+ pom.xml
+-- commons
+-- persistence
+-- ...
+-- web-app-1
+-- web-app-2
+-- ...
+-- web-resources
+-- pom.xml
+-- src/main/webapp
+-- web.xml (which is almost empty, just need to be present for Maven)
+-- web_resources
+-- css
+-- images
+-- javascript
メイヴン
Maven 2 (または、プロジェクトを maven 3.0.2 に移行したばかりの Maven 3) では、すべてが依存関係としてweb-app-X
宣言されているため、この構成は簡単に管理できます。web-resources
<groupId>foo.bar</groupId>
<artifactId>web-app-1</artifactId>
...
<dependencies>
<dependency>
<groupId>foo.bar</groupId>
<artifactId>web-resources</artifactId>
<version>${preclosing-version}</version>
<type>war</type>
</dependency>
...
したがって、WAR プロジェクトをビルドするときは、最初にweb-resources.war
(直前にビルドされた) を取得し、解凍して、その上にWeb アプリケーションをビルドします。web-app-X
このようにして、私の WAR ファイルにweb-resources/
は、共有リソースを含む と呼ばれるディレクトリも含まれます。
これがウォーオーバーレイの原則です。
したがって、Maven の観点からは、すべて問題ありません。
エクリプス
ここで、主な問題が発生します。適切な Eclipse 構成を使用することです。
質問: 現在の構成を使用して Eclipse で正しく管理するにはどうすればよいですか? 特に、web-app-X
Eclipseを使用してTomcatにデプロイすると...
この構成は何十人もの開発者が使用する必要があるため、より自動化可能な (?) 構成を取得し、手動の手順を避けたいことに注意してください...
私にとっては、リンクされたEclipseのリソースを使用するのが最善の解決策のようです。したがって、web-app-X
pom.xmlで次の構成を設定します。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<configuration>
<wtpversion>1.5</wtpversion>
<linkedResources>
<linkedResource>
<name>web_resources</name>
<type>2</type>
<location>${project.basedir}\..\web-resources\src\main\webapp\web_resources</location>
</linkedResource>
</linkedResources>
</configuration>
</plugin>
...
構成を実行すると、次の情報がファイルmvn eclipse:eclipse
に正常に追加されます。.project
<projectDescription>
...
<linkedResources>
<link>
<name>web_resources</name>
<type>2</type>
<location>C:\dev\project\web-resources\src\main\webapp\web_resources</location>
</link>
</linkedResources>
<projectDescription>
ここで、プロジェクトを Eclipse にインポートします。問題: にProject properties > Java Build Path > Source
、リンク ソースが表示されません。4 つの Maven デフォルト ディレクトリ ( src/main/java
、src/main/resources
、src/test/java
およびsrc/test/resources
) しか表示されません。奇妙なのは、リンクされたリソースを手動で追加しようとすると、拒否され、既に存在すると言うことです...
そのため、Eclipse で Tomcat に Web アプリケーションをデプロイすると、web_resources ディレクトリがデプロイされないため、CSS / JS / イメージがデプロイされません。
いくつかのテストの後、2 つの変更を行う必要があるようです。
<classpathentry kind="src" path="web_resources" output="src/main/webapp/web_resources"/>
ファイルに次の行を追加し.classpath
ます。- ファイル内の を削除し
<project>preclosing-web-resources</project>
ます.project
。
この構成を使用すると、Eclipse は web_resources プロジェクトの内容を my にコピー (および同期を維持) しますweb-app-X/src/main/webapp/web_resources
が、これは問題ではありません (このディレクトリは SCM によって無視されます)。
私が見つけた唯一の自動化された解決策は、前の 2 つの変更を行う単純な Maven プラグインを作成し、次のコマンドを実行する (または .bat ファイルを使用する) ことでした。
mvn eclipse:clean eclipse:eclipse myEclipsePlugin:eclipse
質問
- そのような構成を管理するためのより良い方法はありますか?
技術的な案内
Java 6、Maven 3.0.2、maven eclipse プラグイン 2.8、Eclipse 3.3.2 (ただし、新しいバージョンの Eclipse でテストできます)、m2eclipse プラグインなし。