如何在不直接从maven执行svn调用的情况下获取scm信息?

How to get the scm information without directly executing an svn call from maven?

我想将以下内容转换为 Jenkins 兼容插件,它不依赖于执行对可执行文件的外部调用。
是否有替代插件可用于获取此信息以进入 META-INF 文件夹?

注意:SVN在Jenkins环境下不在路径上

行家 3.5.3
Java1.8

插件:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>${maven-antrun-plugin.ver}</version>
            <executions>
                <execution>
                    <id>get-scm-info</id>
                    <goals>
                        <goal>run</goal>
                    </goals>
                    <phase>generate-resources</phase>
                    <configuration>
                        <tasks>
                            <mkdir dir="target/buildinfo" />
                            <exec executable="svn" output="target/buildinfo/scm.properties">
                                <arg value="info" />
                                <arg value="${basedir}" />
                                <arg value="--non-interactive" />
                            </exec>
                        </tasks>
                    </configuration>
                </execution>
            </executions>
        </plugin>

build number plugin 的目标 create-metadata 将创建包含 scm 版本信息的所需文件。下面的配置将在文件夹 target/buildinfo.

中创建一个名为 scm.properties 的文件

由于构建机器上没有可用的 svn 安装,您可以使用 svnkit 而不是正常的 svn 安装。要使用 svnkit,还需要两个额外的配置:

  • 明确告诉 build-number 插件使用 svnkit:<providerImplementations><svn>javasvn</svn></providerImplementations>
  • 向插件添加两个额外的依赖项(maven-scm-provider-svnjavasvnkit)。
<build>
  <plugins>
    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>buildnumber-maven-plugin</artifactId>
      <version>1.4</version>
      <executions>
        <execution>
          <phase>generate-resources</phase>
          <goals>
            <goal>create-metadata</goal>
          </goals>
        </execution>
      </executions>
      <configuration>
        <doCheck>true</doCheck>
        <doUpdate>true</doUpdate>
        <outputDirectory>target/buildinfo</outputDirectory>
        <outputName>scm.properties</outputName>
        <providerImplementations>
          <svn>javasvn</svn>
        </providerImplementations>
      </configuration>
      <dependencies>
      <dependency>
        <groupId>com.google.code.maven-scm-provider-svnjava</groupId>
        <artifactId>maven-scm-provider-svnjava</artifactId>
        <version>2.1.2</version>
      </dependency>
      <dependency>
        <groupId>org.tmatesoft.svnkit</groupId>
        <artifactId>svnkit</artifactId>
        <version>1.9.1</version> 
      </dependency>
    </dependencies>
  </plugin>
</plugins>

为了让一切正常工作,pom 必须包含一个带有正确 svn 的 scm 部分 url:

<scm>
  <developerConnection>scm:svn:https://...</developerConnection>
</scm>