Несколько файлов с maven-assembly-plugin - ›уже добавлены, пропускаем

Мне нужно создать несколько файлов tar в пакете tar-by-environment.

В каждой отдельной среде есть папка с единственным файлом «environment.properties», поэтому мне нужно объединить содержимое проекта с файлом environment.properties для каждой из моих сред: RC, BC, PROD.

Я использую maven-assembly-plugin для этого, поэтому есть 3 дескриптора сборки, похожие на эту сборку с другим «id»:

<assembly
    xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
    <id>pack-content-rc</id>
    <includeBaseDirectory>false</includeBaseDirectory>
    <formats>
        <format>tar</format>
    </formats>
    <fileSets>
        <fileSet>
            <outputDirectory>/definitions</outputDirectory>
            <directory>definitions</directory>
            <includes>
                <include>*.*</include>
            </includes>
            <excludes>
                <exclude>.*</exclude>
            </excludes>
        </fileSet>
        <fileSet>
            <outputDirectory>/library</outputDirectory>
            <directory>library</directory>
            <includes>
                <include>*.*</include>
            </includes>
            <excludes>
                <exclude>.*</exclude>
            </excludes>
        </fileSet>
        <fileSet>
            <outputDirectory>/messages</outputDirectory>
            <directory>messages</directory>
            <includes>
                <include>*.*</include>
            </includes>
            <excludes>
                <exclude>.*</exclude>
            </excludes>
        </fileSet>
        <fileSet>
            <outputDirectory>/templates</outputDirectory>
            <directory>templates</directory>
            <includes>
                <include>**/*</include>
            </includes>
            <excludes>
                <exclude>.*</exclude>
            </excludes>
        </fileSet>
        <fileSet>
            <outputDirectory>/variables</outputDirectory>
            <directory>variables</directory>
            <includes>
                <include>*.*</include>
            </includes>
            <excludes>
                <exclude>.*</exclude>
            </excludes>
        </fileSet>
        <fileSet>
            <outputDirectory>/variables</outputDirectory>
            <directory>target/escape/rc</directory>
            <includes>
                <include>*.*</include>
            </includes>
        </fileSet>      
    </fileSets>
</assembly>

И конфигурация maven плагина:

...
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2.2</version>
<executions>
    <execution>
        <id>make-assembly</id>
        <phase>package</phase>
        <goals>
            <goal>single</goal>
        </goals>
        <configuration>
            <descriptors>
                <descriptor>pack-content-rc.xml</descriptor>
                <descriptor>pack-content-bc.xml</descriptor>
                <descriptor>pack-content-prod.xml</descriptor>
            </descriptors>
        </configuration>
    </execution>
</executions>
...

И выходной журнал:

[INFO] --- maven-assembly-plugin:2.2.2:single (make-assembly) @ nibbler-content ---
[INFO] Reading assembly descriptor: pack-content-rc.xml
[INFO] Reading assembly descriptor: pack-content-bc.xml
[INFO] Reading assembly descriptor: pack-content-prod.xml
[INFO] nibbler-content-19.0.1-SNAPSHOT-rc/variables/environment.properties already added, skipping
[INFO] Building tar : /Users/ger/Documents/Work/nibbler-content/target/nibbler-content-19.0.1-SNAPSHOT-pack-content-rc.tar
[INFO] nibbler-content-19.0.1-SNAPSHOT-rc/variables/environment.properties already added, skipping
[INFO] nibbler-content-19.0.1-SNAPSHOT-bc/variables/environment.properties already added, skipping
[INFO] Building tar : /Users/ger/Documents/Work/nibbler-content/target/nibbler-content-19.0.1-SNAPSHOT-pack-content-bc.tar
[INFO] nibbler-content-19.0.1-SNAPSHOT-bc/variables/environment.properties already added, skipping
[INFO] nibbler-content-19.0.1-SNAPSHOT-prod/variables/environment.properties already added, skipping
[INFO] Building tar : /Users/ger/Documents/Work/nibbler-content/target/nibbler-content-19.0.1-SNAPSHOT-pack-content-prod.tar
[INFO] nibbler-content-19.0.1-SNAPSHOT-prod/variables/environment.properties already added, skipping
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

Проблема в том, что три результирующих файла имеют один и тот же файл environment.properties, а точнее первый файл, поэтому у меня получается 3 файла, которые представляют собой один и тот же пакет.

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

Есть ли способ избежать этого? Что-то вроде чистки перед запуском каждого дескриптора? Должен ли я использовать плагин maven-ant-run или что-то в этом роде?

Спасибо!


person Germán    schedule 13.01.2012    source источник
comment
Если дескриптор такой же, кроме идентификатора, где вы указываете, какой файл свойств добавить?   -  person Corubba    schedule 13.01.2012
comment
В последнем наборе файлов каждого дескриптора у меня есть другая цель / escape / {среда} (в примере - RC).   -  person Germán    schedule 13.01.2012
comment
Что произойдет, если закомментировать первые 2 дескриптора, так что будет запущен только последний (prod). Есть ли правильный файл свойств внутри tar?   -  person Corubba    schedule 13.01.2012
comment
@BloodyWorld да, в этом случае свойства верны.   -  person Germán    schedule 13.01.2012
comment
Если это влияет только на этот файл, вы можете попробовать <file>, а не <fileSet>. Или попробуйте с версией 2.1 плагина.   -  person Corubba    schedule 13.01.2012
comment
Спасибо @BloodyWorld, с 2.1 сборки плагин отлично работает! :)   -  person Germán    schedule 13.01.2012
comment
@BloodyWorld, вы должны опубликовать свой комментарий в качестве ответа, чтобы я мог его принять. :)   -  person Germán    schedule 16.01.2012


Ответы (2)


Проблема already added, skipping появилась в версии 2.2 плагина, вы можете попробовать v2.1.

person Corubba    schedule 16.01.2012

Обычно один артефакт maven означает ровно один выходной файл. Возможно, имеет смысл сделать 3 отдельных модуля maven для каждого tar. Более того, это дает больше гибкости.

person kan    schedule 13.01.2012
comment
Я не совсем согласен с этим, я беру это больше, чем артефакты-классификаторы, такие как источники, javadocs и т. Д. - person Germán; 13.01.2012
comment
@ Germán Да, это священная война мнений. Но представьте себе ситуацию - почему, когда вы что-то меняете в среде разработки, вы должны трогать производственные файлы? - person kan; 13.01.2012