覆盖配置文件中maven-jar-plugin的<excludes>配置

时间:2018-06-04 03:20:30

标签: maven

我有maven-jar-plugin的以下root配置:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-jar-plugin</artifactId>
  <configuration>
      <excludes>
           <exclude>com/company/project/staging/*</exclude>
      </excludes>
  </configuration>
</plugin>

我想使用此配置覆盖maven配置文件中的此配置:

<profile>
  <id>staging</id>
  <build>
  <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <includes>
            <include>**/**</include>
          </includes>
        </configuration>
      </plugin>
    </plugins>
  </build>
</profile>

但是配置文件配置不会覆盖根配置,因此仍然排除包com / company / project / staging /。

的帮助
  

mvn help:all-profiles

命令我可以清楚地看到我的个人资料是有效的。知道为什么它不起作用,因为我期望它工作?任何帮助都非常感谢。

2 个答案:

答案 0 :(得分:1)

当您的个人资料处于活动状态时,合并配置中将使用包含和排除元素。要解决此问题,您可以在配置文件的配置定义中添加一个空的<excludes>元素,如果使用了combine.self="override"修饰符,它将覆盖主配置中定义的排除。

看起来您要做的就是消除配置文件中的排除,因此您也可以省略<include>元素。

<profile> <id>staging</id> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <excludes combine.self="override" /> </configuration> </plugin> </plugins> </build> </profile>

答案 1 :(得分:0)

The approach that solved my problem is to use a list inside and simply expand it in my profile config. E.g. Root plugin config:

<includes>
  <include>com/org/project/**</include>
</includes>

Profile plugin config:

<includes>
  <include>com/org/project/**</include>
  <include>com/org/staging/**</include>
</includes>