我正在开发我的第一个 Maven 项目,该项目最终将 Java 应用程序打包到 Debian 包中(使用 jdeb 插件)。我正在尝试使用程序集插件来构建一个 tar 文件,但看起来生成的文件并不总是包含目录条目,这将导致 dpkg install 失败。
有没有人见过这个?
具体来说,生成的 tar 文件不包含以下目录条目:
- 指定的文件集
<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 构建),但我希望尽可能多地保留在描述符文件中。