我有一个带有JavaScript代码的Maven项目。有一个特殊的javascript编译器插件连接到pom.xml中的编译目标。因此,当我输入“mvn compile”时,src / main / javascript中的JavaScript源代码将被编译(压缩和混淆)并保存到target / classes目录中。在命令行上,这很有效。
但是现在我想通过使用带有m2eclipse插件的Eclipse来简化开发。每当我更改JavaScript文件时,我都希望Eclipse调用编译目标。我怎样才能做到这一点?当我保存JavaScript文件时,我只是在maven控制台中看到一个“AUTO_BUILD”日志记录行,就是这样。
在项目首选项中,可以配置生命周期映射。但出于某种原因,我只能将自定义目标添加到“清理后”和“资源已更改”。当我将“compile”目标添加到“resource changed”生命周期映射时,我会在更改资源时编译JavaScript文件。所以我可以把我的JavaScript文件放到资源文件夹中,它会起作用,但听起来很难看。
当我告诉Eclipse“清理”我的项目时,它也在工作。然后调用编译目标目标。所以功能就在那里我只想在保存JavaScript文件时执行它。这必须以某种方式可能吗?
任何提示?
答案 0 :(得分:10)
在项目首选项中,可以配置生命周期映射。但出于某种原因,我只能将自定义目标添加到“清理后”和“资源已更改”。当我将“compile”目标添加到“resource changed”生命周期映射时,我会在更改资源时编译JavaScript文件。所以我可以把我的JavaScript文件放到资源文件夹中,它会起作用,但听起来很难看。
正如您所注意到的,Eclipse中增量构建的默认目标是process-resources
和resources:testResources
。就个人而言,我不认为将js文件放在资源下是丑陋的,我只想绑定process-resources
上的javascript插件。
当我告诉Eclipse“清理”我的项目时,它也在工作。然后调用编译目标目标。
在完全构建(从Eclipse中删除)之后,目标运行是process-test-resources
,这实际上是包含compile
阶段的构建生命周期阶段,这就是为什么compile
被调用的原因从Eclipse清理项目。但这并不能解决您的问题(在保存时运行插件)。
正如我所说,我只是把js文件放在资源下面。但是可能还有另一种选择:在项目中添加另一个Builder。在项目中右键单击,然后属性>建筑商>新> Maven Build 并将您的插件目标定义为在自动构建目标期间运行的目标(更改或删除其他目标以满足您的需求):
alt text http://img694.imageshack.us/img694/2382/screenshot003wo.png
但我更喜欢其他方法。
答案 1 :(得分: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>
提示:与Maven Project Builder is invoked every time I change a source file (GWT)有关并作为警告:安装通常包括测试,如果您已将它们包含在正常的maven构建周期中