Maven多模块部署分叉

时间:2015-09-21 15:32:57

标签: maven deployment

我一直遇到使用maven部署多模块项目的问题,需要跳过某些模块,我需要在构建完所有模块后进行部署。

有关详细信息,请使用Maven版本3.3.3和Maven部署插件的2.8.2版。

我尝试通过Jenkins使用mvn clean deploy -U -DdeployAtEnd=true部署模块。

我的模块的示例POM:

<project>
    <groupId>com.parent</groupId>
    <artifactId>parent</artifactId>
    <version>1.0-SNAPSHOT</version>

    <modules>
        <module>child-A</module>
        <module>child-B</module>
        <module>child-C</module>
        <module>child-D</module>
    </modules>
</project>

儿童A

<project>
    <parent>
        <groupId>com.parent</groupId>
        <artifactId>com.parent</artifactId>
        <version>com.parent</version>
    </parent>

    <artifactId>child-A</artifactId>

    <modules>
        <module>grandChild-A/<module>
        <module>grandChild-B/<module>
        <module>grandChild-C/<module>
        <module>grandChild-D/<module>
    </modules>
</project>

儿童B-D

子B有一个子模块(孙子E)但C和D没有。

孙子

这些都没有子模块。

Maven deploy Plugin

如何定义部署插件的示例:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-deploy-plugin</artifactId>
    <version>2.8.2</version>
    <executions>
        <execution>
            <id>default-deploy</id>
            <phase>deploy</phase>
            <goals>
                <goal>deploy</goal>
            </goals>
        </execution>
    <executions>
</project>

此插件用于每个模块,但跳过配置合并为儿童B-D和孙子E。

当使用deployAtEnd选项时,部署插件会在每个reactor项目成功构建后将其放入列表中,并且如果它没有设置跳过配置。然后它在最后部署所有模块。

该插件使用计数器READYPROJECTSCOUNTER,该计数器初始化为private static final AtomicInteger,以确定何时构建了所有项目。

然而,当我尝试部署我的项目时,会创建两个计数器迭代。一个为父母和孩子增加,另一个为孙子增加。

因此,当它根据项目列表的大小检查计数器时,只检查其中一个计数器,并且由于计数器没有达到项目列表大小,因此部署过程不会启动。

是否还有其他人遇到类似这样的事情,或者,如果没有,任何人都能解释为什么计数器初始化两次(即为什么这个过程分成两个独立的实例)?

0 个答案:

没有答案