0

WTP 経由でリソースを Tomcat にデプロイする前にmaven-dependency-plugin、Eclipse に の使用を認識させて実行させるにはどうすればよいですか?

前の質問で、いくつかのアーティファクトをwarアプリケーションにコピーするように Maven を構成したので、それらを Web クライアントに提供できました。それらをコピーするアプローチはtarget/${project.artifactId}-${project.version}、Maven コマンドラインを介してパッケージ化するときに機能します。残念ながら、Eclipse の Tomcat 統合を使用する場合、そのような運はありません。

Maven プラグイン構成:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
    <execution>
        <id>copy</id>
        <phase>compile</phase>
        <goals>
            <goal>copy</goal>
        </goals>
        <configuration>
            <artifactItems>
                <artifactItem>
                    <groupId>junit</groupId>
                    <artifactId>junit</artifactId>
                    <version>3.8.1</version>
                    <type>jar</type>
                    <overWrite>false</overWrite>
                    <destFileName>optional-new-name.jar</destFileName>
                </artifactItem>
            </artifactItems>
            <outputDirectory>${project.build.directory}/${project.artifactId}-${project.version}/</outputDirectory>
            <overWriteReleases>false</overWriteReleases>
            <overWriteSnapshots>true</overWriteSnapshots>
        </configuration>
    </execution>
</executions>
4

1 に答える 1

1

この回答は、Maven 統合プラグイン (m2e および m2e-wtp) に付属する Eclipse Java EE Kepler SR1 (またはそれ以降) を使用していることを前提としています。

m2e-wtp、Maven Integration for WTP プラグインは maven CLI ビルドを無視し、既知の場所からリソースを公開するように WTP を構成します。

したがって、次の 2 つのことを行う必要があります。

  • 依存関係プラグインを構成して、Eclipse のビルド中に jar を既知の m2e-wtp の場所にコピーします。
  • プロジェクト構成の更新中に依存関係プラグインを実際に実行するように m2e に指示します。

まず、プロパティ セクションで新しい Maven プロパティを定義します。

<jars.directory>${project.build.directory}/${project.artifactId}-${project.version}/</jars.directory>

maven-dependency-plugin 構成で、次を使用します。

<outputDirectory>${jars.directory}</outputDirectory>

これで、Maven CLI と同じビルド結果が得られるはずです。次に、特定の m2e プロファイルを使用する必要があります。これは、Eclipse で実行すると自動的に有効になり、他のすべての状況では無視されます。

<profiles>
    <profile>
        <id>m2e</id>
        <!-- This profile is only activated when building in Eclipse with m2e -->
        <activation>
            <property>
                <name>m2e.version</name>
            </property>
        </activation>
        <properties>
            <jars.directory>${project.build.directory}/m2e-wtp/web-resources/</jars.directory>
        </properties>
    </profile>
</profiles>

最後に、プロジェクトの構成中に maven-dependency-plugin:copy を実行してもよいことを m2e に知らせる必要があります。次のスニペットを pluginManagement セクションに追加します。

<pluginManagement>
    <plugins>
        <!--This plugin's configuration is used to store Eclipse m2e settings 
            only. It has no influence on the Maven build itself. -->
        <plugin>
            <groupId>org.eclipse.m2e</groupId>
            <artifactId>lifecycle-mapping</artifactId>
            <version>1.0.0</version>
            <configuration>
                <lifecycleMappingMetadata>
                    <pluginExecutions>
                        <pluginExecution>
                            <pluginExecutionFilter>
                                <groupId>org.apache.maven.plugins</groupId>
                                <artifactId>maven-dependency-plugin</artifactId>
                                <versionRange>[2.8,)</versionRange>
                                <goals>
                                    <goal>copy</goal>
                                </goals>
                            </pluginExecutionFilter>
                            <action>
                                <execute>
                                    <runOnConfiguration>true</runOnConfiguration>
                                    <runOnIncremental>false</runOnIncremental>
                                </execute>
                            </action>
                        </pluginExecution>
                    </pluginExecutions>
                </lifecycleMappingMetadata>
            </configuration>
        </plugin>
    </plugins>
</pluginManagement>

ここで、m2e がこれらすべての構成変更を認識していることを確認します。Alt+F5 を押して [Maven 構成の更新] ダイアログを表示し、[OK] をクリックします。ビルドが完了すると、[Project Explorer] ビューの [Deployed Resources] > [web-resources] の下に jar が表示されます。

今後、Tomcat へのデプロイメントには、Web アプリケーションのルートに optional-new-name.jar が含まれている必要があります。

于 2014-01-15T09:54:47.200 に答える