首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >扩充而不是覆盖Maven配置

扩充而不是覆盖Maven配置
EN

Stack Overflow用户
提问于 2009-07-09 07:34:05
回答 2查看 4.7K关注 0票数 20

我看到了this question,它激励我再次查看motivated (没有成功),寻找声明配置的替代方法,以便将其附加到父POM的配置中,而不是覆盖它。在Maven POM中,如果配置声明了与父配置相同的元素,它将覆盖父配置。正如另一个问题的公认答案所说,这是预期的行为。

但这并不总是我们想要的行为。在Maven中是否应该有添加而不是覆盖配置的方法?

例如:-提供声明配置最终元素的能力,以便子项可以添加到这些元素中,但不能替换?-允许子项配置将元素声明为添加,以便与父项合并

aspectj-maven-plugin的aspectLibraries元素就是一个很好的例子,说明覆盖行为并不总是可取的。

在我的父POM中,我为aspectj插件定义了一个配置,它声明了一个要用作aspectLibrary的跟踪jar。

代码语言:javascript
运行
复制
 <plugin>
   <groupId>org.codehaus.mojo</groupId>
   <artifactId>aspectj-maven-plugin</artifactId>
   <executions>
     <execution>
     <id>compile_with_aspectj</id>
       <goals>
         <goal>compile</goal>
       </goals>
     </execution>
   </executions>
   <configuration>
     <aspectLibraries>
       <aspectLibrary>
         <groupId>name.seller.rich</groupId>
         <artifactId>tracing</artifactId>
       </aspectLibrary>
     </aspectLibraries>
   </configuration>
   <dependencies>
     <dependency>
       <groupId>aspectj</groupId>
       <artifactId>aspectjtools</artifactId>
       <version>1.5.3</version>
     </dependency>
   </dependencies>
</plugin>

所有的子项目都继承了这一点,并且我在所有的项目中都可以进行跟踪,这很好。但是,如果我在子POM中定义了另一个aspectLibrary,它将替换我的跟踪配置。

请注意,我有一个解决此特定问题的方法,我感兴趣的是Maven的一般情况和影响。

简单的答案是在子POM和新的jar中重新声明跟踪jar的配置,但这涉及到维护,如果我想在配置文件中声明跟踪配置,以便在需要时禁用它(我确实这样做了),那么我需要在子POM中重新实现该配置文件。

上述示例中的依赖项声明与父级和其他位置中的其他依赖项声明合并。我知道依赖是一种特殊情况,但它表明实现它是可行的。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1102369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档