Удалить файл из файла зависимостей, используя maven - PullRequest
15 голосов
/ 14 мая 2010

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

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

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

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

Ответы [ 3 ]

11 голосов
/ 12 декабря 2013

Этого можно добиться с помощью 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>

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

5 голосов
/ 14 мая 2010

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

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

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


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

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

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

См

0 голосов
/ 17 мая 2010

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

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

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

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

Sean

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...