2016-11-28 7 views
1

Ich habe ein Maven-Projekt läuft perfekt mit der pom.xml-Datei, um die benötigten JAR-Dateien zu erhalten. Leider hat die Datenbank, zu der ich mich verbinde, keine JAR-Dateien auf mvnrepository. Im Moment sitzen sie im Ordner Referenzierte Bibliotheken.Kann Maven sowohl lokale als auch Remote-Repositories verwenden?

enter image description here

Da diese Dateien sind Eigentum der Firma muss ich sie lokal halten. Ich habe Apache Archiva eingerichtet und die Dateien hinzugefügt.

Kann ich meine Projekt-Pom-Datei sowohl auf ein Remote-Repository als auch auf ein lokales Repository beziehen?

Antwort

2

Ja, Sie können, so etwas wie dieses:

<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 
          https://maven.apache.org/xsd/settings-1.0.0.xsd"> 
     <localRepository/> 
     <interactiveMode/> 
     <usePluginRegistry/> 
     <offline/> 
     <pluginGroups/> 
     <servers/> 
     <mirrors/> 
     <proxies/> 
     <profiles/> 
     <activeProfiles/> 
    </settings> 

Für weitere Informationen zu diesem Thema können Sie über here aussehen.

Sie können sich auch dieses ansehen.

Mit der folgenden Konfiguration Sie es erreichen können:

<localRepository>/dev/m2repo</localRepository> 
+0

Wie löst dies das Problem des OP? Sein Problem ist, dass Drittanbieter-JARs in keinem Repository (lokal oder remote) existieren. – manouti

2

Kann ich mein Projekt pom-Datei erhalte sowohl eine Remote-Repository und ein lokales Repository zu verweisen?

So funktioniert Maven bereits. Abhängigkeiten werden zuerst in Ihrem lokalen Repository nachgeschlagen. Wenn sie nicht vorhanden sind, werden sie vom Remote-Repository in das lokale Repository heruntergeladen. In diesem Fall müssen die Jars von Drittanbietern entweder in Ihrem lokalen Repository installiert oder noch besser im Remote-Repository bereitgestellt werden, damit andere Entwickler sie verwenden können.

  1. Idealer Sie diese Bibliotheken von Drittanbietern zu einem Remote-Repository bereitstellen würde ein Repository-Manager wie Sonatype Nexus verwenden. Wenn Sie einen Nexus-Repository-Manager verwenden, finden Sie unter https://books.sonatype.com/nexus-book/reference/using-sect-uploading.html, wie Sie dies tun. Dies würde auf Ihr genaues Szenario gilt, wie die verknüpfte Seite beschreibt:

    Wenn Ihre Build Verwendung von proprietären oder benutzerdefinierten Abhängigkeiten macht, die von öffentlichen Repositories nicht verfügbar sind, werden Sie oft müssen einen Weg finden, um sie zur Verfügung zu stellen an Entwickler in einem benutzerdefinierten Maven-Repository. Nexus Repository Manager Pro und Nexus Repository Manager OSS werden mit einem vorkonfigurierten Drittanbieter-Repository ausgeliefert, das für Abhängigkeiten von Drittanbietern ausgelegt ist, die in Ihren Builds verwendet werden.

    Dies kann auch die maven-deploy-plugin verwendet getan werden, aber erfordert, dass Sie in der pom.xml die Ziel-Repository zu konfigurieren, wie in der Dokumentation beschrieben.

    EDIT:

    Sie erwähnen Apache Archiva mit dem auch ein Repository-Manager, dass Sie die Artefakte zu seinem Repository implementieren kann. https://archiva.apache.org/docs/2.2.1/userguide/deploy.html erklärt, wie es geht. https://archiva.apache.org/docs/2.2.1/userguide/using-repository.html erklärt, wie Maven konfiguriert wird, um Abhängigkeiten von einem Archiva-Repository zu erhalten.

  2. Sie können auch die Bibliotheken installieren nur auf Ihrem lokalen Repository durch die maven-install-plugin ausgeführt wird:

    mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> \ 
    -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging> 
    

    https://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html See. Der Nachteil ist, dass andere Entwickler diesen Schritt machen müssen, um ihre Projekte zu erstellen.

Verwandte Themen