Wie zu beheben Abhängigkeiten zwischen Module in multi-Modul-Projekt?

Nach der Arbeit mit Maven für eine Weile, ich bin Total begeistert von den vielen Funktionen, die Maven bringt in der Bau-Architektur, insbesondere das dependency-management. Allerdings habe ich eine Frage wieder und wieder - wie Maven Abhängigkeiten zwischen multi-module-Projekten. Ich Frage mich, ob dies ist das große Manko des aktuellen Maven-Implementierung und/oder wenn es eine befriedigende Lösung.

Sagen wir, ich habe ein multi-Modul-Maven-Projekt. Das Parent-pom enthält drei Module -- moduleA (jar), moduleB (jar), und moduleC(Krieg). B ist abhängig von A und C abhängt B. Einfach genug? Jetzt, wo ich laufen will mvn dependency:go-offline am übergeordneten Projekt, die angeblich zu lösen alle Abhängigkeiten auf und bringen Sie ins lokal .m2 Verzeichnis. Es schlägt fehl, da Maven beschwert sich, dass es nicht lösen kann, Abhängigkeit für moduleA, wenn es agiert auf moduleB. Da alle diese Module gehören zu einer Gruppen-id, die ich auch versuchen, Sie zu verwenden -DexcludeGroupIds=x.y.z auszuschließen diese Modul-Abhängigkeiten, aber es immer noch nicht am gleichen Punkt.

Verstehe ich, warum Maven beschwert sich - moduleA ist noch nicht gebaut und somit gibt es keine moduleA:jar-Artefakt in meinem lokalen oder internen repository beim gehen-offline-Ziel ausgeführt wird. Aber IMHO sollte das plugin behandeln diese inter-Modul-Abhängigkeiten unterschiedlich. In diesem Fall sollte es einfach ignorieren. Könnte man argumentiert, dass ich kann einfach nicht mvn clean installdie Installation moduleA:jar in das lokale repository. Danach läuft mvn dependency:go-offline wird sicher arbeiten. Aber das workaround Niederlagen der Zweck dieser go-offline-Ziel. Dieses plugin ermöglicht es uns, zu lösen und ziehen Sie die Abhängigkeiten in unserem lokalen repository ohne Gebäude das gesamte Projekt. Ich verwendet dependency:copy-dependencies Ziel in einem anderen Fall, und es hat das gleiche Problem.

Ich lief auch ähnliche Problem in anderen Szenarien: "mvn clean generieren-source" konnte nicht aufgelöst Abhängigkeiten. Bei mir lief mvn clean compile funktioniert alles einwandfrei, aber wenn ich ran mvn clean generate-sourcees schlägt fehl, da Maven sich nicht beheben, inter-Modul-Abhängigkeit. In diesem Fall, die verursacht wurde durch @requiresDependencyResolution im antrun-plugin.

Da beide antrun-plugin-dependency-plugin sind sehr beliebt in der Maven-Welt, ich bin sicher ich bin nicht der einzige, haben, laufen Sie in dieser Ausgabe. Jeder findet irgendeine Lösung/workaround?

InformationsquelleAutor der Frage Lan | 2013-02-04

Schreibe einen Kommentar