web-dev-qa-db-ja.com

Eclipse + Maven +動的Webプロジェクト-> Mavenがデプロイメントアセンブリを上書きする

まとめ

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>
17
Alex Averbuch

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つではありません。

4
nwinkler