как собрать внешние артефакты в один глобальный каталог с помощью подключаемого модуля maven-assembly (или иным образом) - PullRequest
0 голосов
/ 06 мая 2011

Я экспериментирую с Maven и пытаюсь создать проект, изначально созданный с помощью сценариев оболочки.

С помощью эмпирического правила Maven: один проект, один артефакт, я создал следующую структуру:

<PROJECT>
  <MODULE-1>
  <MODULE-2>
  <MODULE-3>
  ..
  <MODULE-N>
  <RESOURCES>     
  <DISTRIB>

Модуль RESOURCES имеет следующую структуру:

<RESOURCES>/src/main/resources/<MODULE-1>/bin
<RESOURCES>/src/main/resources/<MODULE-1>/lib
<RESOURCES>/src/main/resources/<MODULE-1>/doc
<RESOURCES>/src/main/resources/<MODULE-2>/bin
<RESOURCES>/src/main/resources/<MODULE-2>/lib
<RESOURCES>/src/main/resources/<MODULE-2>/doc
...
<RESOURCES>/src/main/resources/<MODULE-N>/bin
<RESOURCES>/src/main/resources/<MODULE-N>/lib
<RESOURCES>/src/main/resources/<MODULE-N>/doc

Причина, по которой он так поступил, заключалась в том, что указанные выше ресурсы необходимы во время выполнения, а не во время компиляции, и они в основномфайлы свойств, файлы конфигурации и сценарии оболочки для вызова различных jar-файлов.На последнем шаге ресурсов я хотел объединить подкаталоги в один глобальный каталог bin / lib / doc.Однако я не вижу опции в дескрипторе сборки для удаления префикса модулей, чтобы получить то, что я хочу:

 <RESOURCES>/target/resources/bin
 <RESOURCES>/target/resources/lib
 <RESOURCES>/target/resources/doc

, где bin будет содержать все найденные файлыв каталоге / src / main / resources // bin, / src / main / resources // bin и т. д. Аналогично для lib , doc .

Myвопрос: должен ли я иметь:

<MODULE-1>/src/external/resources/bin
<MODULE-1>/src/external/resources/lib
<MODULE-1>/src/external/resources/doc
...
<MODULE-N>/src/external/resources/bin
<MODULE-N>/src/external/resources/lib
<MODULE-N>/src/external/resources/doc

структуру вместо этого, чтобы я тогда получал доступ через набор зависимостей?Эти файлы не должны быть частью jar-файла различных модулей и поэтому не могут быть сохранены в src / main / resources их соответствующих проектов.Или то, чего я хочу добиться, выполнив вместо этого какой-нибудь другой плагин maven?

В модуле DISTRIB я бы совмещал вывод модуля RESOURCES с JAR-файлами и зависимостями, чтобы создать структуру каталогов, которая затемиспользовать с упаковочным инструментом (пакет Solaris и установщик WiX).

Буду признателен за любую помощь!

1 Ответ

0 голосов
/ 10 мая 2011

В модуле ресурсов pom fort установите для исходного каталога значение, отличное от / src / main / resources /, чтобы он не копировал их в целевую папку. Затем используйте плагин Maven Resources , чтобы скопировать файлы ресурсов в target / bin и target lib и т. Д.

, например

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.4.3</version>
    <executions>
        <execution>
            <id>copy-resources</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <outputDirectory>target/bin/</outputDirectory>
                <resources>
                    <resource>
            <directory>src/external/resources/bin</directory>
                <filtering>false</filtering>
        </resource>
        </resources>
    </configuration>
    </execution>
        <execution>
            <id>copy-resources</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <outputDirectory>target/lib/</outputDirectory>
                <resources>
                    <resource>
            <directory>src/external/resources/lib</directory>
                <filtering>false</filtering>
        </resource>
        </resources>
    </configuration>
    </execution>
    </executions>
</plugin>`
...