2016-07-27 7 views
-1

Ich habe ein Maven-Projekt (Proj1). In meiner Java-Klasse muss ich die Methode eines anderen Maven Proj (proj2) aufrufen.Java-Projektabhängigkeit von einem anderen Projekt

Hier bekomme ich verschiedene Kompilierzeitfehler, da diese Methode in meinem aktuellen Projekt (proj1) nicht verfügbar ist. Um das zu lösen, habe ich ganzen Methodencode genommen und diese Methode in meine aktuelle Java-Klasse eingefügt. Jetzt ist diese Methode in meinem Projekt verfügbar. Aber dann ruft diese Methode wieder wenig anderen Code aus anderen Klassen auf, die in meinem aktuellen Projekt nicht mehr verfügbar sind. Wieder musste ich den gesamten abhängigen Code aus anderen Klassen kopieren und einfügen. Dies geht weiter und weiter und zirkuläre Abhängigkeit ist da so gerade gefragt, wie ich diesen Fehler beheben kann. Ich habe einige Optionen, um dies zu beheben.

  1. Nehmen Quelle aller Klassen von proj2 macht ein Glas aus, dass und schließt, dass Glas in meinem Classpath Dieses paar Fehler behoben, aber dann gibt es einige Klassen von Dritten Gläsern, die noch Fehler geben.
  2. Jetzt plane ich für die zweite Option, in der ich pom.xml für proj2 habe. Ich baue daraus bauen. So dass alle notwendigen Gläser aus dem Repository heruntergeladen werden. Ausgabe dieses proj ist wieder jar namens proj2.jar.

Nun meine Frage ist

  1. Wenn ich nur proj2.jar in meinem Code enthalten, dann wird es alle die Abhängigkeit lösen?
  2. ODER Ich muss manuell alle Gläser in proj1 Klassenpfad hinzufügen, die dort in proj2 sind
  3. ODER muss ich src proj2 sowie Gläser aus proj2.jar hinzufügen?
  4. ODER gibt es einen besseren Weg als die oben genannten Optionen?
+1

fügen Sie ihn einfach als eine Abhängigkeit in Ihrer pom.xml und Maven wird damit umgehen. Das ist im Grunde, wofür Maven ist. – Stultuske

+0

Hey danke für deine Antwort. Also im Grunde muss ich nur Projekt2 erstellen, die proj2.jar erstellen und dann diese JAR-Datei in proj1 Klassenpfad hinzufügen? Hab ich recht? – Sachin

+0

nein. Sie müssen nur Ihr Projekt2 in Ihrem Repository haben und der pom.xml Ihres anderen Projekts mitteilen, dass eine Abhängigkeit von Ihrem Projekt besteht2. Beim Erstellen wird das Projekt2 aus dem Repository abgerufen und dem lokalen Repository hinzugefügt. Es muss nun – Stultuske

Antwort

3

Machen Sie alle Projekte verwenden Maven. In pom.xml an die Wurzel des Projekts mit Kopf folgenden (ich weiß nicht, Ihre Verpackungsstruktur so com.sachin ist Platzhalter Sie IDE fragen für Sie Maven Unterstützung hinzuzufügen.):

<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/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.sachin</groupId> 
    <artifactId>Proj2</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>jar</packaging> 
    <name>My Proj2</name> 

hinzufügen gleichen Header für Proj1 und fügen Abhängigkeit Proj1-Proj2:

<dependency> 
    <groupId>com.sachin</groupId> 
    <artifactId>Proj2</artifactId> 
    <version>1.0-SNAPSHOT</version> 
</dependency> 

nach maven buildProj2 wird als jar Abhängigkeit zu Proj1 hinzugefügt werden.

Wenn ich nur proj2.jar in meinen Code einschließe, wird es dann die Abhängigkeit auflösen?

Wenn Ihr proj2.jar hat pom.xml mit Abhängigkeiten dass proj2.jar Einsatz - dann ja werden sie während der Bau von proj1 mit Maven abgeholt werden.

Offizielle Dokumentation über Maven Dependency Mechanism

+0

Hey Rudziankoŭ danke für Ihre Antwort. Du hast recht. Danke noch einmal. – Sachin

+0

Sie müssen mvn Build auf beiden Projekten ausführen. Im Stammverzeichnis, in dem pom.xml vorhanden ist. Danach überprüfe dein lokales maven repository, finde dort proj2.jar. Danach stellen Sie sicher, dass Ihre IDE oder der Pfad "sys_var" über den Speicherort des lokalen Repositorys informiert ist. –

+0

Hallo, ich habe Ihre Methode verwendet, um die Abhängigkeit erfolgreich zu konfigurieren. Vielen Dank. Aber ich habe eine Frage. Was ist der Unterschied Ihrer Methode mit " ..."? –

Verwandte Themen