加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Maven更改不同配置文件的插件的顺序

发布时间:2020-12-14 05:35:17 所属栏目:Java 来源:网络整理
导读:我有一个pom.xml,我在两个不同的配置文件中定义了相同的插件(相同的groupId和artifactId,不同的执行:-)).执行在同一阶段中定义,因此顺序由xml的顺序计算: ?xml version="1.0" encoding="UTF-8" standalone="no"?project xmlns="http://maven.apache.org/POM
我有一个pom.xml,我在两个不同的配置文件中定义了相同的插件(相同的groupId和artifactId,不同的执行:-)).执行在同一阶段中定义,因此顺序由xml的顺序计算:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>echo</groupId>
    <artifactId>test</artifactId>
    <name>echo-test</name>
    <version>1.0.0</version>
    <packaging>pom</packaging>
    <profiles>
        <profile>
            <id>1st-profile</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>1st-antrun-echo</id>
                                <phase>test</phase>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                                <configuration>
                                    <tasks>
                                        <echo>1st antrun plugin</echo>
                                    </tasks>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>2nd-profile</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>com.soebes.maven.plugins</groupId>
                        <artifactId>maven-echo-plugin</artifactId>
                        <version>0.1</version>
                        <executions>
                            <execution>
                                <id>1st-soebes-echo</id>
                                <phase>test</phase>
                                <goals>
                                    <goal>echo</goal>
                                </goals>
                                <configuration>
                                    <echos>
                                        <echo>1st echo-plugin</echo>
                                    </echos>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>2nd-antrun-echo</id>
                                <phase>test</phase>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                                <configuration>
                                    <tasks>
                                        <echo>2nd antrun plugin</echo>
                                    </tasks>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>

所有的插件执行都是在测试阶段进行定义的,所以我期望下列顺序:

1st antrun plugin
1st echo-plugin
2nd antrun plugin

但是,由于antrun-plugins被合并,我得到这个输出:

1st echo-plugin    
1st antrun plugin    
2nd antrun plugin

这个命令解释了为什么会发生这种情况:mvn help:effective-pom

除了引入新的阶段,还有其他解决方案来维护订单吗?我们的项目真的很大,这是一个很简单的例子.

为什么maven的这个限制将插件合并成多个执行的插件?

解决方法

根据我的经验,这是Maven中最大的bug之一.如果您在不同的配置文件中为同一插件配置了多个配置,则该命令根本不可预测.我甚至观察到,在给定阶段我在项目B中有一些插件顺序,一旦相同的插件在一个父项目(甚至没有在同一个阶段)中得到一个配置,那么这个命令被毁了.

在https://jira.codehaus.org/browse/MNG-2258有一个明显的错误关闭的bug.

可能的解决方法

如果可能,尝试将一些插件移到上一个阶段
(准备测试用于一些插件并测试其余)
>尝试
用a替换多个插件的功能
groovy-maven插件脚本(与蚂蚁集成非常方便,和
您将到达脚本中活动配置文件的列表)
写你的
自己的mojo并按正确的顺序调用插件(参见
https://github.com/TimMoore/mojo-executor)
>试一试.也许它符合你的需要,它带来了很多从Maven的好东西

我不认为现在还有什么可以做的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读