Ist es möglich, ein Plugin in der Eltern POM, die deaktiviert ist, definiert haben, und wenn das Kind erbt dieses Plugin wird es automatisch aktiviert?automatisch aktivieren Eltern-Plugin in Maven
Antwort
Ich denke, das Plugin in Ihrer Eltern pom konfigurieren möchten , aber verwende es nur in den geerbten Projekten. Maven hat einen Abschnitt dafür - konfiguriere deine Plugins in pluginManagement, binde sie aber an eine Phase, wenn du sie brauchst, z. Lassen Sie das Phasen-Tag in pluginManagement aus, geben Sie es jedoch in Ihrem geerbten Pom an.
Soweit ich weiß, gibt es dafür keine generische Lösung. Zumindest für den Moment ...
Eine Idee (ich habe es nicht versuchen, aber es arbeiten kann) ist, in der übergeordneten pom.xml ein Ausführungs Ziel zu definieren, die zum Beispiel nicht existiert:
<executions>
<execution>
<goals>
<goal>noGoal</goal>
</goals>
</execution>
</executions>
und in jedem Kind definieren Sie ein korrektes Ziel neu.
Das Problem dieser Lösung (wenn es natürlich funktioniert;)) ist, dass Sie die Plugin-Konfiguration für jedes Kind neu definieren müssen. Andernfalls wird es nicht ausgeführt.
Ja, ich dachte an etwas ähnliches, aber wie Sie das verkleinern dieses Ansatzes gesagt ist, dass ich um dies in jedem Kind zu konfigurieren, das ich nicht machen möchte. – kukudas
Sie können ein Plug-in auf der obersten Ebene deklarieren und angeben, dass es übersprungen werden soll, und dann angeben, dass es auf der untergeordneten Ebene nicht übersprungen werden soll. Es ist nicht ganz automatisch, aber sehr minimal in der Override-Ausführlichkeit.
Eltern Pom, das Plugin zu deaktivieren, aber erklärt, alle config:
<plugin>
<groupid>org.apache.maven.plugins</groupid>
<artifactid>maven-surefire-plugin</artifactid>
<configuration>
<skip>true</skip>
...lots more config...
...lots more config...
...lots more config...
</configuration>
</plugin>
Kind Pom, so dass das Plugin:
<plugin>
<groupid>org.apache.maven.plugins</groupid>
<artifactid>maven-surefire-plugin</artifactid>
<configuration>
<skip>false</skip>
</configuration>
</plugin>
Das funktioniert leider nur, wenn das jeweilige Plugin "skip" als Konfiguration anbietet. Nicht alle Plugins! – jbandi
Das ist nicht genau das, was Sie wollen, aber ich denke, es wird gut genug für Sie arbeiten.
Wenn Sie das Plug-in in einem pluginManagement-Tag im Parent deklarieren, wird die Konfiguration von allen untergeordneten Projekten übernommen, die dieses Plugin deklarieren.
Zum Beispiel deklarieren Sie im übergeordneten Objekt, dass das Kompilier-Plugin Java 5 für die Testkompilierung verwendet.
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
</plugin>
</plugins>
</build>
'siddhadev' ist genau richtig so:
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<executions>
<execution>
<id>test-compile</id>
<goals>
<goal>testCompile</goal>
</goals>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
Dann wird in einem Kind, du einfach die Compiler-Plugin und die Konfiguration von den übergeordneten geerbt werden erklären.
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>child-caller</id>
<!-- 'phase' omitted -->
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo message="called from child!" />
</tasks>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>
Und in dem Kind POM, können Sie explizit die Phase aufzuzählen, in denen diese aufgerufen werden soll: Sie können mit einer bestimmten ID der Plugin-Konfiguration in der übergeordneten pom definieren
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>child-caller</id>
<phase>compile</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>
I‘ Dies wurde zum Targeting verschiedener JREs verwendet. Da Sie das maven-compiler-plugin nicht mit verschiedenen Zielverzeichnissen verwenden können (was ich für einen Bug im Plugin halte), müssen Sie leider Ant verwenden.
ging ich mit folgenden Lösung:
Konfigurieren Sie das Plugin in den Eltern-pom im pluginManagement Schnitt. Binden Sie das Plugin an eine bestehende Phase.
Deaktivieren Sie das Plug-in für das Eltern-Pom, indem Sie es an eine nicht vorhandene Phase binden: Überschreiben Sie die Phase im Plugins-Abschnitt.
Aktivieren Sie das Plugin in jedem Child-Pom, indem Sie das Plug-in in den Plugins-Bereich einfügen.
Beispiel Eltern-pom:
<defaultGoal>install</defaultGoal>
<pluginManagement>
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<executions>
<execution>
<id>install-ejb-client</id>
<phase>install</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<file>${ejb-client-file}</file>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
<packaging>jar</packaging>
<classifier>client</classifier>
</configuration>
</execution>
</executions>
</plugin>
...
</plugins>
</pluginManagement>
<plugins>
<plugin>
<!-- deactivate the plugin for this project, only child-projects do generate ejb-clients -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<inherited>false</inherited>
<executions>
<execution>
<id>install-ejb-client</id>
<phase>none</phase>
</execution>
</executions>
</plugin>
...
</plugins>
</build>
Beispiel kinder pom:
<build>
<plugins>
...
<plugin>
<!-- Install the generated client-jar. Property 'ejb-client-file' has to be set! Plugin configuration is in the parent pom -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
</plugin>
...
</plugins>
</build>
- 1. Suchleiste UISearchController automatisch aktivieren
- 2. Wie Elternprojekt automatisch in Maven
- 3. Update Maven Abhängigkeiten automatisch
- 4. Maven überspringt automatisch Tests
- 5. Import neue Maven Modul in Eclipse automatisch
- 6. Wie findbugs automatisch in maven laufen
- 7. die "Build automatisch" und Maven in Eclipse
- 8. Maven - aktivieren Kind Profil basierend auf Eigenschaft
- 9. Aktivieren von GRUB automatisch vom Kernel booten
- 10. WSDL2Code (Maven) generiert automatisch beschädigte Klassen (Pakete)
- 11. Aktivieren Sie Debug Logging in Maven Jetty 7 Plugin
- 12. Maven: Eigenschaft Profil in Sub-Modulen zu aktivieren
- 13. Wie automatisch xmlbeans generierten Code in maven jar?
- 14. Wie Maven automatischen Import automatisch in IntelliJ IDEA zu deaktivieren?
- 15. Tabellenspalten automatisch ausblenden, indem Sie ein Kontrollkästchen mit jQuery aktivieren.
- 16. Prise zum Zoomen automatisch aktivieren/deaktivieren WKWebView und viewForZoomingInScrollView
- 17. wie man tomcat server automatisch durch tomcat 7 maven plugin
- 18. Wie automatisch lexer + Parser mit ANTLR4 und Maven generieren?
- 19. Java-Version automatisch zu Java 1.5 nach Maven Update
- 20. Code-Generierung in Maven
- 21. IntelliJ: Maven Projekte müssen importiert werden: Import Änderungen Auto-Import aktivieren
- 22. Maven-Befehlszeile
- 23. Maven Installationseinstellungen nicht in Jenkins
- 24. Prüfen automatisch
- 25. aktivieren HeapDumpOnOutOfMemoryError in Runtime
- 26. Tabelle in Wordpress aktivieren
- 27. Anwendungscache in WKWebView aktivieren
- 28. Auswahl in Sublime aktivieren
- 29. LongClick in WebView aktivieren
- 30. Wie automatisch Start für eine App in Xiaomi programmgesteuert zu aktivieren
Wie ist das besser als Rich Stellers Antwort (http://stackoverflow.com/questions/495314/automatically-activate-parent-plugin-in-maven/1209728#1209728)? Welchen Nutzen hat dieser Ansatz gegenüber dem pluginManagement? –
@JimHurne Wenn Sie auswählen möchten, welche Ausführungen Sie dann im untergeordneten Pom angeben müssen, sollten Sie die Phase im übergeordneten Element angeben, wenn Sie dies immer tun möchten. –