добавление дополнительных ресурсов в Maven Pom - PullRequest
13 голосов
/ 09 июля 2009

У меня определен супер-помп, в котором я указываю каталог ресурсов для ресурсов. В одном из моих проектов мой pom расширяет этот супер-pom, и я хотел бы добавить дополнительный ресурс. Я попробовал:

    <resources>
        <resource>
            <targetPath>/</targetPath>
            <directory>additionalDir</directory>                
        </resource>
    </resources>

Но это приводит к тому, что only AdditionalDir находится в ресурсах и не включает ресурсы супер-помпы. Есть ли способ расширить ресурсы супер-помпа?

Ответы [ 4 ]

15 голосов
/ 09 июля 2009

Ожидаемое вами поведение ожидается.

Помните, что ваш супер-POM наследуется от по умолчанию POM Maven, и почти любой плагин, который вы определяете в вашем pom, фактически отменяет настройку в POM по умолчанию. Например, чтобы включить фильтрацию для ресурса по умолчанию, вы должны указать путь в своем POM. Вы делаете это:

<resources>
  <resource>
    <directory>src/main/resources</directory>
    <filtering>true</filtering>
  </resource>
</resources>

Не это:

<resources>
  <resource>
    <filtering>true</filtering>
  </resource>
</resources>

Каталог по умолчанию не всплывает для вас, даже если вы указали его там. Может быть, есть специальный MOJO, чтобы сделать это для вас, но я не смог его найти.

3 голосов
/ 06 августа 2009
0 голосов
/ 18 января 2019

Я знаю, что этот вопрос уже довольно старый, но, возможно, кто-то найдет этот вопрос полезным:

Вы можете легко сделать это, используя плагин ресурсов maven.

По сути, то, что он делает по умолчанию (вызывая ресурсы: цель ресурсов), перемещает содержимое всех каталогов, перечисленных в разделе сборки / ресурсов, с помощью объявленного фильтра в ${project.build.outputDirectory} Если вы теперь хотите добавить некоторые дополнительные ресурсы, не влияя на эти разделы, вы можете просто переместить ресурсы туда самостоятельно. Нет, это не значит перетаскивать его туда.

Maven Resources Plugin предоставляет цель с именем resources:copy-resources, которая делает именно это для вас: копирование файлов с использованием фильтров из одного места в другое или как указано в документе плагина:

Вы можете использовать ресурсы копирования mojo для копирования ресурсов, которые не находятся в макете по умолчанию maven или не объявлены в элементе build / resources, и присоединить их к фазе

Очевидное преимущество по сравнению с помощником сборки, которое предлагается в других решениях, заключается в том, что, хотя помощник сборки может выполнять действия только на этапе generate-sources, плагин ресурсов работает на любой стадии. (Хотя было бы разумно выполнить его до стадии упаковки)

Полный пример того, как это использовать, приведен здесь , как часть страницы проекта плагинов.

То, что это делает, копирует содержимое каталога ресурсов, отсутствующего в списке "src/non-packaged-resources" в "${basedir}/target/extra-resources". Но поскольку плагин jar (который создает архив jar) в основном создает zip-архив каталога "${project.build.outputDirectory}", вы можете поместить его туда.

0 голосов
/ 11 декабря 2016

Да, maven переопределяет ресурсы родительского POM при переопределении нового раздела ресурсов.

Однако простой способ добавить ресурсы - это

  1. Удалите раздел ресурсов из вашего POM
  2. Показать Эффективное ПОМ
  3. Скопируйте ресурсы из вашего эффективного POM в ваш проект
  4. Заменить абсолютные пути относительными
  5. Добавьте ваши дополнительные ресурсы
...