maven-extension

___ answer36253007 ___

Tatsächlich ist die offizielle Maven POM-Referenz nicht klar über die mögliche Verwendung von %code% als Teil von ein Maven-Profil, da es besagt, dass Sie ein %code% -Element darin haben können, aber nicht was vom %code% -Abschnitt.

Aber das offizielle Maven-Modell filtert effektiv und liefert was von %code% Abschnitt, den Sie tatsächlich in einem Abschnitt %code% verwenden können. Und tatsächlich ist %code% nicht da .

Was sind Maven Erweiterungen? Build / Lifecycle-Erweiterung, aber auch (und im Wesentlichen): eine Bibliothek, die dem Laufzeitklassenpfad des Maven-Builds hinzugefügt wurde, der am Build beteiligt ist, aber nicht mit dem endgültigen Artefakt verpackt ist.

In einem solchen Szenario (wenn Sie Erweiterungen im Profil haben oder ein Profil haben müssen, um eine Erweiterung zu ändern / hinzuzufügen), könnten Sie den folgenden Trick verwenden:

  • Haben Sie eine harmlose Erweiterung als Standard-Erweiterung Ihres Builds (wobei harmlos jede Bibliothek bedeutet, die Teil Ihres Build-Klassenpfads sein könnte und diese im Grunde überhaupt nicht beeinflusst)
  • Eigenschaften, die die GAV-Koordinaten definieren ( G roupId, A rtifactId, V Version) dieser Erweiterung
  • Verfügen Sie über ein Profil, das diese Eigenschaften mit der gewünschten (nützlichen) Erweiterung
  • überschreibt

Als Beispiel wird das folgende POM-Beispiel angegeben:

%Vor%

Der Standard-Build (ohne das %code% -Profil aktiviert) würde den standardmäßig definierten %code% verwenden und so %code% als Build-Erweiterung hinzufügen: das ist harmlos (obwohl es Konflikte mit einem anderen %code% -Version verursachen kann) von Ihrem Build, also stellen Sie sicher, dass Sie die gleiche Version verwenden, verwenden Sie eine noch harmlosere Bibliothek dafür).

Sie können überprüfen, ob Maven es abholt, indem Sie eine wirklich Build-Phase ausführen , nur um die Informationen in unserem Fall zu prüfen und das Debug-Flag zu aktivieren:

%Vor%

Und Überprüfung als Teil des Build-Protokolls:

%Vor%

Lasst uns nun unseren Trick verwenden: Lassen Sie uns eine Build-Erweiterung über das Profil hinzufügen (ändern):

%Vor%

Und als Teil unseres Build-Logs hätten wir:

%Vor%

Bingo. Maven hat eine andere Erweiterung (in diesem Fall eine andere Version, %code% ) ausgewählt und es ist uns gelungen, eine Build-Erweiterung über das Profil zu ändern (oder tatsächlich hinzuzufügen).

    
___ qstnhdr ___ Maven 3 Profil mit Erweiterungen ___ answer17824725 ___

Nur eine verrückte Idee: Module verwenden

Definieren Sie ein Elternteil %code% wie folgt:

%Vor%

Definieren Sie die gewünschten Erweiterungen für %code% und %code% .

    
___ answer41061311 ___

Ich denke, die Lösung ist hier Ссылка

Definieren Sie einen Build-Abschnitt, in dem Erweiterungen definiert sind, und setzen Sie dann das Attribut im Attribut auf true (wie im zweiten Profil unten)

%Vor%     
___ tag123maven ___ Apache Maven ist ein Build-Automation- und Projektmanagement-Tool, das hauptsächlich für Java-Projekte verwendet wird. Dieses Tag ist für Fragen gedacht, die sich nicht auf eine bestimmte Maven-Version beziehen. Verwenden Sie stattdessen den Gradle-Tag für Fragen zu Gradle. ___ tag123mavexextension ___ Erweiterungen sind eine Liste von Artefakten, die in diesem Build verwendet werden sollen. Sie werden in den Klassenpfad des laufenden Builds aufgenommen. Sie können Erweiterungen für den Build-Prozess aktivieren und Plugins aktivieren, die Änderungen am Build-Lebenszyklus vornehmen ___ qstntxt ___

Meine Frage wurde in diesem Thread behandelt, aber der Erklärung ist nicht klar.

Ich habe diese Build-Definition in einer meiner pom.xml-Dateien:

%Vor%

Beachten Sie, dass ich die Erweiterung maven-s3-wagon verwende. Als nächstes möchte ich 2 verschiedene Profile haben, jedes mit eigenen Einstellungen, Plugins und Erweiterungen, aber maven erlaubt das Extension-Tag nicht unter einem Profil.

Wenn ich versuche, ein Profil zu verwenden:

%Vor%

Ich bekomme einen Fehler in meinem Pom:

%Vor%

Frage Wenn ich also das Extension-Tag verwende, kann ich keine Profile verwenden? Wie kann ich Build-Erweiterungen über ein Profil verwenden oder ändern?

    
___ tag123buildprozess ___ Die Reihenfolge der Aktionen, die zum Erstellen eines Softwareprodukts oder einer ausführbaren Anwendung erforderlich sind, oder das System, das solche Aktionen ausführt. ___ tag123mavenprofiles ___ Profile dienen dazu, Maven-Builds ein paar zusätzliche Verhaltensweisen zu verleihen, mit einer Reihe von Eigenschaften, Plugins oder Aktionen ___ tag123maven3 ___ Apache Maven ist ein Werkzeug für Projektmanagement und Build-Automatisierung. Dieser Tag ist für Fragen zu Maven Version 3.x gedacht. Für nicht versionsspezifische Fragen verwenden Sie bitte das [maven] -Tag. ___
3
Antworten

Maven 3 Profil mit Erweiterungen

Meine Frage wurde in diesem Thread behandelt, aber der Erklärung ist nicht klar. Ich habe diese Build-Definition in einer meiner pom.xml-Dateien: %Vor% Beachten Sie, dass ich die Erweiterung maven-s3-wagon verwende. Als nächstes möchte...
14.07.2013, 13:23