Создать артефакт без родительского каталога

Ниже приведены сведения о подключаемом модуле сборки Maven из pom.xml моего проекта:

    <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.3</version>
        <executions>
            <execution>
                <id>make-assembly</id>
                <phase>package</phase>
                <goals>
                    <goal>single</goal>
                </goals>
                <configuration>
                    <descriptors>
                        <descriptor>src/main/assembly/prj-assembly.xml</descriptor>
                    </descriptors>
                    <finalName>myArtifact</finalName>
                    <outputDirectory>target/package</outputDirectory>
                    <workDirectory>target/assembly/work</workDirectory>
                    <includeBaseDirectory>false</includeBaseDirectory>
                </configuration>
            </execution>

        </executions>
    </plugin>

Все работает нормально, и артефакты генерируются, но проблема в том, что родительский каталог также генерируется с именем артефакта. Итак, структура артефакта выглядит примерно так:

myArtifact.tar.gz
              |_myArtifact [This is the parent directory]
                        |_ myfolder
                                  |_myfiles

Что я хочу это

myArtifact.tar.gz              
                |_ myfolder
                          |_myfiles

Как я могу достичь этого?

РЕДАКТИРОВАТЬ:

Ниже приведены подробности дескриптора [prj-assembly.xml]:

<assembly>
  <id>deploy</id>
  <formats>
    <format>tar.gz</format>
  </formats>
  <files>
    <file>
      <source>src/main/scripts/f1.sh</source>
      <outputDirectory>bin</outputDirectory>
      <filtered>false</filtered>
      <lineEnding>unix</lineEnding>
      <fileMode>0755</fileMode>
    </file>
    <file>
      <source>src/main/scripts/install.sh</source>
      <outputDirectory>bin</outputDirectory>
      <filtered>false</filtered>
      <lineEnding>unix</lineEnding>
      <fileMode>0755</fileMode>
    </file>
    <file>
      <source>src/main/scripts/activate.sh</source>
      <outputDirectory>bin</outputDirectory>
      <filtered>false</filtered>
      <lineEnding>unix</lineEnding>
      <fileMode>0755</fileMode>
    </file>
  </files>
  <dependencySets>
    <dependencySet>
      <scope>runtime</scope>
      <outputDirectory>lib</outputDirectory>
    </dependencySet>
  </dependencySets>
</assembly>

2 ответа

Решение

Дело в том, что вы не добавили

<includeBaseDirectory>false</includeBaseDirectory>

в вашем дескрипторе сборки. IncludeBaseDirectory не принадлежит области конфигурации плагина, потому что у цели одиночного нет такого элемента конфигурации.

Помимо этого, почему вы меняете значения:

<outputDirectory>target/package</outputDirectory>
<workDirectory>target/assembly/work</workDirectory>

Попробуйте добавить это в свой дескриптор сборки:

<includeBaseDirectory>false</includeBaseDirectory>
Другие вопросы по тегам