4

Subversion をMaven wagonを利用した Maven リポジトリとして使用しようとしています。プロトコルとして http を使用してスナップショットの場所を宣言すると、デプロイしようとするとサーバーから 409 エラーが返されます (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 に変更すると、状況がさらに奇妙になります。レルムに関連しているように見えるいくつかのエラーが発生します

<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 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)
4

1 に答える 1

2

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バージョンに変更します。

特にSNAPSHOTアーティファクトの場合、SCMシステムを使用してMavenリポジトリーをホストすることは実際には良い考えではないと指摘する価値があります。代わりに、リポジトリマネージャーを使用することをお勧めします。これらは、アーティファクトのホスティングに加えて、多くの便利な機能を提供します。

于 2009-09-06T19:15:50.040 に答える