0

ich das Git Repository von Apache ActiveMQ Artemis Projekt (https://github.com/apache/activemq-artemis) kloniert und tippte dannMaven einrichten zu (anstelle des Herunterladens) zu kompilieren Abhängigkeiten

mvn -Ptests test -pl :integration-tests 

Ich war überrascht zu sehen, Log-Meldungen wie die folgende

... 
Downloading: http://repository.apache.org/snapshots/org/apache/activemq/artemis-selector/1.4.0-SNAPSHOT/artemis-selector-1.4.0-20160625.030221-11.jar 
Downloading: http://repository.apache.org/snapshots/org/apache/activemq/artemis-core-client/1.4.0-SNAPSHOT/artemis-core-client-1.4.0-20160625.030211-11.jar 
... 

Seit z artemis-core-client ist in dem Git-Repository enthalten, das ich am Anfang geklont habe, ich hätte erwartet, dass Maven es nur von dort erstellt.

Auf diese Weise, wenn ich Änderungen in der Haupt-Client-Quelle mache, werden sie von den Integrationstests abgeholt.

Stattdessen lädt Maven das Jar aus dem Repository.

Frage: Wie konfiguriere ich Maven, um immer alle Module zu erstellen, die sich im Git-Repository befinden und nur "wahre" Abhängigkeiten herunterladen, was ich meine Sachen nicht im Git-Repository?

+2

Im Wesentlichen ist das gleiche wie diese Frage: http://stackoverflow.com/questions/33131880/maven-multi-modul-projekt-can not-find-sibling-modul Sie sollten Maven vom Root-Projekt aus starten und nicht direkt in einem Modul. Dies liegt daran, dass die Abhängigkeiten nicht installiert wurden, so dass Maven versucht, sie herunterzuladen. – Tunaki

+0

@Tunaki Also das "-pl: integration-tests" ist, was Maven zum Herunterladen bringt, anstatt es zu kompilieren. Recht? Weil ich mvn in dem Verzeichnis laufen lasse, in dem die .pom Datei des Hauptprojekts ist. – user7610

+0

Nein, im Hauptprojekt gibt es kein Integrationstest-Modul, überprüfe meine Antwort. Sie führen Maven im Test-/Hauptprojekt aus, nicht im Bibliotheks-/Hauptprojekt. –

Antwort

1

Sie führen nicht den Maven Build auf dem Hauptprojekt, auf der Haupt pom.xml, die unter anderem die artemis-selector und artemis-core-client Module definiert.

Sie führen den Maven Build auf dem tests und seinem pom.xml aus, wo nur Testmodule definiert sind. Dies ist ein Seiten-/Testprojekt, das die vorherige pom-Datei als übergeordnetes Element hat, aber in der Definition der übergeordneten Module keine Rolle spielt. Daher werden Abhängigkeiten nicht als Module aufgelöst, sondern als Maven-Abhängigkeiten.

Sie sollten zuerst das frühere Projekt installieren (über mvn clean install), so dass Bibliotheken in Ihrem lokalen Maven-Cache verfügbar sind (daher würde kein Download ausgelöst werden), dann führen Sie das tests Projekt aus.


Überprüfen Sie die official doc für eine Erbschaft vs Aggregation Unterschied um sie weiter zu klären.

Vom Stack-Überlauf, können die folgenden Themen auch interessant sein:

+0

"Zuerst sollten Sie (über mvn clean install) das frühere Projekt installieren:" Dies scheint etwas fehleranfällig zu sein, da es IMO sehr einfach ist, die Tests gegen eine andere Gruppe von Gläsern durchzuführen, als ich testen wollte. Ist das das Beste, was man mit Maven machen kann, oder könnte das Projekt besser konfiguriert werden? Ich werde eine neue Frage stellen, wenn du denkst, dass es nötig ist. – user7610

+0

@JiriDanek ist die Strategie, die ich für das Projekt gewählt habe, wahrscheinlich, um die Anzahl der Module zu reduzieren oder Integrationstests an einem anderen Hauptprojekt durchzuführen, um Probleme zu trennen (keine Integrationstests an Modulen, um keine Integrationstests zu erzwingen) Fortschrittscode?). Als eine andere Strategie könnte das gesamte Testseitenprojekt ein Profil des Hauptprojekts sein und seine Module dem gesamten Build hinzufügen. Aus einem Kommentar der Pom sieht es jedoch so aus, als könnte der gesamte Haupt-Build schon mehr als 2 Stunden dauern, also hat das wahrscheinlich auch bei dieser Wahl eine Rolle gespielt. –

+0

@JiriDanek Wenn das Ihnen geholfen hat, denken Sie bitte daran, die Antwort zu akzeptieren, damit die Frage nicht beantwortet wird (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) Als global unbeantwortet erscheinen. Vielen Dank. –

Verwandte Themen