3

私は最終的にarchivaとmavenを使用した作業セットアップに非常に近づいています。

本当に私を悩ませている最後のことは、trueに設定されたactiveByDefaultを含むプロファイルを使用せずに、内部リポジトリとスナップショットリポジトリをセットアップする方法です。

私は SUPER スーパー pom を使用しています。これは、リリースの配布管理情報を含む全社的な pom です。この pom でリポジトリを指定し、settings.xml で認証設定を構成できると考えていましたか? プロファイルなしで repositories タグを使用できますか? 内部リポジトリとスナップショット リポジトリは決して変更されないため、「プロファイル」は存在しないはずです...

私が回避しようとしているのは、常にアクティブな「デフォルト」プロファイルを使用することです。activeByDefault はベスト プラクティスではないと聞きましたが、使用するつもりはありません。

そうは言っても、これを行うにはどうすればよいですか?私の内部リポジトリは Maven 中央リポジトリのミラーであるため、開発者をロックダウンして、内部アーティファクト サーバーのみを使用したいと考えています。覚えておいてください-activeByDefaultがtrueに設定されたプロファイルは必要ありません。私はこれを十分に強調することはできません!Maven ミラーを使用する必要がありますか? 追加のリポジトリを「追加」する必要がありますか?

mirrors タグの代わりに repositories タグを使用すると、Maven はデフォルトの Maven Central ではなく、私のアーカイブ設定のみを使用するようビルドを強制しますか?

または、私が達成しようとしていることは、maven の mirrors タグのみを使用して実行できるのでしょうか? リポジトリタグを使用する場合にリポジトリ資格情報を構成する方法は知っていますが、ミラーを使用する場合は知りません。これはどのように行われますか?mirrors タグの認証情報を提供することは、repositories タグの認証情報と同じですか?

明らかな何かが欠けていますか?ここまでは、maven を使用して起動して実行してきました。最終的には価値があることはわかっていますが、それは確かに私を非常に悪化させており、リソースはまばらに見えます. それか、人々はベストプラクティスに関係なく、好きなようにそれを使用して満足しています。

ありがとうございました

4

1 に答える 1

7

To use your internal repo as a mirror of central you need to setup a mirror like this (in settings.xml):

<mirrors>
    <mirror>
        <id>my-internal-repo</id>
        <mirrorOf>central</mirrorOf> // use * for do mirror of all
        <name>Clinker Maven Repository</name>
        <url>http://my-repo-host/my-repo-path</url>
    </mirror>
</mirrors>

If my-internal-repo is protected you can set credentials:

<servers>
    <server>
        <id>my-internal-repo</id>
        <username>youruser</username>
        <password>yourpassword</password>
    </server>
</servers>

Please, note the server id tag content should match the id of your mirror.

To use your internal-snapshots repository you must set a repository in your project POM, since the use of snapshots artifact should be controlled and clearly defined at the project level, not at the settings level:

<repository>
    <id>internal-snapshots</id>
    <url>http://your-repo-host/internal-snapshots-path</url>
    <releases>
        <enabled>false</enabled>
    </releases>
    <snapshots>
        <enabled>true</enabled>
    </snapshots>
</repository>

And finally, you must exclude internal-snapshots from the mirror:

<mirrors>
    <mirror>
        <id>my-internal-repo</id>
        <mirrorOf>central, !internal-snapshots</mirrorOf> // use * to do mirror of all
        <name>Clinker Maven Repository</name>
        <url>http://my-repo-host/my-repo-path</url>
    </mirror>
</mirrors>

and add a server (if it's protected):

<servers>
    <server>
        <id>my-internal-repo</id>
        <username>youruser</username>
        <password>yourpassword</password>
    </server>
    <server>
        <id>internal-snapshots</id>
        <username>youruser</username>
        <password>yourpassword</password>
    </server>
</servers>
于 2012-03-20T17:53:13.633 に答える