まとめ
Eclipseで、「Maven-> Update Project Configuration」を実行すると、プロジェクトの「Deployment Assembly」から「Maven Dependencies」が削除されます。
詳細
私は事前構成されたEclipseプロジェクト(ファイル->新規->動的Webプロジェクト-> JavaServer Face v2.0プロジェクト)から始めました。 「マジック」を削除するために、それをMavenプロジェクトに変換しました:Configure-> Convert to Mavenプロジェクト。
pom.xmlには以下が含まれます。
<build>
<finalName>jsf-facelets-tutorial</finalName>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webXml>WebContent/WEB-INF/web.xml</webXml>
</configuration>
</plugin>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>javax.el</groupId>
<artifactId>el-api</artifactId>
<version>1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.Apache.myfaces.core</groupId>
<artifactId>myfaces-api</artifactId>
<version>2.0.5</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.Apache.myfaces.core</groupId>
<artifactId>myfaces-impl</artifactId>
<version>2.0.5</version>
<scope>runtime</scope>
</dependency>
</dependencies>
次に、展開する前にMavenの依存関係が「WEB-INF/lib /」にコピーされていることを確認するために、プロジェクトの「展開アセンブリ」に追加しました。プロジェクトのプロパティ->展開アセンブリ。詳細については、次の質問を参照してください: Eclipse + Maven + JavaServer Faces-> ClassNotFoundException:StartupServletContextListener 。
私は2つの関連する問題があることを知っています。
問題
(1)「Project-> Maven-> Update Project Configuration」を実行すると、「Maven Dependencies」が「Deployment Assembly」から削除されます。 Mavenプラグインを介して、これを防ぐ方法はありますか?
(2)Eclipse内から.warをビルドすると、すべて正常に動作し、Tomcatで.warが正常に実行されます。しかし、Mavenを使用してコマンドラインからビルドすると、mvn clean compile war:war
、「WebContent /」からの.htmlファイルは.warに追加されません。繰り返しますが、これを修正するにはどのMaven設定/プラグインが必要ですか?
ちなみに、これは非常に基本的なアプリケーションです...ログインページとウェルカムページだけです。
追加の詳細情報(web.xml、faces-config-xml、login.xhtml)が必要な場合は、お知らせください。追加します。
ありがとう
-EDIT-
Eclipseバージョン:3.6.2
Eclipse m2eバージョン:1.0.1
Apache Mavenバージョン:2.2.1
(1)ソリューション
Eclipseに更新Java EE 3.7.2(Indigo)。現在は m2e-wtp Maven Integration for Eclipse WTPプラグインも使用
(2)ソリューション
archetype から新しいMavenプロジェクトを作成し、次にEclipse-> Import-> Existing Maven Projectを作成しました。新しいEclipseバージョンとm2e-wtpでは、EclipseのJava EEパースペクティブは標準のMavenディレクトリ構造でうまく機能します
Pom.xmlも簡単になりました:
<build>
<finalName>jsf-facelets-tutorial</finalName>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>javax.el</groupId>
<artifactId>el-api</artifactId>
<version>1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.Apache.myfaces.core</groupId>
<artifactId>myfaces-api</artifactId>
<version>2.0.5</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.Apache.myfaces.core</groupId>
<artifactId>myfaces-impl</artifactId>
<version>2.0.5</version>
<scope>runtime</scope>
</dependency>
</dependencies>
m2eのサポートが向上し、Maven Integration for WTP(個別インストール)。これにより、物事が非常に簡単になります。 Indigoにアップデートすることで、ほとんどの問題を解決できると思います。
インストールリンク: http://marketplace.Eclipse.org/node/96737
こちらもご覧ください: Eclipse Indigo/3.7のMaven/Tomcatプロジェクト
EditWebリソースをWebContentに配置し、それをWARプラグインのディレクトリとして追加すると、解決策。きれいな方法は、それらをsrc/main/resources
またはsrc/main/webapp
そしてそれらはWARファイルに自動的に含まれるべきです。 WebContent
は、Mavenの標準ディレクトリの1つではありません。