我正在尝试使用 Subversion 作为 Maven 存储库梅文马车 http://maven.apache.org/wagon/wagon-providers/wagon-scm/。如果我使用 http 作为协议声明快照位置,则在尝试部署时会从服务器返回 409 错误(mvn clean 部署)
<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 时,事情变得更加奇怪 - 我收到几个似乎与领域相关的错误
<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>
单片机配置
<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部署)产生的部分堆栈跟踪
[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,您会发现它依赖于 1.0 版本的 maven-scm-provider-* 工件。在您的扩展部分中,您引用了 1.3-SNAPSHOT 版本。
从版本 1.2 开始,AbstractCheckOutCommand 的executeCheckOutCommand() 方法不再是抽象的,而是委托给另一个具有附加属性的抽象方法。recursive
范围。由于此更改,您会收到链接错误。
解决此问题的最简单方法是更改 maven-scm-provider-* 扩展的版本,使其与 wagon-scm 所需的版本一致,即将 1.3-SNAPSHOT 版本更改为 1.0 或 1.1 版本。
值得指出的是,我认为使用 SCM 系统来托管 Maven 存储库并不是一个好主意,特别是对于 SNAPSHOT 工件而言。相反,我建议使用存储库管理器 http://docs.codehaus.org/display/MAVENUSER/Maven+Repository+Manager+Feature+Matrix,除了托管工件之外,它们还提供了许多有用的功能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)