开发者

How to get Maven release to clone git submodules?

开发者 https://www.devze.com 2023-03-24 23:44 出处:网络
I\'ve got a Maven project with some git submodules linked. Everything works fine until I do a release:prepare or :perform, the clean checkout these targets perform does not contain the submodules (or

I've got a Maven project with some git submodules linked. Everything works fine until I do a release:prepare or :perform, the clean checkout these targets perform does not contain the submodules (or in other words, git clone is not recursive). I could not find a proper way to configure Maven to call 开发者_如何学JAVAgit clone with the --recursive option.

I was thinking of using the scm provider configuration (http://maven.apache.org/scm/git.html) or simply to configure the release plugin directly in the pom.xml, but couldn't get it to work.

Thanks.


Here's the same solution but without a script:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <inherited>false</inherited> <!-- only execute these in the parent -->
    <executions>
        <execution>
            <id>git submodule update</id>
            <phase>initialize</phase>
            <configuration>
                <executable>git</executable>
                <arguments>
                    <argument>submodule</argument>
                    <argument>update</argument>
                    <argument>--init</argument>
                    <argument>--recursive</argument>
                </arguments>
            </configuration>
            <goals>
                <goal>exec</goal>
            </goals>
        </execution>
    </executions>
</plugin>


I just added the following plugin:

<!-- This is a workaround to get submodules working with the maven release plugin -->
<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.1</version>
    <executions>
        <execution>
            <phase>initialize</phase>
            <id>invoke build</id>
            <goals>
                <goal>exec</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <executable>build/bin/update.sh</executable>
    </configuration>
</plugin>

And my update.sh contains:

#!/bin/bash
git submodule update --init
git submodule foreach git submodule update --init
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号