26

我有一个带有 JavaScript 代码的 Maven 项目。在 pom.xml 中有一个特殊的 javascript 编译器插件连接到 compile 目标。因此,当我键入“mvn compile”时,src/main/javascript 中的 JavaScript 源代码将被编译(压缩和混淆)并保存到 target/classes 目录中。在命令行上这很好用。

但是现在我想通过使用带有 m2eclipse 插件的 Eclipse 来简化开发。我希望 Eclipse 在我更改 JavaScript 文件时调用编译目标。我怎样才能做到这一点?当我保存一个 JavaScript 文件时,我只在 maven 控制台中看到一个“AUTO_BUILD”日志记录行,就是这样。

在项目首选项中,可以配置生命周期映射。但由于某种原因,我只能将自定义目标添加到“清理后”和“资源更改后”。当我将“编译”目标添加到“资源更改”生命周期映射时,JavaScript 文件会在我更改资源时进行编译。所以我可以将我的 JavaScript 文件放到资源文件夹中,这样就可以了,但这听起来很丑陋。

当我告诉 Eclipse “清理”我的项目时,它也可以工作。然后调用编译目标target。所以功能就在那里,我只想在保存 JavaScript 文件时执行它。这一定是可能的,或者不是?

有什么提示吗?

4

2 回答 2

10

在项目首选项中,可以配置生命周期映射。但由于某种原因,我只能将自定义目标添加到“清理后”和“资源更改后”。当我将“编译”目标添加到“资源更改”生命周期映射时,JavaScript 文件会在我更改资源时进行编译。所以我可以将我的 JavaScript 文件放到资源文件夹中,这样就可以了,但这听起来很丑陋。

正如您所注意到的,在 Eclipse 中增量构建运行的默认目标是process-resourcesresources:testResources. 就个人而言,我觉得将 js 文件放在资源下并不难看,我只会将 javascript 插件绑定到process-resources.

当我告诉 Eclipse “清理”我的项目时,它也可以工作。然后调用编译目标target。

在完整构建时(从 Eclipse 清理后),运行目标process-test-resources实际上是包含该阶段的构建生命周期阶段,这就是从 Eclipse 清理项目时被调用compile的原因。compile但这并不能解决您的问题(在保存时运行您的插件)。


正如我所说,我只是将 js 文件放在资源下。但也许还有另一种选择:将另一个 Builder 添加到项目中。右键单击您的项目,然后Properties > Builders > New > Maven Build并将您的插件目标定义为在自动构建目标期间运行的目标(更改或删除其他目标以满足您的需要):

替代文字 http://img694.imageshack.us/img694/2382/screenshot003wo.png

但我更喜欢另一种方法。

于 2010-04-13T20:56:36.083 回答
2

因为@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 构建周期中,则安装通常包括测试

于 2015-11-04T13:13:58.093 回答