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が正しく計算され、成果物がアップロードされます)。
私のケースでは、同様のタイプのissueと思われます.http://stackoverflow.com/questions/18636196/maven-issue-the-goal-you-specified-requires-a-project-to-execute-bhere-there -is –