我们拥有使用自定义Ant脚本而不是普通Maven构建的Oracle ADF和SOA项目。对于ADF和SOA,相同的Ant插件的配置不同。文件结构不是由项目类型驱动的,但可以混合使用,意思是:
- parent pom
- ADF
- SOA type1
- SOA type2
我们如何设置pluginManagement
不同版本的Ant插件,以及孩子们选择他们想要的任何类型的Ant插件。据我所知,你只能选择你想要的插件,但不能选择相同插件的风格。
我不想为此复杂化我的继承结构。出于发布目的,我需要将结构保持原样。
我想要属性,我希望在中心位置有一些类型的属性,一个项目能够使用它们,但也继承父pom(用于发布目的)。有点像从多个父母那里继承。
我不想因为需要属性和插件而紧张(这对所有项目都是如此,而不仅仅是我的)。为了释放目的,我需要保持我的pom结构清洁。
答案 0 :(得分:1)
您可以尝试使用profiles
。它们允许为特定场景定制特定构建。
您可以在父pom中定义多个配置文件,每个配置文件都包含自己的ant <plugin>
部分。每个配置文件也有activation
部分。然后在您的子模块中,您可以激活相应的配置文件。
我会尝试使用一些sudo代码给出一个例子:
父pom
<profile>
<id>adf-project</id>
<build>
<plugins>
<plugin>
<!-- adf specific ant plugin config -->
</plugin>
</plugins>
</build>
<activation>
<property>
<name>adfBuild</name>
<value>true</value>
</property>
</activation>
</profile>
<profile>
<id>soa-project</id>
<build>
<plugins>
<plugin>
<!-- soa ant plugin specific config -->
</plugin>
</plugins>
</build>
<activation>
<property>
<name>soaBuild</name>
<value>true</value>
</property>
</activation>
</profile>
然后在您的soa模块pom中,您将拥有以下内容:
<project ...>
<properties>
<soaBuild>true</soaBuild>
</properties>
</project>
然后,这将自动激活该配置文件并使用正确的ant插件配置。
另一个选择是将插件定义为正常但有多个executions
(一个执行为soa,一个执行为adf)然后在子poms中使用phase
{{none
覆盖每个执行1}}对于那些不想要运行的执行。应该指出的是,不建议使用后一种方法。有关详细信息,请参阅我的回答here。