无法使用SVN作为Maven存储库进行部署 [英] Unable to deploy using SVN as Maven repo

查看:123
本文介绍了无法使用SVN作为Maven存储库进行部署的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正尝试使用 Maven货车.如果我使用http作为协议声明快照位置,则在尝试部署(MVN干净部署)时会从服务器返回409错误

I'm trying to use Subversion as Maven repo utilizing Maven wagon. If I declare snapshot location using http as protocol I get 409 error back from server when trying to deploy (mvn clean deploy)

<snapshotRepository>
        <uniqueVersion>false</uniqueVersion>
        <id>engtools_snapshots</id>
        <name>EngTools Maven Repository</name>
        <url>http://continuum.td.com/svn_repos/maven/snapshots</url>
</snapshotRepository>

当我将协议更改为scm:svn:http时,事情变得更加奇怪-我遇到了一些看似与领域相关的错误

When I change protocol to scm:svn:http things are getting even more weird - I get several errors seemingly related to realm

<snapshotRepository>
        <uniqueVersion>false</uniqueVersion>
        <id>engtools_snapshots</id>
        <name>EngTools Maven Repository</name>
        <url>scm:svn:http://continuum.td.com/svn_repos/maven/snapshots</url>
</snapshotRepository>

SCM配置

        <extensions>
        <extension>
            <groupId>org.apache.maven.wagon</groupId>
            <artifactId>wagon-scm</artifactId>
            <version>1.0-beta-6</version>
        </extension>
        <extension>
            <groupId>org.apache.maven.scm</groupId>
            <artifactId>maven-scm-manager-plexus</artifactId>
            <version>1.3-SNAPSHOT</version>
        </extension>
        <extension>
            <groupId>org.apache.maven.scm</groupId>
            <artifactId>maven-scm-provider-svnexe</artifactId>
            <version>1.3-SNAPSHOT</version>
        </extension>
    </extensions>

(MVN部署)产生的部分堆栈跟踪

Partial stacktrace resulting from (mvn deploy)

[INFO] [deploy:deploy {execution: default-deploy}]
[INFO] Retrieving previous build number from engtools_snapshots
[FATAL ERROR] org.apache.maven.plugin.deploy.DeployMojo#execute() caused a 
linkage error (java.lang.AbstractMethodError) and may be out-of-date. Check 
the realms:
[FATAL ERROR] Plugin realm = 
app0.child-container[org.apache.maven.plugins:maven-deploy-plugin:2.4]
urls[0] = file:/C:/Documents and Settings/boo/.m2/repository/org/apache/
maven/plugins/maven-deploy-plugin/2.4/maven-deploy-plugin-2.4.jar
urls[1] = file:/C:/Documents and Settings/boo/.m2/repository/org/codehaus/
plexus/plexus-utils/1.1/plexus-utils-1.1.jar
[FATAL ERROR] Container realm = plexus.core
urls[0] = file:/C:/java/apache-maven-2.2.0/bin/../lib/maven-2.2.0-uber.jar
[INFO] ------------------------------------------------------------------------
[ERROR] FATAL ERROR
[INFO] ------------------------------------------------------------------------
[INFO] org.apache.maven.scm.command.checkout.AbstractCheckOutCommand.
executeCheckOutCommand(Lorg/apache/maven/scm/provider/ScmProviderRepository;
Lorg/apache/maven/scm/ScmFileSet;Lorg/apache/maven/scm/ScmVersion;)
Lorg/apache/maven/scm/command/checkout/CheckOutScmResult;
[INFO] ------------------------------------------------------------------------
[INFO] Trace
java.lang.AbstractMethodError: org.apache.maven.scm.command.checkout.AbstractCheckOutCommand.
executeCheckOutCommand(Lorg/apache/maven/scm/provider/ScmProviderRepository;
Lorg/apache/maven/scm/ScmFileSet;Lorg/apache/maven/scm/ScmVersion;)Lorg/apache/maven/scm/command/checkout/CheckOutScmResult;
 at org.apache.maven.scm.command.checkout.AbstractCheckOutCommand.executeCommand(
AbstractCheckOutCommand.java:49)
 at org.apache.maven.scm.command.AbstractCommand.execute(AbstractCommand.java:58)

推荐答案

如果查看wagon-scm的POM,您会发现它依赖于maven-scm-provider- *工件的1.0版本.在扩展部分中,您引用了1.3-SNAPSHOT版本.

If you look at wagon-scm's POM you'll see it has dependencies on the 1.0 versions of the maven-scm-provider-* artifacts. In your extensions section you've referenced the 1.3-SNAPSHOT versions.

从1.2版开始,AbstractCheckOutCommand的executeCheckOutCommand()方法不再是抽象的,而是通过附加的recursive参数委托给另一个抽象方法.由于此更改,您会得到链接错误.

From version 1.2 onwards, the AbstractCheckOutCommand's executeCheckOutCommand() method is no longer abstract, instead it delegates to another abstract method with an additional recursive parameter. Because of this change you get the linkage error.

解决此问题的最简单方法是将maven-scm-provider- *扩展名的版本更改为与wagon-scm所需的一致,即将1.3-SNAPSHOT版本更改为1.0或1.1版本.

The simplest way to remedy this is to change the versions of the maven-scm-provider-* extensions to be consistent with those required by wagon-scm, i.e. change the 1.3-SNAPSHOT versions for 1.0 or 1.1 versions.

值得指出的是,我认为使用SCM系统托管Maven存储库并不是一个好主意,尤其是对于SNAPSHOT工件而言.相反,我建议使用存储库管理器,它们在托管工件的基础上提供了许多有用的功能.

It's worth pointing out I think that using an SCM system to host your Maven repository is not really a good idea, particularly for SNAPSHOT artifacts. Instead I'd recommend using a repository manager, they provide lots of useful features on top of hosting the artifacts.

这篇关于无法使用SVN作为Maven存储库进行部署的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆