Я работаю над своим первым проектом Maven, который в конечном итоге упакует приложение Java в пакете Debian (с использованием плагина jdeb). Я пытаюсь использовать плагин сборки для создания файла tar, но похоже, что сгенерированный файл не всегда содержит записи в каталоге, что приведет к сбою dpkg.Плагин сборки Maven не создает файлы tar с записями каталога?
Кто-нибудь видел это раньше?
В частности, генерируемый архивный файл не содержит записи каталога для:
- в FileSet, задающее
<includes>
(выезд<includes>
приведет к записи каталога междунар он TAR-файл) - в dependencySet
Вот файл сборки, который не использует <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 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 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 для сборки), но я хотел бы сохранить как можно больше в файле дескриптора.
Возможно, потому, что первый набор файлов (без «включает») копирует весь каталог, а вторая версия (с «включает») копирует только сопоставленный шаблон («xml»), а каталог не соответствует этот шаблон? – Glenn
Каждый раз, когда я пробовал шаблоны подстановок с включением, запись в каталог не добавляется в tar - любое включение, кажется, предотвращает ее. Но только с шаблоном exclude создается запись _is_.Это кажется непоследовательным и, возможно, просто побочным продуктом того, как каталог фильтруется. – user1325158