Пользовательская сборка maven - как скопировать внешнюю справочную папку - PullRequest
4 голосов
/ 29 октября 2011

Я строю простой проект Jar с Maven (последний)При запуске maven package я правильно получаю файл jar в целевой директории,Я хотел бы настроить вывод, чтобы maven скопировал некоторые файлы и зависимости в целевую папку вместе с jar.

Текущая структура папок:

/  
-- resources  
-- src/main/java/com..(project sources)
-- src/main/assembly  (location of the assebmly.xml)

Желаемая целевая структура каталогов:

target
     |
      -- myJar1.0.jar         (the artiface)   
      -- resources            (from the root build folder)
      -- lib                  (all the dependancies)
            |
            -- anotherJar-1.0.jar
            -- anotherJar2-1.0.jar
            -- anotherJar3-1.0.jar

Я прочитал пользовательскую сборку на веб-сайте apache, я добавил конфигурацию в maven-assembly-plugin и настроил файл assembly.xml, но я должен что-то сделать неправильно, я не получаю правильный вывод

Здесь приведен файл assembly.xml

<assembly>
<id/>
<formats>
    <format>dir</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
    <dependencySet>
        <outputDirectory>/lib</outputDirectory>
    </dependencySet>
</dependencySets>
<fileSets>
    <fileSet>
        <directory>target</directory>
        <outputDirectory>/lib</outputDirectory>
        <includes>
            <include>*.jar</include>
        </includes>
    </fileSet>
    <fileSet>
        <directory>resources</directory>
        <outputDirectory>/resources</outputDirectory>
        <includes>
            <include>*.*</include>
        </includes>
    </fileSet>
</fileSets>

В целевом каталоге находится библиотека с зависимостями, но она находится в папке с именем артефакта, каталог ресурсов вообще не копируется.

Пожалуйста, сообщите Спасибо

Ответы [ 2 ]

4 голосов
/ 31 октября 2011

Плагин maven для сборки создает выходные данные в подпапке цели. Это сделано для того, чтобы избежать путаницы с другими артефактами, которые там создаются (classes, test-classes и т. Д.).

Что касается ресурсов, которые не копируются, вы можете пропустить раздел <includes>, если хотите скопировать все содержимое папки. Также первая секция <fileSet> является избыточной.

Обновлено assembly.xml для размещения артефакта проекта в корне, зависимых библиотек в lib и ресурсов в папке ресурсов папки сборки ...

<assembly>
<id/>
<formats>
    <format>dir</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
    <dependencySet>
        <outputDirectory>/lib</outputDirectory>
        <excludes>
            <exclude>${project.groupId}:${project.artifactId}</exclude>
        </excludes>
    </dependencySet>
    <dependencySet>
        <outputDirectory>/</outputDirectory>
        <includes>
            <include>${project.groupId}:${project.artifactId}</include>
        </includes>
    </dependencySet>
</dependencySets>
<fileSets>
    <fileSet>
        <directory>resources</directory>
        <outputDirectory>/resources</outputDirectory>>
    </fileSet>
</fileSets>
0 голосов
/ 29 октября 2011

Думаю, для этой цели вам понадобится плагин Maven .

...