Frage

Ich bin mir bewusst, ich Maven-Repositories zum Abrufen von Abhängigkeiten in ~ / .m2 / settings.xml hinzufügen kann. Aber ist es möglich, ein Repository mit der Befehlszeile hinzuzufügen, so etwas wie:

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

Der Grund, warum ich dies tun möchte, ist, weil ich eine kontinuierliche Integration-Tool bin mit dem ich die volle Kontrolle über die Kommandozeilenoptionen haben es verwendet Maven zu nennen, aber die settings.xml für den Benutzer verwalten, die die Integration Tool läuft ist ein bisschen umständlich.

War es hilfreich?

Lösung

Sie können dies tun, aber du bist wahrscheinlich besser dran, es in der POM tun wie andere gesagt haben.

Auf der Kommandozeile können Sie eine Eigenschaft für das lokale Repository angeben, und ein anderes Repository für die Remote-Repositories. Das Remote-Repository werden alle Standardeinstellungen obwohl

Das folgende Beispiel gibt zwei Remote-Repositories und eine benutzerdefinierten lokale Repository.

mvn package -Dmaven.repo.remote=http://www.ibiblio.org/maven/,http://myrepo 
  -Dmaven.repo.local="c:\test\repo"

Andere Tipps

Eines der Ziele für Maven't Projekt Object Model (POM) ist es, alle Informationen zu erfassen, benötigt, um zuverlässig ein Artefakt zu reproduzieren, also Einstellungen vorbei das Artefakt Schöpfung auswirken wird dringend abgeraten.

Ihr Ziel zu erreichen, können Sie überprüfen, in Ihrer Benutzerebene settings.xml mit jedem Projekt und verwenden Sie die sie (oder --settings) Option, um den Build zu übergeben.

Ich bin nicht sicher, ob Sie es mit der Befehlszeile tun können. Sie können auf der anderen Seite hinzufügen Repositories in der pom.xml , wie im folgenden Beispiel. Mit diesem Ansatz müssen Sie nicht ändern Sie die ~ / .m2 / settings.xml Datei.

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

Als @Jorge Ferreira bereits die Repository-Definitionen in der pom.xml setzen. Verwenden Sie Profile adittionally das Repository auszuwählen über die Befehlszeile zu verwenden:

mvn deploy -P MyRepo2

mvn deploy -P MyRepo1

Ich werde hier davon ausgehen, dass Sie dies zu fragen, weil Sie gelegentlich eine neue 3rd-Party-Repository in Ihren Builds hinzufügen mögen. Ich kann natürlich falsch sein ...:)

Ihre beste Wette ist in diesem Fall ein verwaltetes Proxy wie artifactory oder Nexus zu verwenden. Dann machen Sie eine einmalige Änderung in settings.xml dies für die Welt als Spiegel einzurichten.

Jede dritte Partei repos, die Sie benötigen von diesem Punkt an hinzuzufügen kann über den Proxy behandelt werden.

Ich habe nicht wirklich 2 verwendet Maven vor, unser System immer noch auf Maven 1.x arbeitet wegen einiger Probleme mit Maven 2.

Doch in der Dokumentation suchen 2 für Maven scheint es, dass es so nicht irgendwelche spezifischen Systemeigenschaften sind. Sie könnten jedoch wahrscheinlich eine in Ihrer Poms / Einstellungen bauen, um die Systemeigenschaften verwenden. Siehe Systemeigenschaften Teil dieser http://maven.apache.org/settings.html

So Sie $ haben würden {maven.repository} in Ihrer Einstellungsdatei und dann die -Dmaven.repository verwenden, wie Sie oben tun.

Ich bin nicht sicher, ob dies funktionieren würde, aber mit einigen Optimierungen Ich bin sicher, dass Sie mit etwas oben kommen können.

Erstellen Sie ein POM, das die Repository-Einstellungen, die Sie wollen, und dann ein übergeordnetes Element in Ihrem Projekt POMs verwenden, um die zusätzlichen Repositories zu erben. Die Verwendung einer „Organisation“ POM hat einige andere Vorteile, wenn eine Gruppe von Projekten zu einem Team gehören.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top