我们使用frontend-maven-plugin在构建中使用 grunt 和 bower。使用前端 Maven 插件,我可以在本地安装 NPM,使用 Bower 下载 Java 库,并运行 Grunt 来优化和混淆我的代码。
像这样进行一些简化:
<plugin>
<groupId>com.github.eirslett</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<version>0.0.24</version>
<executions>
<execution>
<id>install node and npm</id>
<goals> <goal>install-node-and-npm</goal> </goals>
...
</execution>
<execution>
<id>npm-install</id>
<goals> <goal>npm</goal> </goals>
...
</execution>
<execution>
<id>bower-install</id>
<goals> <goal>bower</goal> </goals>
...
</execution>
<execution>
<id>grunt-build</id>
<goals> <goal>grunt</goal> </goals>
...
</execution>
</executions>
</plugin>
请注意,最后一次执行是 grunt-build,这是将 JavaScript 文件连接在一起、优化(删除返回、注释和其他内容)和混淆的地方。
这适用于发布。但是,开发人员希望在不连接、优化和混淆 JavaScript 文件的情况下部署战争。这将帮助他们进行调试。为此,我们只需grunt-build
从该插件的配置中删除执行部分。
我想使用配置文件来做到这一点。我可以有一个名为的配置文件development
,允许开发人员在没有最后一部分的情况下进行构建。我可以简单地复制并粘贴文件的这一部分pom.xml
,删除最后一次执行,并将其放入单独的配置文件中。全部完成。
但是,有一句古老的编程格言:不要重复自己。我会在我的pom.xml
.
我想做的是有办法执行前三个执行,只有在这不是开发构建时才执行第四个。我也会在这方面做一些其他的小动作。例如,我将不得不复制 JavaScript 本身而不是咕哝的结果。但是,这很容易做到并且不会重复代码。
这会导致重复代码,因为我必须frontend-maven-plugin
使用两个配置来定义。一次用于development
配置文件,一次用于标准版本构建。据我所知,我不能说,运行这个配置frontend-maven-plugin
,如果这不是一个开发版本,运行这个实例,frontend-maven-plugin
它只会做咕噜咕噜的东西。
有没有办法在 中定义相同的插件两次pom.xm
,并让 Maven 以正确的顺序运行两个实例?