1

私は Maven を初めて使用し、ソースが既にチェックアウトされているかどうかに基づいて、SCM プラグインの目標checkout更新に自動的に変更しようとしているという問題があります。

これを機能させるためのコード例を誰かに見せてもらえますか? これはプラグイン構成です:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-scm-plugin</artifactId>
    <version>1.9.4</version>
        <executions>
            <execution>
                <phase>generate-sources</phase>
                <goals>
                    <goal>checkout</goal>
                </goals>
                <configuration>
                    <connectionType>developerConnection</connectionType>
                    <scmVersion>master</scmVersion>
                    <scmVersionType>branch</scmVersionType>
                    <checkoutDirectory>${project.basedir}/src</checkoutDirectory>
                    <workingDirectory>${project.basedir}/src</workingDirectory>
                </configuration>
            </execution>
        </executions>
</plugin>
4

2 に答える 2

0

SCM プラグインの目標を変更することは、Đỗ Như Vý (上記) に触発されました。

アプローチは

  1. デフォルト値に設定された scm.goal という名前のプロパティに目標を配置します。つまり、更新します。
  2. プロファイル (ブートストラップ) を使用して、scm.goal プロパティの値を「update」から「checkout」に変更します。
  3. 不足している .gitignore ファイルに基づいて、ブートストラップ プロファイルを有効にします。
  4. プロパティ scm.goal を SCM プラグインのゴール要素に配置します。

コード:

    <properties>
        <scm.dest.path>${project.basedir}/src</scm.dest.path>
        <scm.goal>update</scm.goal>
    </properties>

    <profiles>
        <profile> 
            <id>bootstrap</id> 
            <activation> 
                <file>
                  <missing>./src/.gitignore</missing>
                </file>
             </activation> 
            <properties>
                <scm.goal>checkout</scm.goal>
            </properties>
        </profile>
    </profiles>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-scm-plugin</artifactId>
                <version>1.9.4</version>
                <executions>
                    <execution>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>${scm.goal}</goal>
                        </goals>
                        <configuration>
                            <connectionType>developerConnection</connectionType>
                            <scmVersion>master</scmVersion>
                            <scmVersionType>branch</scmVersionType>
                            <checkoutDirectory>${scm.dest.path}</checkoutDirectory>
                            <workingDirectory>${scm.dest.path}</workingDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
...
于 2016-04-01T19:23:01.877 に答える