1

私は、maven を使用し、独自の nexus リポジトリ マネージャーを持っている 2 つの異なる会社のコンサルタントとして働いています。私は両方のリポジトリ マネージャーで maven を使用しましたが、正常に動作しますが、顧客を切り替えるたびに、リポジトリ マネージャーのアドレスがある settings.xml ファイルを変更する必要があります。

これを回避する方法はありますか?ビルドしているプロジェクトに基づいて、Maven にどのリポジトリ マンガガーを使用するかを判断させるには? 両方のプロジェクトの pom ファイルを簡単に編集し、必要に応じて異なるプロファイルを有効にすることができます。

4

4 に答える 4

1

最善の方法は、.m2/ を Git などの VCS の制御下に置き、別のブランチを使用して設定を変更することです (リポジトリ自体を無視します)。

git checkout CUSTOMER1

git checkout CUSTOMER2

それが私の現在の解決策です。非常にシンプルで効果的で、さらに、settings.xml に加えたすべての変更はバージョン管理下にあります。

于 2012-09-03T12:41:00.123 に答える
1

同様の状況で、顧客ごとに作業するときに異なるログインを使用すると思います。これは個人的なもの (メール アカウントなど) にとってはあまり便利ではありませんが、すべてが別々に保管されていることを知っていると安心です。

一方、これが心配でない場合は、マシンに Nexus を両方の顧客のリポジトリのプロキシとして設定することを検討してください。

于 2012-09-03T12:50:58.343 に答える
0

マシン上でプロキシとして実行するNexusのローカルコピーを設定することをお勧めします。それから、両方の外部リポジトリをプロキシします。

次に、さまざまなリポジトリにデプロイするという点では、プロジェクトの配布管理ですでにさまざまなURLを使用しているため、何もする必要はありません。

どうしてもそれらを分離する必要がある場合は、すべてを分離する2つの異なるsettings.xmlファイルを使用し、正しい設定ファイルを指定して-sを指定してmvnを呼び出すことをお勧めします。

便宜上、これらの呼び出しのシェルエイリアスを作成できます。

同じsettings.xmlとプロファイルを使用する場合、同じ分離はありませんが、機能します。次に、エイリアスを作成して、物事をよりクリーンにすることもできます。

于 2012-09-03T20:56:54.730 に答える
0

すべての回答に感謝しますが、最終的に別のアプローチがありました。それは、中央リポジトリを無効にして、各 pom にプロジェクトの nexus リポジトリを追加することでした。

これの欠点は、それが完全に機能する場合、親だけでなくすべての pom にある必要があることです。

ただし、これは各プロジェクトの 1 回限りの構成であり、各開発者が settings.xml に追加する必要があるのは、nexus リポジトリの資格情報のみであり、新しい開発者の起動がより簡単になります。

もう 1 つの欠点は、プロジェクトの外部で maven を実行すると、archetype:generatemaven が nexus リポジトリを認識しないため、コマンド ラインでそれを指定する必要があることです。私のsettings.xmlでデフォルトのレポを設定できると信じていますが、それ以上は調べていません。

また、どのプロジェクトに取り組んでいるのかを考える必要もありません。maven を実行すると、プロジェクトは使用するリポジトリを認識し、これは私にとって非常に重要です。

これが最善の解決策であることに誰もが同意するわけではないと思いますが、私にとってはうまくいき、オーバーヘッドは許容範囲内です。

これは、各pomの構成がどのように見えるかです

    <repositories>
      <repository>
        <id>my-nexus-repo</id>
        <url>http://nexus.mycompany.com/content/groups/private/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
    <repository>
        <id>central</id>
        <url>http://repo1.maven.org/maven2</url>
        <releases>
            <enabled>false</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>
<pluginRepositories>
    <pluginRepository>
        <id>my-nexus-repo</id>
        <url>http://nexus.mycompany.com/content/groups/private/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </pluginRepository>
    <pluginRepository>
        <id>central</id>
        <url>http://repo1.maven.org/maven2</url>
        <releases>
            <enabled>false</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </pluginRepository>
</pluginRepositories>
于 2012-10-19T06:35:12.043 に答える