Maven: próba wdrożenia z poświadczeniami w Ustawieniach.plik xml

Wydawało się, że to działa w zeszłym tygodniu, a teraz nie.]}

  • używamy Artifactory jako naszego repozytorium Maven.
  • umieszczam słoik i pom za pomocą deploy:deploy-file celu
  • nasze repozytorium artefaktów wymaga uwierzytelnienia do wdrożenia.

Mogę wdrożyć do repozytorium, osadzając moje poświadczenia w adresie URL serwera w wierszu poleceń:

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

Jednak, to całe wdrożenie jest rejestrowane i moje dane uwierzytelniające będą widoczne w dzienniku. Dlatego Ja chcesz być w stanie wdrożyć bez moich poświadczeń w wierszu poleceń. Aby to zrobić, mam plik $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>

Teraz spróbuję jeszcze raz, ale bez wpisywania nazwy użytkownika i hasła w adresie 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]

(sformatowałem wyjście, aby było łatwiejsze do zobaczenia. Otrzymuję błąd 401" nieautoryzowanego")

Co robię źle? Dlaczego nie mogę użyć mojego pliku .settings.xml do wykonania moich poświadczeń? Część proxy działa, ponieważ może pobrać potrzebne wtyczki z głównego Repozytorium Maven.
Author: David W., 2012-08-20

2 answers

Musisz podać Właściwość repositoryId=VeggieCorp (nie id), aby maven wiedział, z której konfiguracji <server> ma odczytać dane uwierzytelniające.

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

Zobacz http://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html

 44
Author: Stefan Ferstl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-20 16:26:29

Możesz również określić swój identyfikator repozytorium migawek w 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>

Tutaj identyfikatory powinny pasować do tych w servers

 4
Author: xenoterracide,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-05 03:59:03