具有不同配置的相同插件

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 命令。他们运行按照指定的顺序从上到下。

我不完全确定你想用它们做什么来区分它们?这是为了订购目的还是有条件的执行?通常我们会将在特定条件下需要 运行 的单独任务放入配置文件中,以便您可以轻松指定何时 运行 它们。