Как исключить pom.xml из Maven сгенерированной войны?
Используя Maven war plugin, я генерирую WAR, который включает следующий каталог:
META-INF
-- maven
-- com.abc.def
-- myServlet
-- pom.xml
-- pom.properties
В релизе я хочу исключить этот каталог maven. Как я могу это сделать?
Я попробовал последний плагин maven-war-plugin (2.1-beta-1), он имеет конфигурацию "packagingExcludes", но он не работает, как я желаю.
Любые предложения?
Ответы
Ответ 1
Используя стандартную упаковку Maven, вы не можете опустить файл, насколько мне известно. Тем не менее, можно использовать maven-assembly-plugin для построения войны, в этом случае у вас есть намного более тонкий контроль над содержимым артефакта, и может опустить pom.xml.
Однако я лично счел полезным хранить pom.xml для диагностических целей. Может быть полезно узнать, что было использовано для создания и сборки войны, когда пытались выяснить, что не так с вашим приложением.
Обновление: в причудливой бит синхронности на Pascal ответ, я только что читал в Ссылка на Archiver, и кажется, что это можно сделать, установив для свойства addMavenDescriptor
значение false. Лично я все равно не буду делать это по причинам, указанным выше. Но вы можете изменить свое согласие на ответ Паскаля.
Ответ 2
Я не уверен, но я думаю, что Maven Archiver (который в основном используется плагинами для обработки упаковки) можно настроить для достижения это.
О элементе <addMavenDescriptor>
, Maven Archiver Ссылка говорит:
Будет ли сгенерированный архив содержать эти два файла Maven:
- Файл pom, расположенный в архиве в
META-INF/maven/${groupId}/${artifactId}/pom.xml
- Файл
pom.properties
, расположенный в архиве META-INF/maven/${groupId}/${artifactId}/pom.properties
Значение по умолчанию - true.
Итак, настроенный таким образом pom должен сделать трюк:
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.0</version>
<configuration>
<archive>
<addMavenDescriptor>false</addMavenDescriptor>
</archive>
</configuration>
</plugin>
...
</plugins>
</build>
...
</project>
Ответ 3
Ввод папки META-INF в каталог ресурсов или в корневой каталог исходного каталога приведет к уничтожению содержимого META-INF, созданного Maven. Для файлов WAR, поместите META-INF в каталог вашего веб-контента, сделайте то же самое.
Добавление другого контента в этот пользовательский META-INF переопределит то, что создало maven.
Ответ 4
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1</version>
<configuration>
<warSourceExcludes>pom.xml</warSourceExcludes>
</configuration>
</plugin>
или
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1</version>
<configuration>
<warSourceExcludes>here/there/everywhere/a/pom.xml</warSourceExcludes>
</configuration>
</plugin>