我正在使用Maven 3.3.9。 是否可以针对具有不同配置的相同插件实现相同的目标? 我的意思是这样的
<build>
...
<pluginManagement>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.6.0</version>
<executions>
<execution>
<id>test1</id>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<executable>dir</executable>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.6.0</version>
<executions>
<execution>
<id>test2</id>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<executable>cd</executable>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
如果我将<configuration>
标记放在<execution>
内,则会被忽略。
另外标签<goalPrefix>
无效,所以我不知道如何将目标别名化以区分它们......
修改
我需要执行两个不同的脚本,但只是作为cli目标......脚本对代码运行一些测试,但测试是可选的,只有在程序员明确要运行时才需要执行它们。
我想在maven中嵌入这些脚本的原因是因为我想使用${project.build.directory}
变量
答案 0 :(得分:3)
是的,确实如此。但是,您通常会将它们全部包含在同一个插件定义中。我们这样做是为了使树摇动,提前在我们的项目中编译和缩小angular2 UI。我们的配置如下所示:
<plugins>
<plugin>
<groupId>com.github.eirslett</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<id>npm run typescript compiler</id>
<phase>compile</phase>
<goals>
<goal>npm</goal>
</goals>
<configuration>
<arguments>run compile_ts_ngc</arguments>
</configuration>
</execution>
<execution>
<id>rollup</id>
<phase>compile</phase>
<goals>
<goal>npm</goal>
</goals>
<configuration>
<arguments>run rollup</arguments>
</configuration>
</execution>
<execution>
<id>gulp build</id>
<phase>compile</phase>
<goals>
<goal>gulp</goal>
</goals>
<configuration>
<arguments>aot</arguments>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
如您所见,我们在编译阶段运行两个不同的npm命令。它们按照从上到下指定的顺序运行。
我不完全确定你要与他们做些什么来区分他们?这是为了订购目的还是一些条件执行?通常我们会将需要在特定条件下运行的单独任务放入配置文件中,以便您可以轻松指定何时运行它们。