Перезаписать файл ресурсов с помощью подключаемого модуля maven - PullRequest
7 голосов
/ 17 мая 2011

Я использую maven-assembly-plugin с "jar-with-dependencies" для упаковки jar.Существует 2 артефакта зависимостей, имеющих log-back.xml.Второй артефакт зависит от первого.Я хочу иметь log-back.xml второго артефакта в последнем jar, но он всегда содержит log-back.xml первогоТак как я могу контролировать это?

Спасибо

Ответы [ 3 ]

6 голосов
/ 17 мая 2011

Вы можете использовать unpackOptions для достижения этой цели.Попробуйте что-то вроде следующего:

<assembly>
...
    <dependencySets>
        <dependencySet>
            <outputDirectory>/</outputDirectory>
            <includes>
                <include>${groupId}:${artifact.whose.logback.is.to.be.excluded} </include>
            </includes>
            <unpack>true</unpack>
            <unpackOptions>
                <excludes>
                    <exclude>**/logback.xml</exclude>
                </excludes>
            </unpackOptions>
        </dependencySet>
        <dependencySet>
            <outputDirectory>/</outputDirectory>
            <excludes>
                <exclude>${groupId}:${artifact.whose.logback.is.to.be.excluded}</exclude>
            </excludes>
            <unpack>true</unpack>
        </dependencySet>
    </dependencySets>
</assembly>
1 голос
/ 27 июля 2017

(с последней версией maven-assembly-plugin на данный момент: 3.0.0)

У меня была такая же проблема со сборкой сборки.

У меня были зависимости буксировки с тем жефайл свойств, но с другим содержимым (один удачный, а другой перезаписывает первый отсутствующими объявлениями).

Проблема заключалась в том, что у меня наконец-то был неправильный файл конфигурации, который заменил другой в моей сборочной фляге.

Единственное чистое решение, которое я нашел для перезаписи файла, было:

1 - Добавить хороший файл, который я хотел сохранить для сборки в моем проекте: например: src/main/resources/META-INF/services/myfileWhichOverwriteTheBadDependenciesRessources.xml

2 - Добавьте набор файлов с «фильтрованным», установленным в «true», в моем дескрипторе сборки:

    <fileSet>
        <directory>${project.main.resources}/META-INF</directory>
        <outputDirectory>META-INF</outputDirectory>
        <filtered>true</filtered>
    </fileSet>

(свойство «project.main.resource» установлено в «src / main / resources» в моемслучай)

1 голос
/ 17 мая 2011

Является ли первый артефакт модулем вашего собственного проекта?Если это так, вы можете исключить log-back.xml в разделе ресурсов файла pom.xml.

<resources>
  <resource>
    <directory>src/main/resources</directory>
    <excludes>
      <exclude>log-back.xml</exclude>
    </excludes>
  </resource>
  ...
</resources>

Однако это работает, только если этот модуль не требует log-back.xml отсам по себе, когда он выстроен из сферы действия всей банки.

...