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

卡瓦伊77

我有一个pom.xml其中I定义相同的plugin(相同的groupIdartifactId不同的execution在两个不同的:-)) profilesexecutions定义是在相同的phase,因此订单是根据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>

所有插件的执行都在该test阶段中定义,因此我希望遵循以下顺序:

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限制为将插件合并为多个执行?

加博尔·利普塔克(GáborLipták)

以我的经验,这是Maven中最大的错误之一。如果您在不同配置文件中为同一插件配置了多个配置,则顺序将无法预测。我什至观察到,在给定的阶段中,我在项目B中有一些插件顺序,并且一旦某些相同的插件在父项目中得到了配置(甚至不在同一阶段),该顺序就被破坏了。

https://issues.apache.org/jira/browse/MNG-2258上有一个与此相关的明显错误关闭的错误

可能的解决方法

  • 如果可能,请尝试将某些插件移至上一个阶段(准备测试某些插件,然后测试其余插件)
  • 尝试用groovy-maven-plugin脚本替换多个插件的功能(与ant集成非常方便,您可以在脚本中找到活动配置文件的列表)
  • 编写自己的mojo并以正确的顺序调用插件(请参阅https://github.com/TimMoore/mojo-executor
  • 试一试。也许它满足您的需求,并且它附带了Maven的许多优点

我认为您现在无法做更多的事情。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

具有不同配置文件的Maven配置文件

来自分类Dev

Maven配置文件中的嵌套属性用于插件配置

来自分类Dev

Maven CheckStyle插件-检查目标找不到配置文件

来自分类Dev

Maven antrun插件在构建和配置文件标签中

来自分类Dev

Maven:“插件”部分中使用的基于配置文件的属性

来自分类Dev

Maven配置文件覆盖1个插件

来自分类Dev

Outlook 更改了未在其配置文件中列出的 *.pst 文件的时间戳

来自分类Dev

Vim的插件配置文件

来自分类Dev

更改了cygwin的家庭位置,现在终端找不到我的.minttyrc配置文件

来自分类Dev

更改了导航抽屉显示配置文件上的名称和电子邮件,例如 Playstore

来自分类Dev

在配置文件Maven中更改源目录

来自分类Dev

如何在Maven配置文件的子集之间共享插件配置

来自分类Dev

配置文件的 maven 问题

来自分类Dev

更改mysql配置文件

来自分类Dev

在配置文件中运行插件目标

来自分类Dev

使用jgitflow Maven插件完成发布时激活配置文件?

来自分类Dev

使用jgitflow Maven插件完成发布时激活配置文件?

来自分类Dev

Xmodmap配置文件中KEYSYM的顺序

来自分类Dev

Git配置文件合并的顺序

来自分类Dev

更改默认用户配置文件URL-BBpress插件

来自分类Dev

有没有办法在模块之间共享一个 Maven 插件的通用配置[使用配置文件/等]?

来自分类Dev

使用配置文件基于操作系统为Maven生成不同的工件

来自分类Dev

我如何在 Maven 中创建不同的测试配置文件

来自分类Dev

Maven-子模块配置文件

来自分类Dev

基于配置文件的Maven打包类型

来自分类Dev

类路径和Maven配置文件

来自分类Dev

如何重用Maven配置文件?

来自分类Dev

Maven子模块配置文件

来自分类Dev

Maven:配置文件和模块

Related 相关文章

热门标签

归档