gpt4 book ai didi

maven - 子模块不从父 pom 继承配置文件

转载 作者:行者123 更新时间:2023-12-05 04:09:25 51 4
gpt4 key购买 nike

我有一个父子 pom.父级定义了一些配置文件:

<profiles>
<profile>
<id>local</id>
<properties>
<build.profile.id>local</build.profile.id>
</properties>
</profile>
</profiles>

然后 children 为这些配置文件定义更多属性。

<profiles>
<profile>
<id>local</id>
<properties>
<name>serviceA</name>
</properties>
</profile>
</profiles>

如果我只调用子配置文件mvn help:effective-pom -pl child,父配置文件中定义的属性不会显示。它只显示 child 一个,所以 parent 不知何故被遗忘了。

有什么方法可以继承父级并在子级中修改/扩展?

编辑 1:可能的答案我找到了 this link他们说:

Unfortunately, parent pom inheritance has some limits. One of them is that profiles aren’t inherited.

所以也许这是不可能的。你们有什么感想?这些年有什么变化吗?

编辑 2: 属性以某种方式继承

通过运行 mvn help:effective-pom -Plocal 我得到了

...
<properties>
<build.profile.id>local</build.profile.id>
<name>serviceA</name>
</properties>
<profiles>
<profile>
<id>local</id>
<properties>
<name>serviceA</name>
</properties>
</profile>
</profiles>

所以我猜只有属性似乎以某种方式被继承了。

最佳答案

正如您已经发现的,两个配置文件具有相同的 <id>在 POM 继承期间不合并。但是,您可以采取的解决方法是让两个 配置文件具有不同的 <id>但使用相同的 <activation> condition :

<profiles>
<profile>
<id>local-parent</id>
<activation>
<property>
<name>local</name>
</property>
</activation>
<properties>
<build.profile.id>local</build.profile.id>
</properties>
</profile>
</profiles>

<profiles>
<profile>
<id>local-child</id>
<activation>
<property>
<name>local</name>
</property>
</activation>
<properties>
<name>serviceA</name>
</properties>
</profile>
</profiles>

使用 -Dlocal 运行构建而不是 -P local现在激活两个配置文件,它们共同具有预期的效果。

关于maven - 子模块不从父 pom 继承配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46004334/

51 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com