Mavenプロジェクトがあり、src/mainディレクトリの下にoutputというサブディレクトリがあります。このフォルダはtar.gzにパッケージ化する必要があります。次のようにAssemblyプラグインを使用する場合:
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ユーティリティ自体を実行するようになることです。つまり、抽出してoutputディレクトリとそのすべてのコンテンツを取得する場合です。私が取得するのは、すべてのプロジェクトパス(name/src/main/output)でラップされた出力フォルダーです。
アセンブリ記述子をnotにベースディレクトリを含めないように構成し、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 clean Assembly:assembly ... $ cd target $ tar zxvf Q3330855-1.0-SNAPSHOT-bundle.tar.gz output/ output/ hello.txt
outputDirectory
にfileSet
を設定してみてください。これにより、src/main/outputディレクトリが削除されます。
<fileSet>
<directory>src/main/output</directory>
<outputDirectory>.</outputDirectory>
</fileSet>
includeBaseDirectory
をfalseに設定する必要がある場合もあります。これにより、nameディレクトリが削除されます。
<Assembly>
<id>bundle</id>
<includeBaseDirectory>false</includeBaseDirectory>
<!-- ... -->