15

src/main ディレクトリの下に output というサブディレクトリがある Maven プロジェクトがあります。このフォルダーは、tar.gz にパッケージ化する必要があります。次のようにアセンブリ プラグインを使用する場合:

pom.xml から:

<build>
<finalName>front</finalName>
<plugins>
    <plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.2-beta-5</version>
    <configuration>
      <descriptors>
        <descriptor>src/main/assembly/assembly.xml</descriptor>
      </descriptors>
    </configuration>
  </plugin>
  </plugins>
</build>

assembly.xml:

<assembly>
    <id>bundle</id> 
    <formats>
        <format>tar.gz</format>
    </formats>
    <fileSets>
        <fileSet>
            <directory>src/main/output</directory>
        </fileSet>
</fileSets>
</assembly>

私の問題は、出力ディレクトリとそのすべてのコンテンツを取得するために抽出するときを意味する、tar ユーティリティ自体を実行するときに結果が得られるようにしようとしていることです。私が得るのは、すべてのプロジェクト パス (name/src/main/output) でラップされた出力フォルダーです。

4

2 に答える 2

22

ベース ディレクトリを含めないようにアセンブリ記述子を構成し、次の出力ディレクトリを構成する必要がありfileSetます。

<assembly>
  <id>bundle</id>
  <formats>
    <format>tar.gz</format>
  </formats>
  <includeBaseDirectory>false</includeBaseDirectory>
  <fileSets>
    <fileSet>
      <directory>src/main/output</directory>
      <outputDirectory>output</outputDirectory>
    </fileSet>
  </fileSets>
</assembly>

上記のアセンブリ記述子を使用すると、次の結果が得られます (構造を再現するプロジェクトで実行した場合)。

$ mvn クリーン アセンブリ:アセンブリ
...
$ cd ターゲット
$ tar zxvf Q3330855-1.0-SNAPSHOT-bundle.tar.gz
出力/
出力/hello.txt

こちらもご覧ください

于 2010-07-25T20:44:28.250 に答える
1

で設定outputDirectoryしてみてくださいfileSet。これにより、src/main/output ディレクトリが削除されます。

<fileSet>
  <directory>src/main/output</directory>
  <outputDirectory>.</outputDirectory>
</fileSet>

includeBaseDirectoryfalseに設定する必要がある場合もあります。これにより、name ディレクトリが削除されます。

<assembly>
  <id>bundle</id> 
  <includeBaseDirectory>false</includeBaseDirectory>
  <!-- ... -->
于 2010-07-25T20:40:54.880 に答える