Я пытаюсь контролировать, какие файлы попадают в WAR-пакет, созданный целью пакета mvn.В частности, я хочу исключить некоторые файлы из папки src / main / resources по умолчанию для каждого пакета
Ресурсы из каталога ресурсов по умолчанию (src/main/resources
) копируются в выходной каталог сборки (target/classes
) во время фазы process-resources
.Затем на этапе package
содержимое target/classes
берется и упаковывается в распределенный архив, например WAR, и в этом случае заканчивается на WEB-INF/classes
.
Итак, если вы хотитечтобы контролировать, какие ресурсы окажутся в WEB-INF/classes
, необходимо контролировать, какие ресурсы окажутся в target/classes
, т. е. каким-то образом изменить поведение цели, связанной с process-resources
фазой , в частности resources:resources
цель Maven Resources Plugin .
И для этого (вероятно, это не интуитивно понятно), вы можете объявить exclude
или include
элементы внутри resources
элементаpom, как показано в Включая и исключая файлы и каталоги .Применяется к каталогу ресурсов по умолчанию:
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>**/*.xml</exclude>
</excludes>
</resource>
</resources>
</build>
И если вы хотите использовать пользовательские правила исключения для разных сред, объедините это с profile .Например:
<project>
...
<profiles>
<profile>
<id>env-uat</id>
<activation>
<property>
<name>env</name>
<value>uat</value>
</property>
</activation>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>**/*.xml</exclude>
</excludes>
</resource>
</resources>
</build>
</profile>
</profiles>
</project>
И при использовании этого профиля XML-файлы не будут заканчиваться на target/classes
, и, следовательно, они не будут заканчиваться на WEB-INF/classes
в последней войне.
Я пытался использовать maven-war-plugin, но безуспешно.Если я добавлю эту конфигурацию (для тестирования) (...), мои WEB-INF / классы все равно будут содержать файлы XML
То, что вы делаете здесь, это добавление дополнительных каталог ресурсов, который представляется уже включенным каталогом ресурсов по умолчанию.Так что, что бы вы ни исключали, это не имеет никакого эффекта, так как файлы копируются в target/classes
во время process-resources
в любом случае и, таким образом, остаются в WEB-INF/classes
.
Другими словами, используйте webResources
, если вы хотите добавить дополнительные ресурсы, которые не являются частью каталога ресурсов по умолчанию:
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1</version>
<configuration>
<webResources>
<resource>
<!-- this is relative to the pom.xml directory -->
<directory>extra-resources</directory>
</resource>
</webResources>
</configuration>
</plugin>
</plugins>
</build>
...
</project>
Но я не думаю, что это то, чтоВы ищете здесь и предлагаете использовать подход, предложенный выше.