2012-08-01 11 views
7

documentationによると、Mavenリリース:perform goalはプロジェクトをチェックアウトし、新しいMavenインスタンスをフォークしてビルドします。何らかの理由でフォークされたインスタンスがユーザのsettings.xmlを無視しているように見えますが、私のケースでは、そのファイルには親pomのリポジトリのURLを構成するプロパティの定義があるためエラーが発生します。常にアクティブである "ネクサス" プロファイルのプロパティのMavenリリースからフォークされたプロセス:performプラグインはユーザーのsettings.xmlを無視しますか?

  • ユーザーズのsettings.xml
    定義。リポジトリのURLを構成するために定義されたプロパティの

    <profiles> 
        <profile> 
        <id>nexus</id> 
        <properties> 
         <dist.url>http://host.com/nexus/content/repositories</dist.url> 
        </properties> 
        </profile> 
    </profiles> 
    
    <activeProfiles> 
        <activeProfile>nexus</activeProfile> 
    </activeProfiles> 
    
  • 親ののpom.xml
    使用。

    <distributionManagement> 
        <repository> 
        <id>nexus</id> 
        <url>${dist.url}/releases</url> 
        </repository> 
    </distributionManagement> 
    
  • 実行コマンド:

    mvn release:perform 
    
  • 出力(それが正常にテスト、構築され、チェックアウトして、プロジェクトをパッケージ化した示した後):

    [INFO] Uploading: ${dist.url}/releases/com/acme/access/my-project/1.0/my-project-1.0.jar 
    [INFO] [INFO] ------------------------------------------------------------------------ 
    [INFO] [INFO] BUILD FAILURE 
    [INFO] [INFO] ------------------------------------------------------------------------ 
    [INFO] [INFO] Total time: 3.659s 
    [INFO] [INFO] Finished at: Wed Aug 01 14:40:23 EDT 2012 
    [INFO] [INFO] Final Memory: 21M/307M 
    [INFO] [INFO] ------------------------------------------------------------------------ 
    [INFO] [WARNING] The requested profile "nexus" could not be activated because it does not exist. 
    [INFO] [ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project my-project: Failed to deploy artifacts: Could not transfer artifact com.acme.access:my-project:jar:1.0 from/to nexus (${dist.url}/releases): Error transferring file: no protocol: ${dist.url}/releases/com/acme/access/my-project/1.0/my-project-1.0.jar -> [Help 1] 
    

お知らせ方法forkされたMavenインスタンスは$ {dist.url}にアップロードしようとしています。これは、settiで定義されたプロパティngs.xmlは読み込まれませんでした。また、警告メッセージは、プロファイル「nexus」が見つからなかったことを通知します。私は主なMavenインスタンスがプロファイル情報をフォークされたインスタンスに渡してそれを探すことを知っていたと仮定していますが、ユーザのsettings.xmlを無視(または見つけられなかった)したので、そのプロファイルを見つけることができませんでした。

私はこれを回避するために発見した唯一の方法は、手動で

mvn release:perform -Darguments="-s C:\Users\theuser\.m2\settings.xml" 

のように、プラグインのarguments引数で「ラップ」Mavenのコマンドライン-s引数の使用によりsettings.xmlファイルの場所を指定することですプラグインは期待どおりに正しい動作をしていますか?上記のようにファイルの場所を指定することなく、ユーザのsettings.xmlの中にプロパティ定義を保持する方法はありますか?

詳細情報:

  • 問題はそれを動作させないグローバルsettings.xmlにプロファイル情報をコピーするようプラグインは、ユーザーのsettings.xmlを見つけないと特異的のようです。

  • 実行中のhelp:active-profilesは、プロファイルがアクティブであることを示しているため、ユーザーのsettings.xmlの名前は正しく/作成されています。 mvn clean deployで手動でビルドしてデプロイすることも正しく動作します(つまり、リポジトリURLが正しく計算され、成果物がアップロードされます)。

+0

私のケースでは、同様のタイプのissueと思われます.http://stackoverflow.com/questions/18636196/maven-issue-the-goal-you-specified-requires-a-project-to-execute-bhere-there -is –

答えて

10

これは必ずしもmaven-release-pluginのバグではありません。このMavenのバグに遭遇したようです:MNG-5224 バグはMaven 3.0.4で修正する必要があります。

+1

この動作を知っておいて良かったのは、バグとみなされます。ありがとう! – jsiqueira

+0

Maven 3.0.4で同じ問題が発生しました - r1232337 – Aure77

+0

Maven 3.3.3と同じ問題... – gogognome

関連する問題