web-dev-qa-db-fra.com

Maven: tentative de déploiement avec des informations d'identification dans le fichier settings.xml

Cela semblait fonctionner la semaine dernière et maintenant ce n'est plus le cas.

  • Nous utilisons Artifactory comme référentiel Maven.
  • Je déploie un pot et un pom en utilisant le deploy:deploy-file objectif
  • Notre référentiel Artifactory nécessite une authentification pour être déployé.

Je peux déployer dans le référentiel en intégrant mes informations d'identification dans l'URL du serveur sur la ligne de commande:

 $ 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] ------------------------------------------------------------------------

Cependant, l'ensemble de ce déploiement est enregistré et mes informations d'identification seraient visibles dans le journal. Par conséquent, je souhaite pouvoir déployer sans mes informations d'identification sur la ligne de commande. Pour ce faire, j'ai un $HOME/.m2/settings.xml fichier:

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

Maintenant, je vais essayer de déployer à nouveau, mais sans mettre le nom d'utilisateur et le mot de passe dans l'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]

(J'ai reformaté la sortie pour la rendre plus facile à voir. J'obtiens une erreur 401 "Non autorisé")

Alors, qu'est-ce que je fais mal? Pourquoi ne puis-je pas utiliser mon .settings.xml fichier pour faire mes informations d'identification? La partie proxy fonctionne car elle peut télécharger les plugins nécessaires à partir du référentiel Maven principal.

35
David W.

Vous devez fournir le repositoryId=VeggieCorp (pas id) pour que maven sache à partir de laquelle <server> configuration, il doit lire les informations d'identification.

$ mvn deploy:deploy-file \
 -Durl=http://repo.veggiecorp.com/artifactory/ext-release-local \
 -Dfile=crypto.jar \
 -DpomFile=pom.xml \
 -DrepositoryId=VeggieCorp

Voir http://maven.Apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html

47
Stefan Ferstl

Vous pouvez également spécifier votre ID de référentiel d'instantanés dans 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>

les identifiants ici doivent correspondre à ceux de servers

4
xenoterracide