Удалить файл из бана зависимости, используя maven
Я пытаюсь удалить файл из контейнера зависимости, который я включаю в свой военный файл в maven. Я развертываю войну в JBoss 5.1, и в обсуждаемом jar файле содержится файл persistence.xml, который мне не нужен.
Вот что происходит:
my-webapp.war
|
`-- WEB-INF
|
`-- lib
|
`-- dependency.jar
|
`-- META-INF
|
`-- persistence.xml
Когда я строю свою войну, я хочу удалить persistence.xml У любого есть идея, если это можно сделать легко?
Ответы
Ответ 1
Недоступно из коробки AFAIK, вам нужно будет использовать плагин Maven AntRun после package
, чтобы сделать несколько грязных вещей:
- распакуйте войну в каталог temp
- разархивируйте зависимость в другом временном каталоге
- удалить файл из зависимости
- zip каталог temp зависимости обратно в банку
- переместить зависимость обратно в каталог temp войны
- zip каталог temp webapp обратно в войну
- удалить временную директорию зависимостей
- удалить временную директорию webapp
Следующие ресурсы могут помочь
Теперь, если проблема в том, что JBoss развертывает блок персистентности, определенный в persistence.xml
(и вы этого не хотите), может быть лучшее решение. Кажется, что вы можете объявлять файлы для игнорирования в файле jboss-ignore.txt
, например:
WEB-INF/lib/dependency.jar/META-INF/persistence.xml
Функция есть, но я никогда не использовал ее.
См
Ответ 2
Вы можете достичь этого с помощью TrueZIP Maven Plugin.
Это должно работать в вашем случае использования:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>truezip-maven-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<id>remove-a-file-in-sub-archive</id>
<goals>
<goal>remove</goal>
</goals>
<phase>package</phase>
<configuration>
<fileset>
<directory>target/my-webapp.war/WEB-INF/lib/dependency.jar/META-INF</directory>
<includes>
<include>persistence.xml</include>
</includes>
</fileset>
</configuration>
</execution>
</executions>
</plugin>
Также см. примеры.
Ответ 3
Я предполагаю, что вам нужно будет использовать плагин maven shade (см. ссылку ниже)
Либо создайте Über-jar, который включает в себя вашу зависимость минус persistence-xml, либо просто преобразуйте зависимость в нечто новое, у которого нет persistence.xml.
Это должен быть путь:
http://maven.apache.org/plugins/maven-shade-plugin/examples/resource-transformers.html
Шон