これは先週機能しているようでしたが、今は機能しません。
deploy:deploy-file
目標を使用してjarとpomをデプロイしていますコマンドラインのサーバーURLに資格情報を埋め込むことで、リポジトリにデプロイできます。
$ mvn deploy:deploy-file \
-Durl=http://deployer:[email protected]/artifactory/ext-release-local \
-Dfile=crypto.jar \
-DpomFile=pom.xml \
-Did=VeggieCorp
yadda...yadda...yadda...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.962s
[INFO] Finished at: Mon Aug 20 10:06:04 CDT 2012
[INFO] Final Memory: 4M/118M
[INFO] ------------------------------------------------------------------------
ただし、その展開全体がログに記録され、資格情報がログに表示されます。したがって、コマンドラインで資格情報なしで展開できるようにしたいと考えています。それを行うには、$HOME/.m2/settings.xml
ファイルがあります。
<settings>
<proxies>
<proxy>
<active>true</active>
<protocol>http</protocol>
<Host>proxy.veggiecorp.com</Host>
<port>3128</port>
<nonProxyHosts>*.veggiecorp.com</nonProxyHosts>
</proxy>
</proxies>
<servers>
<server>
<id>VeggieCorp</id>
<username>deployer</username>
<password>swordfish</password>
</server>
</servers>
<profiles>
<profile>
<id>VeggieCorp</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<repositories>
<repository>
<id>VeggieCorp</id>
<name>VeggieCorp's Maven Repository</name>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
<checksumPolicy>warn</checksumPolicy>
</releases>
<snapshots>
<enabled>false</enabled>
<updatePolicy>always</updatePolicy>
<checksumPolicy>warn</checksumPolicy>
</snapshots>
<url>http://repo.veggiecorp.com/artifactory/ext-release-local</url>
<layout>default</layout>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>VeggieCorp</activeProfile>
</activeProfiles>
</settings>
次に、URLにユーザー名とパスワードを入れずに、もう一度デプロイを試みます。
$ mvn deploy:deploy-file \
-Durl=http://repo.veggiecorp.com/artifactory/ext-release-local \
-Dfile=crypto.jar \
-DpomFile=pom.xml \
-Did=VeggieCorp
yadda...yadda...yadda
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.751s
[INFO] Finished at: Mon Aug 20 10:17:15 CDT 2012
[INFO] Final Memory: 4M/119M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.Apache.maven.plugins:maven-deploy-plugin:2.7:deploy- file (default-cli) on project crypto:
Failed to deploy artifacts: Could not transfer artifact
com.veggiecorp:crypto:jar:2.0.0 from/to remote-repository
(http://mvn.veggiecorp.com/artifactory/ext-release-local):
Failed to transfer file:
http://mvn.veggiecorp.com/artifactory/ext-release-local/com/veggiecorp/crypto/2.0.0/crypto-2.0.0.jar.
Return code is: 401, ReasonPhrase:Unauthorized. -> [Help 1]
(見やすくするために出力を再フォーマットしました。401 "Unauthorized"エラーが表示されます)
それで、私は何を間違っていますか? .settings.xml
ファイルを使用して資格情報を実行できないのはなぜですか?プロキシ部分は、メインのMavenリポジトリから必要なプラグインをダウンロードできるため機能します。
repositoryId=VeggieCorp
(id
ではなく)プロパティを提供する必要があります。これにより、mavenがどの<server>
構成から資格情報を読み取る必要があるかがわかります。
$ mvn deploy:deploy-file \
-Durl=http://repo.veggiecorp.com/artifactory/ext-release-local \
-Dfile=crypto.jar \
-DpomFile=pom.xml \
-DrepositoryId=VeggieCorp
http://maven.Apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html を参照してください
DistributionManagementでスナップショットリポジトリIDを指定することもできます
<distributionManagement>
<repository>
<id>releases</id>
<url>${env.MAVEN_RELEASE_REPOSITORY_URL}</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<url>${env.MAVEN_SNAPSHOT_REPOSITORY_URL}</url>
</snapshotRepository>
</distributionManagement>
ここのIDはservers
のIDと一致する必要があります