Удалить файл из jar зависимостей с помощью maven

Я пытаюсь удалить файл из jar зависимостей, который я включаю в свой файл war в maven. Я развертываю войну в JBoss 5.1, и рассматриваемая банка содержит настойчивость.xml-файл, который мне не нужен.

вот что происходит:

my-webapp.war
|
`-- WEB-INF
    |
    `-- lib
        |
        `-- dependency.jar
            |
            `-- META-INF
                |
                `-- persistence.xml

когда я строю свою войну, я хочу удалить настойчивость.xml кто-нибудь знает, можно ли это сделать легко?

3 ответов


недоступно из коробки AFAIK, вам придется использовать плагин Maven AntRun после package сделать несколько грязных вещей:

  • распаковать войну во временном каталоге
  • распакуйте зависимость в другом временном каталоге
  • удалить файл из зависимости
  • zip временный каталог зависимости обратно в банку
  • переместить зависимость обратно во временную директорию войны
  • zip временный каталог webapp обратно в войну
  • удалить временный каталог зависимости
  • удалить временный каталог webapp

следующие ресурсы могут помочь


теперь, если проблема в том, что JBoss развертывает блок персистентности, определенный в persistence.xml (и вы не хотите это), возможно, есть лучшее решение. Кажется, что вы можете объявить файлы для игнорирования в , например:

WEB-INF/lib/dependency.jar/META-INF/persistence.xml

эта функция есть, но я никогда не использовал его.

посмотреть


вы можете достичь этого с помощью Плагин TrueZIP Maven.

Это должно работать для вашего случая:

<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>

см. Также примеры.


Я думаю, вам придется использовать плагин Maven shade (см. ссылку ниже)

либо создайте Über-jar, который включает вашу зависимость минус persistence-xml, либо просто преобразуйте зависимость во что-то новое, у которого нет постоянства.XML.

Это должен быть путь:

http://maven.apache.org/plugins/maven-shade-plugin/examples/resource-transformers.html

Шон