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