2010-03-26 7 views
1

У меня есть структура проекта, какКаков правильный подход к сборке ресурсов модуля в проекте Maven?

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

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

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

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

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

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

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

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

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

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

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

ответ

1

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

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

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

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

+0

Спасибо за подсказку, Паскаль! В проекте есть куча зависимостей, модуль-а - не единственный, поэтому я выбрал второй подход. I pack module-a.zip с идентификатором сборки со стилями: module-a-with-styles.zip/lib/module-a.jar, module-a-with-styles.zip/styles Затем после некоторых настроек в final-assembly.xml я получаю то, что я ожидал. Кстати, это распространенная практика, чтобы опубликовать подробные сведения о моем рабочем решении в качестве ответа на вопрос, чтобы все могли его увидеть? Эта область комментариев не позволяет довольно форматировать – zamza

+0

@zamza. Добро пожаловать. Что касается вашего вопроса, ваша реализация может быть немного конкретной, но если вы считаете, что ее можно повторно использовать кем-то другим, не стесняйтесь. Конкретно или нет, это не повредит. –