Чел съм това и че, Те имат основно едно и също съдържание, с изключение на някои разлики в формулировката. В последната има критична дума, която искам да посоча:
Конфигурационните елементи са рекурсивно обединени въз основа на името на елемента, ...
където в първия той просто казва:
Поведението по подразбиране е да се слее съдържанието наконфигурационния елемент според името на елемента. Ако детето POM има определен елемент, тази стойност става ефективна стойност. ако детето POM няма елемент, но родителят го прави, родителската стойност става ефективна стойност.
Моят въпрос е кога конфигурационният елемент е вложен елемент. Да кажем, че в моя родител pom.xml, имам:
<build>
<plugins>
<plugin>
<executions>
<execution>
<id>enforce-maven</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<bannedDependencies>
<excludes>
<exclude>com.my.group:my.id</exclude>
</excludes>
</bannedDependencies>
</rules>
</configuration>
...
Тогава в детето ми имам:
<build>
<plugins>
<plugin>
<executions>
<execution>
<id>enforce-maven</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<bannedDependencies>
<includes>
<include>com.my.group:my.id</include>
</includes>
</bannedDependencies>
</rules>
</configuration>
...
Както виждате, аз се опитвам include
зависимост, която родителят бомбардира exclude
изд. Тъй като елементът, който се опитвам да слее тук (<excludes>
и <includes>
) са вътре </rules>/</bannedDependencies>
, Не знам дали ще получа:
<build>
<plugins>
<plugin>
<executions>
<execution>
<id>enforce-maven</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<bannedDependencies>
<excludes>
<exclude>com.my.group:my.id</exclude>
</excludes>
<includes>
<include>com.my.group:my.id</include>
</includes>
</bannedDependencies>
</rules>
</configuration>
...
или точно това, което детето пом уточнява (с други думи, вложеният елемент в родителския pom се замества с елемента в детския pom).
Отговори:
1 за отговор № 1Вие ще получите и двете includes
и excludes
, Можете да проверите това, като изпълните mvn help:effective-pom
, Принудителният плъгин третира като изключения от изключенията, така че изключването и след това включването на същия артефакт трябва да има ефект, че не е забранен (въпреки че не съм тествал това).
Когато съм под съмнение относно наследяването на конфигурацията, си представям, че maven рекурсивно обединява конфигурационните елементи от съкровен елемент и навън, така че в този случай, bannedDependencies
елемент получава и двете includes
елемент от детето и детето excludes
елемент от родителя. Ако не искате детето да наследи нещо от. \ T bannedDependencies
елемент, можете да направите следното в детския pom:
<bannedDependencies combine.self="override">
...
</bannedDependencies>