生成没有父目录的工件

时间:2014-05-09 14:50:01

标签: maven maven-assembly-plugin

以下是我项目的pom.xml中的Maven程序集插件详细信息:

    <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 个答案:

答案 0 :(得分:1)

尝试将此添加到您的程序集描述符中:

<includeBaseDirectory>false</includeBaseDirectory>

答案 1 :(得分:1)

关键是你没有添加

<includeBaseDirectory>false</includeBaseDirectory>
汇编描述符中的

。 includeBaseDirectory不属于插件的配置区域,导致goal single does not has any kind of this configuration item

除此之外,为什么要更改以下值:

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