Maven中的元配置文件

4
我正在寻找一种方法来创建元配置文件,只需在Maven中激活子配置文件即可。让我们举一个非常具体的例子。我有以下配置文件:
  • "server-jboss"
  • "server-tomcat"
  • "database-hsql"
  • "database-oracle"
要构建该项目,您必须选择一个服务器配置文件和一个数据库配置文件。我想创建两个“元配置文件”:
  • "dev" => "server-tomcat","database-hsql"
  • "prod" => "server-jboss","database-oracle"
第一个想法是通过属性激活子配置文件:
<profile>
   <id>database-oracle</id>
   <activation>
     <property>
       <name>prod</name>
     </property>
   </activation>
</profile>

但这种方式无法在元配置文件之间共享子配置文件。例如,我希望我的配置文件“database-oracle”能够被“pre-prod”和“prod”元配置文件同时激活。
注意:我的子配置文件只包含属性。它们用于过滤资源和子POM中。这就是为什么我认为这种特定情况下可能有解决方案的原因。
对我而言,理想的情况是将它们外部化到外部属性文件中,但一次只解决一个问题 ;)

实际上,这个问题听起来非常像 https://dev59.com/tXE95IYBdhLWcg3wlu6z 的重复。如果您认为这是一个不同的问题,请确认。 - Pascal Thivent
是的,我浏览了那些问题,但我认为在我的情况下可能会有一些技巧。我的子配置文件只是我想要聚合的属性集。也许我的问题标题有点过于雄心壮志 ;) - nicoulaj
2个回答

6

从另一个配置文件激活配置文件是不可能的(这在先前的问题中已经讨论过)。您的第一个想法,使用相同的属性来激活不同的配置文件,是您可以实现的最好的方法,但确实有限制。


在这种情况下,有没有什么技巧可以通过多个属性来激活配置文件?我看到您可以为 JDK 版本使用范围,例如,也许有一些隐藏语法,如 <property><name>pord,pre-prod</name></property>? - nicoulaj

2
您尝试使用maven-properties-plugin插件的解决方案了吗?一些可能性在这个问题这里中进行了讨论。

是的,我尝试过了,看起来是个不错的解决方案。不幸的是,我无法使其正常工作:我在POM中加载了属性文件,对于资源过滤效果很好,但不能直接在POM中使用它们。 - nicoulaj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接