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:
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).
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% .
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%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?