具有不同配置的相同插件
Same plugin with different configurations
我正在使用 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}
变量
是的,是的。但是,您通常会将它们全部包含在同一个插件定义中。我们这样做是为了在我们的项目中提前编译和缩小我们的 angular2 用户界面。我们的配置如下所示:
<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 命令。他们运行按照指定的顺序从上到下。
我不完全确定你想用它们做什么来区分它们?这是为了订购目的还是有条件的执行?通常我们会将在特定条件下需要 运行 的单独任务放入配置文件中,以便您可以轻松指定何时 运行 它们。
我正在使用 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}
变量
是的,是的。但是,您通常会将它们全部包含在同一个插件定义中。我们这样做是为了在我们的项目中提前编译和缩小我们的 angular2 用户界面。我们的配置如下所示:
<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 命令。他们运行按照指定的顺序从上到下。
我不完全确定你想用它们做什么来区分它们?这是为了订购目的还是有条件的执行?通常我们会将在特定条件下需要 运行 的单独任务放入配置文件中,以便您可以轻松指定何时 运行 它们。