Как получить релиз Maven для клонирования подмодулей git? - PullRequest
13 голосов
/ 04 августа 2011

У меня есть проект Maven со связанными подмодулями git.Все работает нормально, пока я не сделаю релиз: подготовить или: выполнить, чистая проверка, которую выполняют эти цели, не содержит подмодулей (или, другими словами, git clone не является рекурсивным).Я не смог найти правильный способ настроить Maven для вызова git clone с параметром --recursive.

Я думал об использовании конфигурации провайдера scm (http://maven.apache.org/scm/git.html) или просто о настройке плагина выпуска непосредственно вpom.xml, но не смог заставить его работать.

Спасибо.

Ответы [ 2 ]

21 голосов
/ 22 апреля 2015

Вот то же решение, но без скрипта:

<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>
13 голосов
/ 16 сентября 2011

Я только что добавил следующий плагин:

<!-- 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>

И мой update.sh содержит:

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