2017-08-04 39 views
2

我有一个超级POM:如何在maven中继承构建选项?

<resources> 
    <resource> 
    <filtering>true</filtering> 
    <directory>(path to my project)\src\main\resources</directory> 
    <includes> 
     <include>**/application*.yml</include> 
     <include>**/application*.properties</include> 
    </includes> 
    </resource> 
    <resource> 
    <directory>(path to my project)\src\main\resources</directory> 
    <excludes> 
     <exclude>**/application*.yml</exclude> 
     <exclude>**/application*.properties</exclude> 
    </excludes> 
    </resource> 
</resources> 

的情况是:

当我把下面的代码我的项目的POM中,会自动改写超级POM配置:

<build> 
    <resources> 
     <resource> 
      <filtering>true</filtering> 
      <directory>my-project/src/main/resources</directory> 
      <excludes> 
       <exclude>*.yml</exclude> 
      </excludes> 
     </resource> 
    </resources> 
</build> 

我如何使用超级POM配置和“CONTA”与我的项目POM是:

<resources> 
    <resource> 
    <filtering>true</filtering> 
    <directory>(path to my project)\src\main\resources</directory> 
    <includes> 
     <include>**/application*.yml</include> 
     <include>**/application*.properties</include> 
    </includes> 
    </resource> 
    <resource> 
    <directory>(path to my project)\src\main\resources</directory> 
    <excludes> 
     <exclude>**/application*.yml</exclude> 
     <exclude>*.yml</exclude> <!-- my project pom config --> 
     <exclude>**/application*.properties</exclude> 
    </excludes> 
    </resource> 
</resources> 
+1

当我在学习Maven时,我也注意到在子模块中定义的任何资源优先于在父POM中定义的资源。如上所述,让他们'concat'的唯一方法是在孩子中重复父配置,然后像你一样添加新的选项。这是Maven 3.2,不确定后续版本是否有更好的方式来处理这个问题。 [插件有明确的说法'合并'](https://maven.apache.org/pom.html#Plugins),请参阅'combine.children'和相关的属性。 – user944849

+0

好的,我会复制配置。把你的评论作为答案,对我来说就够了。 – Lucas

+0

完成。也许其中一位Maven开发人员最终会启发我们两人。 – user944849

回答

1

当我学习Maven时,我也注意到在子模块中定义的任何资源都优先于父POM中的资源。如上所述,让他们'concat'的唯一方法是在孩子中重复父配置,然后像你一样添加新的选项。这是Maven 3.2,不确定后续版本是否有更好的方式来处理这个问题。 Plugins have an explicit way to say 'merge',请参阅combine.children和相关属性。