5

認証によって保護されたリポジトリを持つプライベートNexusがあります。

ライブラリをプルすることは魅力のように機能しますが、そこに保存されているアーキタイプの1つを使用する場合は、常に次のようにアーキタイプカタログのURLにプレーンテキストのユーザー名とパスワードを書き込む必要があります。

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

http://maven.apache.org/archetype/maven-archetype-plugin/faq.html#authenticationを読み、そのごくわずかなヘルプから理解した内容でsettings.xmlを更新しました。

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

言うまでもなく、それは機能しません。

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

私は同じ古いものを手に入れます:

[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

ヒント、または実用的な例を含むより良いドキュメントはありますか?

4

3 に答える 3

8

少なくともを指定しない場合、現在それを行う方法はありません-DarchetypeArtifactId。リンクした公式ドキュメントによると:

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

したがって、パスワードで保護されているカタログを閲覧する方法はありません(そして、シェル履歴にユーザー名/パスワードを公開したくない場合)。

それまでの間、 ARCHETYPE-204に投票してください。彼らは何年も前からすでに利用可能なパッチを持っています、彼らはおそらく少しのプッシュが必要です。

アップデート

Mavenアーキタイププロジェクトのソースコードsettings.xmlを調べると、次のスニペットが機能する可能性があります。

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

リモートカタログのフェッチ中にオブジェクトをarchetypeビルドするときのデフォルトIDがあります。Repository私はそれがそのような状況に対処する公式の方法ではないと思います、そしてそれは少し汚いIMOです。しかし、それでもあなたのために働くかもしれません:-)

archetypeまた、さまざまなサーバーのIDを再利用するためのプロファイルを設定できる必要があります。

于 2013-02-13T09:47:55.997 に答える
1

私はそれがあなたのsettings.xmlにあるべきだと思います

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

<server>パスワードで保護されたリポジトリごとに追加する必要があります。

于 2013-07-17T17:11:46.620 に答える
1

これは既知の問題のようで、保護されたリポジトリのアーキタイプを使用することはできません。https://issues.apache.org/jira/browse/ARCHETYPE-204を参照してください

次の手順を実行することで、回避策を利用できます。

mvn archetype:generate -DarchetypeCatalog=https://username:password@maven.mycompany.com/nexus/content/repositories/myrepo/
于 2014-02-13T03:29:34.450 に答える