代码之家  ›  专栏  ›  技术社区  ›  ScrappyDev

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

  •  0
  • ScrappyDev  · 技术社区  · 7 年前

    我想将以下内容转换为与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 回复  |  直到 4 年前
        1
  •  1
  •   werner    7 年前

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

    由于构建计算机上没有可用的svn安装,因此可以使用 svnkit 而不是正常的svn安装。使用 svnkit 需要另外两种配置:

    • 明确告诉内部版本号插件使用svnkit: <providerImplementations><svn>javasvn</svn></providerImplementations>
    • 添加两个其他依赖项( maven-scm-provider-svnjava svnkit公司 )到插件。
    <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必须包含一个scm节,该节具有正确的svn url:

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