如何在不直接从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-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 必须包含一个带有正确 svn 的 scm 部分 url:
<scm>
<developerConnection>scm:svn:https://...</developerConnection>
</scm>
我想将以下内容转换为 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-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 必须包含一个带有正确 svn 的 scm 部分 url:
<scm>
<developerConnection>scm:svn:https://...</developerConnection>
</scm>