Как удалить ресурс из дочернего модуля?

Сценарий:

В common.jar есть файлы xml, которые мы хотим исключить. Но общий jar добавляется как зависимость в module1.jar и module2.jar. В модуле1 и модуле2 есть тестовые примеры, в которых используются файлы xml в общем jar.

Итак, я хочу исключить файлы xml после запуска тестовых случаев.

Итак, есть ли способ удалить xml из дочерних модулей в родительском pom. Или любой другой подход для удаления xml из общей банки.

Родитель pom.xml:

<modules>
    <module>common</module>
    <module>module1</module>
    <module>module2</module>
    <module>module3</module>
</modules>
0
Vikas Sharma 29 Окт 2015 в 14:14

2 ответа

Лучший ответ

Цель удаления truezip-maven-plugin выполняет задачу удаления файла XML из jar в окончательном файле pom.xml.

-1
Vikas Sharma 30 Окт 2015 в 15:21

Вы можете исключить ресурсы из упаковки в результирующий jar, используя excludes атрибут {{X2} }.

Например, чтобы исключить файл src/main/resources/path/to/file.xml, у вас может быть следующее внутри POM common:

<build>
  ...
  <resources>
    <resource>
      <directory>src/main/resources</directory>
      <excludes>
        <exclude>path/to/file.xml</exclude>
      </excludes>
    </resource>
    ...
  </resources>
  ...
</build>

Однако, если вы захотите изменить артефакт common после его создания, это будет невозможно: к тому времени, когда Maven создаст module1 и module2, он уже будет упакован и установлен common.

В этом случае вам следует переместить соответствующие файлы XML внутрь module1 и module2 в качестве тестового ресурса, то есть внутри src/test/resources. Добавляя эти XML-файлы в качестве тестовых ресурсов, вы гарантируете, что они присутствуют в пути к классам во время выполнения тестов и не будут упакованы в окончательный jar-файл.

2
Tunaki 29 Окт 2015 в 11:45