69

~/.m2/settings.xml で依存関係を取得するための Maven リポジトリを追加できることは承知しています。しかし、次のようなコマンドラインを使用してリポジトリを追加することは可能ですか:

mvn install -Dmaven.repository=http://example.com/maven2

これを実行したい理由は、maven を呼び出すために使用するコマンド ライン オプションを完全に制御できる継続的統合ツールを使用しているためですが、統合ツールを実行するユーザーの settings.xml を管理するのは少し手間がかかります。面倒なこと。

4

7 に答える 7

78

これを行うことはできますが、他の人が言っているように、POM で行う方がよいでしょう。

コマンド ラインでは、ローカル リポジトリのプロパティと、リモート リポジトリの別のリポジトリを指定できます。ただし、リモートリポジトリにはすべてのデフォルト設定があります

以下の例では、2 つのリモート リポジトリとカスタム ローカル リポジトリを指定しています。

mvn package -Dmaven.repo.remote=http://www.ibiblio.org/maven/,http://myrepo 
  -Dmaven.repo.local="c:\test\repo"
于 2009-07-28T12:04:53.650 に答える
8

Maven't Project Object Model (POM) の目標の 1 つは、成果物を確実に再現するために必要なすべての情報を取得することです。

目標を達成するには、各プロジェクトでユーザー レベルの settings.xml ファイルをチェックインし、-s (または --settings) オプションを使用してそれをビルドに渡します。

于 2008-09-18T20:46:23.813 に答える
6

コマンドラインを使用してそれを実行できるかどうかはわかりません。一方、次の例のように、 pom.xmlにリポジトリを追加できます。このアプローチを使用すると、〜/ .m2/settings.xmlファイルを変更する必要はありません。

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    ...
    <repositories>
            <repository>
                <id>MavenCentral</id>
                <name>Maven repository</name>
                <url>http://repo1.maven.org/maven2</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>false</enabled>
                </snapshots>
            </repository>
...
            <repository>
                <id>Codehaus Snapshots</id>
                <url>http://snapshots.repository.codehaus.org/</url>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
                <releases>
                    <enabled>false</enabled>
                </releases>
            </repository>
        </repositories>

    ...

        <pluginRepositories>
            <pluginRepository>
                <id>apache.snapshots</id>
                <name>Apache Snapshot Repository</name>
                <url>
                    http://people.apache.org/repo/m2-snapshot-repository
                </url>
                <releases>
                    <enabled>false</enabled>
                </releases>
            </pluginRepository>
            <pluginRepository>
                <id>Codehaus Snapshots</id>
                <url>http://snapshots.repository.codehaus.org/</url>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
                <releases>
                    <enabled>false</enabled>
                </releases>
            </pluginRepository>
        </pluginRepositories>

    ...

    </project>
于 2008-09-16T10:45:43.883 に答える
3

@Jorge Ferreiraがすでに言ったように、リポジトリ定義をpom.xmlに入れてください。プロファイルを追加的に使用して、コマンドラインから使用するリポジトリを選択します。

mvn deploy -P MyRepo2

mvn deploy -P MyRepo1
于 2008-09-18T18:45:26.663 に答える
3

ここでは、ビルドに新しいサードパーティのリポジトリを追加したい場合があるため、これを求めていると仮定します。もちろん私は間違っているかもしれません...:)

この場合の最善の策は、アーティファクトやネクサスなどのマネージドプロキシを使用することです。次に、settings.xmlを1回変更して、これを世界のミラーとして設定します。

その時点から追加する必要のあるサードパーティのリポジトリは、プロキシを介して処理できます。

于 2010-01-09T01:14:34.567 に答える
2

これまでmaven 2を実際に使用したことはありません.maven 2に問題があるため、システムはまだmaven 1.xで動作しています.

ただし、maven 2 のドキュメントを見ると、そのような特定のシステム プロパティはないようです。ただし、システム プロパティを使用して poms/settings に組み込むことができます。このhttp://maven.apache.org/settings.htmlのシステムプロパティの部分を参照してください

したがって、設定ファイルに ${maven.repository} があり、上記のように -Dmaven.repository を使用します。

これが機能するかどうかはわかりませんが、微調整を加えれば、何かを思い付くことができると確信しています。

于 2008-09-16T10:54:37.203 に答える
1

必要なリポジトリ設定を持つ POM を作成し、プロジェクト POM の親要素を使用して追加のリポジトリを継承します。プロジェクトのグループが 1 つのチームに属している場合、「組織」POM の使用には他にもいくつかの利点があります。

于 2008-09-18T18:58:43.263 に答える