在父POM中排除指令

时间:2015-08-27 08:55:48

标签: java maven directory parent-pom

我正在尝试排除要嵌入JAR的完整文件夹。我发现以下指令就像魅力一样:

<plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <excludes>
                    <exclude>**/unwantedJars/**</exclude>
                </excludes>
            </configuration>
        </plugin>
  </plugins>  

因此,在运行mvn clean install时没问题,我得到一个没有不需要的文件夹的JAR。

但是,我有几个项目需要包含此指令(以及其他常见配置),因此我使用父POM项目。除上述指令外,一切都运作良好。只要我将此排除部分移动到父POM定义,它就不再起作用了。

奇怪的是,如果我比较2配置的有效POM,它们是完全相同的!

在当前项目的POM或父POM中使用此指令有什么区别?

1 个答案:

答案 0 :(得分:0)

您需要使用pluginManagement

<强>父的pom.xml

<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/xsd/maven-4.0.0.xsd">
  ...
  <build>
    ...
    <pluginManagement>
      <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <excludes>
                    <exclude>**/unwantedJars/**</exclude>
                </excludes>
            </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
    ...
  </build>
</project>

儿童-的pom.xml

<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/xsd/maven-4.0.0.xsd">
  ...
  <build>
    ...
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
      </plugin>
    </plugins>
    ...
  </build>
</project>