我该如何使用SVN和Maven获取构建版本号?

5

我使用buildnumber-maven-plugin插件,需要从svn中获取项目的构建编号。我的pom.xml文件如下:

<scm>
    <connection>
        scm:svn:https://username:password@path_to_repositiry
    </connection>
</scm>

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>buildnumber-maven-plugin</artifactId>
    <version>1.1</version>
    <executions>
        <execution>
            <phase>validate</phase>
            <goals>
                <goal>create</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <doCheck>false</doCheck>
        <doUpdate>false</doUpdate>
        <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.0.2</version>
        </dependency>
        <dependency>
            <groupId>org.tmatesoft.svnkit</groupId>
            <artifactId>svnkit</artifactId>
            <version>1.7.4-v1</version>
        </dependency>
    </dependencies>
</plugin>

但是我在打包项目时遇到了错误:

[ERROR] Failed to execute goal org.codehaus.mojo:buildnumber-maven-plugin:1.1:create (default)on project myproject: Cannot get the revision information from the scm repository : [ERROR] Exception while executing SCM command. svn: E155021: This client is too old to work with the working copy at [ERROR] 'D:\projects\myproject' (format {1}).

虽然我使用的是 TortoiseSVN 1.8.2!

我读到了 buildnumber-maven-plugin 在 TortoiseSVN 1.7 及更早版本中的行为。 我该如何使用 SVN 和 Maven 获取构建号?

1个回答

7

构建号插件将访问您的工作副本以获取修订版本号,由于您使用的是TortoiseSVN 1.8.x,因此您的工作副本处于svn 1.8.x格式中。因此,buildnumber插件使用的svnkit也需要支持svn 1.8.x,而您正在使用的版本(1.7.4-v1)很可能不支持。

因此,您需要一个更新的svnkit版本,例如

<dependency>
  <groupId>org.tmatesoft.svnkit</groupId>
  <artifactId>svnkit</artifactId>
  <version>1.8.3-1</version>
</dependency>

3
另外,有一个较新版本的buildnumber-maven-plugin可用:版本1.2。确保svnkit和buildnumber-maven-plugin版本都是最新的。 - Chad Nouis
@user3186861 随意接受答案吧 ;) - Thomas
添加一些额外的信息,我正在使用一个框架,在这个框架中,这个依赖项被正确声明,但是我的父POM在没有这个依赖项的情况下覆盖了它(以<plugin> <groupId>org.codehaus.mojo</groupId>...开始),所以它没有找到正确的版本,当我扩展Thomas的依赖项时,它正常工作。 - CsBalazsHungary

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接