【问题标题】:checking out a Git repository and switch to a specific branch using Maven SCM使用 Maven SCM 签出 Git 存储库并切换到特定分支
【发布时间】:2024-01-24 00:29:02
【问题描述】:

我想使用 Maven 来签出 Git 存储库。 在我们的特定用例中,这是有道理的,因为这个 Git 存储库包含我们需要包含在构建过​​程中的文件。

由于项目的性质,Git 存储库可能有不同的分支。所以一个简单的: scm:git:git@github.example.com:myproject/project.git

将不起作用,因为这将结帐大师。我想例如分支“3.0V3”

有没有办法可以指定 Maven 将签出哪个分支?

【问题讨论】:

    标签: git maven version-control


    【解决方案1】:

    您可以使用maven scm plugin<scmVersion><scmVersionType> 属性来实现此目的。

     <scm>
        <developerConnection>scm:git:url</developerConnection>
      </scm>
     ...
    
     <build>
        <plugins>
            ...
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-scm-plugin</artifactId>
              <version>1.8.1</version>
              <configuration>
                  <connectionType>developerConnection</connectionType>
                  <scmVersion>branch-name</scmVersion>
                  <scmVersionType>branch</scmVersionType>
              </configuration>
            </plugin>
        </plugins>
        ...
      </build>
      ...
    </project>
    

    【讨论】:

    • 没错,我想完整的参数列表在这里:maven.apache.org/scm/maven-scm-plugin/checkout-mojo.html我只是想知道如何修改结帐目录名称。 Maven 将始终使用 target/checkout 作为本地名称。我宁愿目标/分支名称作为目录。 “workingDirectory”参数似乎没有任何效果(完全)。
    • 啊,没关系 :) "checkoutDirectory" 是它的参数。 maven.apache.org/scm/maven-scm-plugin/…
    • 我不喜欢这个答案,因为它要求更改 pom.xml 只是为了更改将要构建的分支。
    • @SteveCohen。如果您不想更改pom.xml,可以将-DscmVersionType-DscmVersion 作为命令行参数传递给mvn scm:update 或类似任务。