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

时间:2018-03-13 16:42:26

标签: maven maven-3 pom.xml

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

注意:SVN不在Jenkins环境中的路径上。

Maven 3.5.3
Java 1.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>

1 个答案:

答案 0 :(得分:1)

build number plugin的目标DevTools将创建包含scm版本信息的必需文件。以下配置将在文件夹create-metadata中创建名为scm.properties的文件。

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

  • 明确告诉build-number插件使用svnkit:svnkit
  • 向插件添加两个附加依赖项(<providerImplementations><svn>javasvn</svn></providerImplementations>maven-scm-provider-svnjava)。
svnkit

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

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