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

Ale*_*ich 5 maven

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

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-jar-plugin</artifactId>
  <configuration>
      <excludes>
           <exclude>com/company/project/staging/*</exclude>
      </excludes>
  </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

我想使用以下配置覆盖 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>
Run Code Online (Sandbox Code Playgroud)

但是,配置文件配置不会覆盖根配置,因此 com/company/project/staging/ 包仍然被排除在外。在的帮助下

mvn 帮助:所有配置文件

命令我可以清楚地看到我的个人资料处于活动状态。知道为什么它不能像我期望的那样工作吗?非常感谢任何帮助。

pru*_*nge 7

当您的配置文件处于活动状态时,包含和排除元素都会在合并的配置中使用。要解决此问题,您可以在配置文件的配置定义中添加一个空元素,如果使用修饰符,<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>