最終的にJavaアプリをDebianパッケージにパッケージ化する最初のMavenプロジェクトに取り組んでいます(jdebプラグインを使用)。アセンブリ プラグインを使用して tar ファイルを作成しようとしていますが、生成されたファイルに必ずしもディレクトリ エントリが含まれていないようで、dpkg のインストールが失敗します。
誰もこれを見たことがありますか?
具体的には、生成された tar ファイルには、次のディレクトリ エントリは含まれません。
- 指定する fileSet
<includes>
(そのまま<includes>
にしておくと、tar ファイル内のディレクトリ エントリになります) - 依存関係セット
を使用しないアセンブリ ファイルを次に示します。<includes>
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>simple</id>
<formats>
<format>tar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<moduleSets>
</moduleSets>
<fileSets>
<fileSet>
<directory>src/main/config</directory>
<outputDirectory>/etc/${project.artifactId}</outputDirectory>
</fileSet>
</fileSets>
<dependencySets>
<dependencySet>
<outputDirectory>/usr/lib/${project.artifactId}/lib</outputDirectory>
<scope>runtime</scope>
<useProjectArtifact>true</useProjectArtifact>
</dependencySet>
</dependencySets>
<repositories>
</repositories>
<componentDescriptors />
</assembly>
tar ファイルの内容は次のとおりです。
tar tvf assembly-test-0.0.1-SNAPSHOT-simple.tar
drwxr-xr-x 0/0 0 2012-04-10 12:54 etc/assembly-test/
-rw-r--r-- 0/0 0 2012-04-10 12:52 etc/assembly-test/file1.xml
-rw-r--r-- 0/0 0 2012-04-10 12:52 etc/assembly-test/file2.xml
-rw-r--r-- 0/0 2131 2012-04-10 13:26 usr/lib/assembly-test/lib/assembly-test-0.0.1-SNAPSHOT.jar
ここで、いくつかのインクルード パターンを含むアセンブリを使用すると、次のようになります。
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>include-match</id>
<formats>
<format>tar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<moduleSets>
</moduleSets>
<fileSets>
<fileSet>
<directory>src/main/config</directory>
<outputDirectory>/etc/${project.artifactId}</outputDirectory>
<includes>
<include>*.xml</include>
</includes>
</fileSet>
</fileSets>
<dependencySets>
<dependencySet>
<outputDirectory>/usr/lib/${project.artifactId}/lib</outputDirectory>
<scope>runtime</scope>
<useProjectArtifact>true</useProjectArtifact>
</dependencySet>
</dependencySets>
<repositories>
</repositories>
<componentDescriptors />
</assembly>
tar ファイルの内容からディレクトリ エントリが失われます。
tar tvf assembly-test-0.0.1-SNAPSHOT-include-match.tar
-rw-r--r-- 0/0 0 2012-04-10 12:52 etc/assembly-test/file1.xml
-rw-r--r-- 0/0 0 2012-04-10 12:52 etc/assembly-test/file2.xml
-rw-r--r-- 0/0 2131 2012-04-10 13:26 usr/lib/assembly-test/lib/assembly-test-0.0.1-SNAPSHOT.jar
これはアセンブリ プラグインのバグのようですが、まだ実験中です。私は確かにそれを回避することができます (パッケージ内の preinst スクリプトを使用するか、おそらく jdeb を構築するためのディレクトリ構造を構築します) が、できるだけ記述子ファイルに保存したいと思います。