0

我们有使用自定义 Ant 脚本构建的 Oracle ADF 和 SOA 项目,而不是普通的 Maven 构建。相同的 Ant 插件为 ADF 和 SOA 配置不同。文件结构不受项目类型驱动,但可以混合,意思是:

- parent pom
    - ADF
    - SOA type1
    - SOA type2

我们怎样才能在pluginManagement不同版本的 Ant 插件中设置,并且孩子们可以选择他们想要的任何类型的 Ant 插件。据我所知,你只能选择你想要的插件,但不能选择同一个插件的风格。我不想仅仅为此而使我的继承结构复杂化。出于发布目的,我需要保持结构不变。

与属性相同,我想在中心位置拥有某些类型的属性,以及能够使用它们的项目,但也继承父 pom(用于发布目的)。有点像从多个父母那里继承。

我不想因为需要属性和插件而感到紧张(这对所有项目都是通用的,而不仅仅是我的)。为了发布目的,我需要保持我的 pom 结构清洁。

4

1 回答 1

1

您可以尝试使用profiles. 它们允许为特定场景定制特定构建的能力。

您可以在父 pom 中定义多个配置文件,每个配置文件都包含自己的 ant<plugin>部分。每个配置文件也将有activation部分。然后在您的子模块中,您将让他们激活适当的配置文件。

我将尝试使用一些 sudo 代码举一个例子:

家长会

<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 中用 a phaseof覆盖您不想none运行的那些执行的每个执行。应该注意的是,不推荐使用后一种方法。有关更多详细信息,请参见我的答案。

于 2013-11-07T10:34:22.187 回答