Каков правильный подход для сборки ресурсов модуля в проекте Maven? - PullRequest
1 голос
/ 26 марта 2010

У меня есть структура проекта, подобная

module-a/src/main/java
module-a/src/main/styles
module-distribution/src/main/assembly

module-distribution зависит от module-a, и они оба совместно используют родительский pom и включены как модули в этот родительский pom.

Идея состоит в том, чтобы иметь компоновочный макет, подобный

my-final-assembly/lib
my-final-assembly/styles

Где каталог lib содержит все артефакты проекта, включая зависимости (то есть module-a.jar и его jar зависимостей), а module-a.jar не должен содержать в себе свой каталог стилей. Каталог стилей должен находиться в my-final-assembly / styles.

Я могу легко заполнить каталог lib, включая

<dependencySet>
    <useProjectArtifact>false</useProjectArtifact>
    <outputDirectory>lib</outputDirectory>
</dependencySet>

в моем файле сборки. Но как насчет module-a / src / main / styles? Я могу

  1. включить его в модуль-артефакт (он будет находиться в модуле-a.jar)
  2. не включать его в module-a.jar.

Конечно, и 1), и 2) недействительны для меня. В первом случае я должен каким-то образом извлечь каталог стилей из моего модуля -a.jar. Во втором случае каталог стилей вообще не будет скопирован, поскольку копирует только артефакт, а не всю целевую папку.

У меня есть последнее средство - создать отдельный модуль для содержимого каталога стилей, и сделать модуль-a зависимым от него, но для меня это выглядит излишним. Хотя было бы легко настроить мой файл сборки, чтобы получить то, что я хочу в этом случае. Но отдельный модуль для набора шрифтов и xmls, который нужен одному модулю? Это было бы грустно, хотя я готов, если это то, что вы называете Maven Way.

1 Ответ

1 голос
/ 26 марта 2010

Каким-то образом вы должны поместить стили в артефакт в какой-то момент, чтобы иметь возможность вытащить их и включить в «финальную сборку». Я могу думать о 3 подходах:

Первый подход - это то, что вы описываете: помещение стилей в отдельный модуль с зависимостью от модуля bot-a и распространение модуля (на самом деле, я не очень понимаю, почему модуль-a зависит от так как вы их не используете / не включаете в модуль - это артефакт, но это остается на ваше усмотрение).

Второй подход - сохранить текущую структуру, но создать промежуточную сборку для модуля a. Эта сборка будет содержать module-a.jar и стили (или, возможно, только стили). Затем в модуле-дистрибутиве вы извлекаете эту сборку, распаковываете ее и создаете «финальную сборку».

Третий подход будет аналогичен предыдущему, за исключением того, что финальная сборка будет создаваться непосредственно из модуля-а (неясно, имеет ли модуль-распределение другие зависимости, чем модуль-а; если нет, Вы можете сделать все из модуля а).

...