Pertanyaan bagaimana cara mendapatkan arketipe maven dari nexus saya yang terautentikasi tanpa username dan kata sandi di URL?


Saya memiliki Nexus pribadi dengan repositori yang dilindungi melalui otentikasi.

Menarik pustaka berfungsi seperti jimat, tetapi jika saya ingin menggunakan salah satu arketipe yang tersimpan di sana, saya selalu perlu menulis nama pengguna dan kata sandi plaintext di URL katalog arketipe seperti ini:

mvn archetype:generate -DarchetypeCatalog=http://username:password@maven.mycompany.com/nexus/content/repositories/myrepo/archetype-catalog.xml

saya membaca http://maven.apache.org/archetype/maven-archetype-plugin/faq.html#authentication dan memperbarui settings.xml saya dengan apa yang saya pahami dari sedikit bantuan itu:

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                      http://maven.apache.org/xsd/settings-1.0.0.xsd">

  <servers>
    <server>
      <id>myrepo</id>
      <username>username</username>
      <password>{HASHED_PASSWORD}</password>
    </server>
    <server>
      <id>pretty-archetype-unicorn-repo</id>
      <username>username</username>
      <password>{HASHED_PASSWORD}</password>
    </server>
  </servers>

  <profiles>
   <profile>
     <id>someid</id>
     <repositories>
       <repository>
         <id>myrepo</id>
         <name>My Repo</name>
         <url>http://maven.mycompany.com/nexus/content/repositories/myrepo/</url>
       </repository>
     </repositories>
   </profile>
  </profiles>

  <activeProfiles>
    <activeProfile>someid</activeProfile>
  </activeProfiles>

</settings>

Tak perlu dikatakan, itu tidak berhasil dan ketika saya mencoba:

mvn archetype:generate -DarchetypeCatalog=http://maven.mycompany.com/nexus/content/repositories/myrepo/archetype-catalog.xml

Saya mendapatkan yang lama yang sama:

[WARNING] Error reading archetype catalog http://maven.mycompany.com/nexus/content/repositories/myrepo/archetype-catalog.xml
org.apache.maven.wagon.authorization.AuthorizationException: Access denied to: http://maven.mycompany.com/nexus/content/repositories/myrepo/archetype-catalog.xml

Ada petunjuk, atau dokumentasi yang lebih baik dengan contoh kerja?


5
2018-02-11 12:08


asal


Jawaban:


Saat ini tidak ada cara untuk melakukannya jika Anda tidak menentukan setidaknya -DarchetypeArtifactId. Sesuai dokumen resmi yang Anda tautkan:

The server id used to download the artifact is [archetypeArtifactId]-repo

maka tidak ada cara untuk menelusuri katalog jika kata sandi terlindungi (dan Anda tidak bersedia mengungkapkan nama pengguna / kata sandi pada riwayat shell Anda).

Sementara itu, Anda dapat melanjutkan dan memilih ARCHETYPE-204. Mereka memiliki patch yang sudah tersedia sejak bertahun-tahun, mereka mungkin hanya perlu sedikit dorongan.

MEMPERBARUI

Melihat ke dalam Kode sumber dari proyek pola dasar maven, terlihat seperti cuplikan berikut di settings.xml mungkin berhasil untuk Anda:

<servers>
    <server>
      <id>archetype</id>
      <username>${your username}</username>
      <password>${your password}</password>
    </server>
</servers>

Ada ID default dari archetype saat membangun Repository objek saat mengambil katalog jarak jauh. Saya tidak berpikir ini adalah cara resmi untuk menghadapi situasi seperti itu, dan itu agak kotor IMO. Tetapi mungkin masih berhasil untuk Anda :-)

Juga, Anda harus dapat mengatur profil untuk menggunakan kembali archetype ID untuk server berbeda.


8
2018-02-13 09:47



Saya pikir itu harus di settings.xml Anda

<servers>
    <server>
      <id>myrepo</id>
      <username>${your username}</username>
      <password>${your password}</password>
    </server>
</servers>

Anda perlu menambahkan <server> untuk setiap repositori yang dilindungi kata sandi.


1
2017-07-17 17:11



Sepertinya ini adalah masalah yang diketahui dan Anda tidak dapat menggunakan arketipe dari repositori yang dilindungi. Lihat https://issues.apache.org/jira/browse/ARCHETYPE-204

Ada solusi yang tersedia dengan melakukan hal berikut:

mvn archetype:generate -DarchetypeCatalog=https://username:password@maven.mycompany.com/nexus/content/repositories/myrepo/

1
2018-02-13 03:29