central - plugin execution not covered by lifecycle configuration org jfrog buildinfo artifactory maven plugin
Maven: intentando implementar con credenciales en el archivo settings.xml (2)
repositoryId=VeggieCorp
proporcionar la repositoryId=VeggieCorp
(no id
) para que maven sepa de qué configuración de <server>
tiene que leer las credenciales.
$ mvn deploy:deploy-file /
-Durl=http://repo.veggiecorp.com/artifactory/ext-release-local /
-Dfile=crypto.jar /
-DpomFile=pom.xml /
-DrepositoryId=VeggieCorp
Ver http://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html
Esto pareció funcionar la semana pasada y ahora no funciona.
- Usamos Artifactory como nuestro repositorio Maven.
- Estoy implementando un jar y pom usando el objetivo
deploy:deploy-file
- Nuestro repositorio de Artifactory requiere la implementación de la autenticación.
Puedo implementar en el repositorio insertando mis credenciales en la URL del servidor en la línea de comando:
$ 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] ------------------------------------------------------------------------
Sin embargo, todo el despliegue se registra y mis credenciales serían visibles en el registro. Por lo tanto, deseo poder implementar sin mis credenciales en la línea de comando. Para hacer eso, tengo un archivo $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>
Ahora, intentaré implementar de nuevo, pero sin poner el nombre de usuario y la contraseña en la 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]
(He reformateado el resultado para que sea más fácil de ver. Recibo un error 401 "No autorizado")
Entonces, ¿qué estoy haciendo mal? ¿Por qué no puedo usar mi archivo .settings.xml
para hacer mis credenciales? La parte de proxy funciona porque puede descargar los complementos necesarios desde el repositorio principal de Maven.
También puede especificar su id del repositorio de instantáneas en distributionManagement
<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>
los ID aquí deben coincidir con los de los servers