RPM-пакет с использованием Maven
Я пытаюсь собрать RPM-пакет, используя плагин maven.
Если я добавлю конфигурацию плагина, пакет RPM не будет создан, руководство на сайте плагина RPM говорит, что тег пакета должен быть RPM, однако это может привести к сбою сборки, сообщив, что это назначение действительно.
У кого-нибудь есть примеры, которыми они могли бы поделиться?
РЕДАКТИРОВАТЬ Ошибка неизвестна упаковка: об / мин
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<packaging>rpm</packaging>
<profile>
<id>local</id>
<build>
<resources>
<resource>
<directory>src/main/resources/properties/dev</directory>
</resource>
<resource>
<directory>src/main/resources/txt</directory>
</resource>
<resource>
<directory>src/main/resources/universal</directory>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>rpm-maven-plugin</artifactId>
<version>2.1-alpha-3</version>
<extensions>true</extensions>
<executions>
<execution>
<id>generate-rpm</id>
<goals><goal>rpm</goal></goals>
<phase>prepare-package</phase>
</execution>
</executions>
<configuration>
<summary>...</summary>
<name>...</name>
<version>...</version>
<release>...</release>
<vendor>...</vendor>
<packager>...</packager>
<group>Application</group>
<mappings>
<mapping>
<directory>/tmp/testing</directory>
</mapping>
</mappings>
<!--<requires>filesystem, bash, grep</requires>-->
<description>
...
</description>
<prepareScript>RPMScripts/prep.bash</prepareScript>
<preinstallScript>RPMScripts/preInstall.bash</preinstallScript>
<install>RPMScripts/install.bash</install>
<postinstall>RPMScripts/postInstall.bash</postinstall>
<cleanScript>RPMScripts/clean.bash</cleanScript>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<failOnError>true</failOnError>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<phase>install</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.16</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
2 ответа
Ошибка ссылается на строку:
<packaging>rpm</packaging>
Проблема в том, что ваша упаковка на самом деле представляет собой плагин, а не встроенный тип пакета maven. Пропуск строки разрешит ошибку.
Единственные ответы на этот вопрос в основном говорят: "если упаковка rpm дает ошибки, просто не используйте ее". Я сталкиваюсь с тем же самым, поэтому я постараюсь пролить немного света на эту проблему.
Кто-то однажды сказал: "Maven не сосет, но документация Maven делает"
Вот что я нашел -
Во-первых... типы упаковки по умолчанию - не единственные типы упаковки, которые вы можете использовать в maven, как указано здесь:
http://books.sonatype.com/mvnref-book/reference/writing-plugins-sect-plugins-lifecycle.html
Чтобы определить новый жизненный цикл для нового типа упаковки, вам необходимо настроить компонент LifecycleMapping в Plexus. В вашем проекте плагина создайте META-INF/plexus/components.xml в каталоге src/main/resources. В компонент.xml добавьте содержимое из Переопределение жизненного цикла по умолчанию. Задайте имя типа упаковки под ролью-подсказкой и набор этапов, содержащих координаты целей для привязки (не указывайте версию). Несколько целей могут быть связаны с фазой, используя список с разделителями-запятыми.
Используя это в качестве отправной точки, я искал "сплетение" и обнаружил, что это компонентная структура IoC (Inversion of Control). Немного похожий на Spring (см. Статью IoC Мартина Фаулера), он помогает с "внедрением зависимостей", то есть делает java более гибким в отношении идентификации и загрузки jar-файлов времени выполнения и файлов классов, особенно если такие детали, как имя классов, должны быть настраивается во время выполнения в файлах XML (например). Это то, о чем Python и Ruby на самом деле не нужно беспокоиться, потому что они не так озабочены знанием всего во время компиляции, как Java. Plexus / components.xml как раз такой файл. Также полезно знать, что плагин Maven является компонентом сплетения, то есть это зависимость, которую нужно внедрить, - в этом случае эта зависимость представляет собой jar-файл, который представляет собой zip-файл, полный файлов классов - файл классов описывает " Java-объект "или" простой старый Java-объект ", также называемый POJO. POJO для использования в Maven - это MOJO - так что все подключаемые модули Maven - это MOJO - и для подключения подключаемого модуля для Maven используется Plexus (по крайней мере, в Maven 2). Итак, давайте поищем исходный код плагина, чтобы посмотреть, есть ли у него файл component.xml с "подсказкой роли" rpm.
... и они делают... ("использовать источник, Люк")
мы также можем использовать функцию GIT Blame от gihub, чтобы узнать, кто задокументировал, что, когда был добавлен "намек на роль", и какие другие файлы были изменены одновременно.
github.com - rpm-maven-plugin - blame - 0efd27d3beb64c291b960731fe1bdbbb5dbd938e - src / main / resources /META-INF/plexus/components.xml
[MOJO-1249] Создать rpm как основной артефакт
Представлено: Бретт Оккен Карлос Санчес совершил 2 января 2009
github.com - rpm-maven-plugin - commit - fb9bc1ae7488dc0fa6853cdd874fc907c628122d
3 файла, где изменения одновременно:
SRC / Основной / Java/ орг / Codehaus/ мох об / мин /RPMMojo.java
SRC / главная / ресурсы / META-INF / сплетение / components.xml
ЦСИ / сайт / кв /usage.apt
Файл использовании.apt - документация, и эти разделы были добавлены
+
+ The packaging value should be set to "<<<rpm>>>".
++-------+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd ">
+ <modelVersion>4.0.0</modelVersion>
+ ...
+ <packaging>rpm</packaging>
+ ...
+</project>
++-------+
+
+ The extensions tag for this plugin should be marked true.
+
++-------+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>rpm-maven-plugin</artifactId>
+ <extensions>true</extensions>
+ ...
+ </plugin>
+ </plugins>
+ </build>
++-------+
Весь файл документации:
github.com - rpm-maven-plugin - использовании.apt
Так как мне было любопытно, я посмотрел "подходящая разметка"
www.beaglebytes.com - создание документа с использованием apt-v01.html
Почти обычный текст (APT) - очень простой, но мощный язык разметки. Это особенно интересно, поскольку позволяет создавать аккуратно отформатированные HTML, RTF и другие выходные форматы из документа, который выглядит как простой текст. Как сказано в документации:
APTconvert - это инструмент командной строки, который можно использовать для преобразования формата APT в HTML, XHTML, PDF, PostScript, (загружаемый MS Word) RTF, DocBook SGML и DocBook XML.
Формат APT (Почти обычный текст) - это простой язык разметки (например, HTML), который можно использовать для написания простых документов, похожих на статьи (например, HTML). В отличие от HTML, APT использует как можно меньше разметки для выражения структуры документа. Вместо этого APT использует отступ абзаца.
надеюсь это поможет
Бриан Ф Эннелл