Mam pom dziecko z kilkoma wtyczkami. W moim pom pom, chcę wykluczyć jedną wtyczkę.maven exclude plugin zdefiniowany w rodzicu pom
Jak mogę to zrobić?
Mam pom dziecko z kilkoma wtyczkami. W moim pom pom, chcę wykluczyć jedną wtyczkę.maven exclude plugin zdefiniowany w rodzicu pom
Jak mogę to zrobić?
Możesz zadeklarować wszystkie wtyczki w twoim pom-rodzicu w zakresie <pluginManagement>
. W każdym dziecku możesz zadeklarować wtyczki używane przez to dziecko. W ten sposób możesz odpowiednio uwzględnić lub wykluczyć wtyczki.
Możesz również spojrzeć na to powiązane SO discussion.
Miałem podobny wymóg, aby uruchomić niektóre wtyczki w dziecku, ale nie nadrzędny POM. osiągnąłem to, podając <skip>true</skip>
w macierzystym POM.
pozycja dominująca pom jest poniżej
<plugin>
<groupId>eviware</groupId>
<artifactId>maven-soapui-plugin</artifactId>
<version>4.0.0</version>
<inherited>false</inherited>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
</dependency>
</dependencies>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
Wpis pom projekt dziecko jest poniżej
<plugins>
<plugin>
<groupId>eviware</groupId>
<artifactId>maven-soapui-plugin</artifactId>
<version>4.0.0</version>
<configuration>
<settingsFile>site-service-web/src/test/soapui/soapui-settings.xml</settingsFile>
<projectFile>site-service-web/src/test/soapui/PodifiSite-soapui-project.xml</projectFile>
<outputFolder>site-service-web/target/surefire-reports</outputFolder>
<junitReport>true</junitReport>
<exportwAll>true</exportwAll>
<printReport>true</printReport>
</configuration>
</plugin>
</plugins>
Można użyć profile aktywowany przez nieruchomości w celu ustalenia, czy wtyczka jest używany lub nie. Domyślnie właściwość mogła zostać aktywowana, a jeden projekt, w którym nie chcesz jej używać, może zawierać wartość właściwości, aby wykluczyć wtyczkę.
Można zdefiniować wszystkie wtyczki w macierzystej pom w sekcji pluginManagement
<pluginManagement>
<plugins>
...
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<id>unpack-dependencies</id>
<phase>generate-sources</phase>
<goals>
<goal>unpack-dependencies</goal>
</goals>
<configuration>
<includeTypes>tar.bz2</includeTypes>
<outputDirectory>${project.basedir}/target/dependencies</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
...
</plugins>
</pluginManagement>
A przecież w nadrzędnych i podrzędnych poms można kontrolować fazie realizacji tej wtyczki
<plugins>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<inherited>false</inherited>
<executions>
<execution>
<id>unpack-dependencies</id>
<phase>none</phase>
</execution>
</executions>
</plugin>
</plugins>
Jeśli wklej to w rodzic pom nie zapomnij opcji <inherited>false</inherited>
, jego wyłączenie dziedziczenia wykonania w potomnej pom.
dla mnie działa, dziękuje – sendreams
Działa to jak urok, a nawet ma tę zaletę, że wtyczka nigdy nie jest wykonywana w pierwszej kolejności. Użycie 'ignore' nadal będzie wywoływać wtyczkę, ale niech wtyczka się zdecyduje. Użycie 'phase = none' uniemożliwia Mavenowi nawet wyszukanie ścieżki klasy wtyczki, co może być pomocne w niektórych scenariuszach. – ctron
W moim przypadku mam wtyczkę, która jest używana przez 9 na 10 podmodułów. Pomyślałem, że łatwiej byłoby umieścić wtyczkę w rodzicu i pozwolić dziewięciorgu dzieciom odziedziczyć i powiedzieć dziesiątemu, aby wykluczyć. Wiem, o czym mówisz. Zastanawiasz się, czy możliwe jest wyłączenie wtyczki z projektu podrzędnego ... Jeśli maven nie ma takiej możliwości, to jest w porządku. Nie znam wszystkich mavenów, więc napisałem tutaj, żeby dowiedzieć się, czy maven ma taką cechę. – user373201
Ta odpowiedź nie odpowiada na pytanie, jak wykluczyć jakąś dziedziczoną wtyczkę. –