web-dev-qa-db-ja.com

Eclipseでの保存時にMavenの「コンパイル」目標を開始するにはどうすればよいですか?

JavaScriptコードを含むMavenプロジェクトがあります。 pom.xmlのコンパイル目標に接続された特別なjavascriptコンパイラプラグインがあります。 「mvn compile」と入力すると、src/main/javascriptのJavaScriptソースがコンパイル(圧縮および難読化)され、target/classesディレクトリに保存されます。コマンドラインでは、これはうまく機能します。

しかし今、m2EclipseプラグインでEclipseを使用することで開発を簡単にしたいと思っています。 JavaScriptファイルを変更するたびに、Eclipseがコンパイル目標を呼び出すようにします。これどうやってするの? JavaScriptファイルを保存すると、mavenコンソールに「AUTO_BUILD」というログ行が表示されるだけです。

プロジェクトの設定で、ライフサイクルマッピングを設定できます。しかし、何らかの理由で、「クリーン後」と「リソース変更時」にのみカスタム目標を追加できます。 「リソース変更」ライフサイクルマッピングに「コンパイル」目標を追加すると、リソースを変更するとJavaScriptファイルがコンパイルされます。そのため、代わりにJavaScriptファイルをリソースフォルダーに入れることができますが、それは機能しますが、これは非常に見苦しいです。

また、Eclipseにプロジェクトを「クリーン」にするように指示したときにも機能します。次に、コンパイル目標ターゲットが呼び出されます。そのため、JavaScriptファイルを保存するときに機能を実行したいだけです。これはどういうわけか可能でなければならないのでしょうか?

ヒントはありますか?

26
kayahr

プロジェクトの設定で、ライフサイクルマッピングを設定できます。しかし、何らかの理由で、「クリーン後」と「リソース変更時」にのみカスタム目標を追加できます。 「リソース変更」ライフサイクルマッピングに「コンパイル」目標を追加すると、リソースを変更するとJavaScriptファイルがコンパイルされます。そのため、代わりにJavaScriptファイルをリソースフォルダーに入れることができますが、それは機能しますが、これは非常に見苦しいです。

お気づきのとおり、Eclipseの増分ビルドで実行されるデフォルトの目標はprocess-resourcesresources:testResourcesです。個人的には、jsファイルをリソースの下に置くのは見苦しく、javascriptプラグインをprocess-resourcesにバインドするだけです。

また、Eclipseにプロジェクトを「クリーン」にするように指示したときにも機能します。次に、コンパイル目標ターゲットが呼び出されます。

完全なビルド(Eclipseからのクリーン後)では、実行される目標はprocess-test-resourcesです。これは実際にはcompileフェーズを含むビルドライフサイクルフェーズです。そのため、クリーニング時にcompileが呼び出されますEclipseからプロジェクトを作成します。しかし、これは問題を解決しません(保存時にプラグインを実行します)。


前にも言ったように、jsファイルはリソースの下に置くだけです。ただし、別のオプションがあります。プロジェクトに別のBuilderを追加することです。 プロジェクトを右クリックしてから、プロパティ>ビルダー>新規> Mavenビルドプラグインの目標をAuto Build Goals中に実行する目標として定義します(ニーズに合わせて他の目標を変更または削除します):

alt text http://img694.imageshack.us/img694/2382/screenshot003wo.png

しかし、私は他のアプローチを好みます。

10
Pascal Thivent

@ Pascal-thiventの回答は時代遅れで(コメントで述べられているように)、@ akostadinovによって示唆されているため https://www.Eclipse.org/m2e/documentation/m2e-execution-not-covered.html

有効なMavenライフサイクルアクションを追加する必要があります

maven install pluginによってローカルに自動的にデプロイされるjarの例:

<build>
    <!-- ... -->

    <pluginManagement>
        <plugins>
            <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-jar-plugin</artifactId>
                                    <versionRange>[2.0,)</versionRange>
                                    <goals>
                                        <goal>jar</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <execute>
                                        <runOnConfiguration>true</runOnConfiguration>
                                        <runOnIncremental>true</runOnIncremental>
                                    </execute>
                                </action>
                            </pluginExecution>

                            <pluginExecution>
                                <pluginExecutionFilter>
                                    <groupId>org.Apache.maven.plugins</groupId>
                                    <artifactId>maven-install-plugin</artifactId>
                                    <versionRange>[2.5.0,)</versionRange>
                                    <goals>
                                        <goal>install</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <execute>
                                        <runOnConfiguration>true</runOnConfiguration>
                                        <runOnIncremental>true</runOnIncremental>
                                    </execute>
                                </action>
                            </pluginExecution>

                        </pluginExecutions>
                    </lifecycleMappingMetadata>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

ヒント: ソースファイル(GWT)を変更するたびにMaven Project Builderが呼び出されます および警告として:通常のインストールには、通常のMavenビルドサイクルに含めた場合のテストが含まれます

2
childno͡.de