Entschuldigen Sie sich für die Verwendung von Akronymen im Voraus.Fehlende transitive Maven-Abhängigkeit des lokalen Gefäßes
Ich arbeite ein Maven-Projekt Foo
, die auf einem lokalen Glas Bar
abhängt. Bar
ist auch mit Maven gebaut und da es ein lokales Glas ist, habe ich ein lokales Repo in Foo
's Ordnerstruktur erstellt, und legte das Glas dort.
Bar.jar
wird auf base_dir_of_Foo\repo\group_ID\artifact_ID\1.0-SNAPSHOT\Bar.jar
gesetzt.
Das Problem, das ich habe, ist, dass, wenn ich Foo
laufen lasse, es eine NoClassDefFoundError
wirft, weil es eine Klasse in einer der Bar
Abhängigkeiten nicht finden kann. Also, Foo
fehlt eine transitive Abhängigkeit durch Bar
.
Eine Sache zu beachten ist, dass, wenn ich mvn clean package
für Foo
laufen lasse, sah ich eine Warnung sagt "Missing POM for Bar". Foo
ruft B
mit Reflektion und Foo
kann Klassen in Bar
definiert finden, aber sieht aus wie A
kann Bar
's Abhängigkeiten nicht herausfinden. Irgendeine Idee, warum das passiert?
Lokale repos in Foo
‚s pom.xml
definiert:
<repositories>
<repository>
<id>local-repo</id>
<name>Local</name>
<url>file://${basedir}/repo</url>
</repository>
</repositories>
Schließlich Foo
wird in Abhängigkeit von Bar
mit Standard kompilieren -umfang:
<dependency>
<groupId>group_ID</groupId>
<artifactId>artifact_ID</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
Update: ich, warum pom gefunden von Bar wird nicht gefunden, weil wir Bar.jar auf lokales Repo setzen, maven wird nur über die JAR-Datei in lokale Repos kopieren iterory cache, es wird pom.xml nicht aus dem jar extrahieren, wird das erwartet?
Inside C: \ Benutzer \ hancwang.m2 \ repository \ Gruppen-ID \ Bar \ 1.0-SNAPSHOT, ich sehe Bar-1.0-snapshot.jar über kopiert werden, aber es gibt keine Bar-1.0-Snapshot. Pom.
do you Bar Quellcode mit Maven lokal bauen? – nandsito
Ja, tue ich, und dann kopiere ich Bar.jar zum lokalen Repo unter Foo. –
Bitte versuchen Sie meine Antwort – nandsito