ant*_*n91 4 java unix rpm maven rpm-maven-plugin
我正在尝试使用 maven 插件构建 RPM 包。
如果我添加插件配置 RPM 包没有被制作,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>
Run Code Online (Sandbox Code Playgroud)
小智 5
这个问题的唯一答案基本上是说“如果 rpm 的包装出现错误,请不要使用它”。我遇到了完全相同的事情,所以我将尝试更多地了解这个问题。
有人曾经说过“maven 不烂,但 Maven 文档很烂”
这是我发现的 -
首先......默认包装类型不是您可以在 maven 中使用的唯一包装类型,如下所述:
http://books.sonatype.com/mvnref-book/reference/writing-plugins-sect-plugins-lifecycle.html
要为新的包装类型定义新的生命周期,您需要在 Plexus 中配置 LifecycleMapping 组件。在您的插件项目中,在 src/main/resources 下创建一个 META-INF/plexus/components.xml。在 components.xml 中添加来自 Overriding the Default Lifecycle 的内容。在角色提示下设置打包类型的名称,以及包含要绑定的目标坐标的阶段集(省略版本)。可以使用逗号分隔列表将多个目标与一个阶段相关联。
以此为起点,我搜索了“plexus”并发现它是一个 IoC(控制反转)组件框架。有点像 Spring(阅读 Martin Fowler 的 IoC 文章)它有助于“依赖注入”,也就是说它使 Java 在运行时 jar 和类文件识别和加载方面更加灵活,特别是如果类的名称等细节要在运行时在 XML 文件中配置(例如)。这是 Python 和 Ruby 真正不必担心的事情,因为它们不像 Java 那样关心在编译时了解所有内容。plexus/components.xml 就是这样一个文件。了解 Maven 插件是一个 plexus 组件也有帮助 - 也就是说,它是一个要注入的依赖项 - 在这种情况下,依赖项是一个 jar,这是一个充满类文件的 zip 文件 - 类文件描述了“java 对象”或“普通的旧 java 对象”,也称为 POJO。供 Maven 使用的 POJO 是 MOJO - 所以所有 Maven 插件都是 MOJO - 并且处理 Maven 插件的插件是 Plexus(至少在 Maven 2 中)。因此,让我们搜索插件源代码,看看它们是否有一个带有 rpm“角色提示”的 components.xml 文件。
......他们确实......(“使用来源,卢克”)
我们还可以使用 gihub 的 GIT Blame 功能来查看谁记录了添加“角色提示”时的内容以及同时更改了哪些其他文件。
github.com - rpm-maven-plugin - 责备 - 0efd27d3beb64c291b960731fe1bdbbb5dbd938e - src/main/resources/META-INF/plexus/components.xml
[MOJO-1249] 创建 rpm 作为主要工件
提交人:Brett Okken Carlos Sanchez 于 2009 年 1 月 2 日提交
github.com - rpm-maven-plugin - 提交 - fb9bc1ae7488dc0fa6853cdd874fc907c628122d
3 个同时更改的文件:
src/main/java/org/codehaus/mojo/rpm/RPMMojo.java
src/main/resources/META-INF/plexus/components.xml
src/site/apt/usage.apt
usage.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>
++-------+
Run Code Online (Sandbox Code Playgroud)
整个文档文件是:
github.com - rpm-maven-plugin - usage.apt
由于我很好奇,我查了一下“apt markup”——
www.beaglebytes.com - created-a-document-using-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 使用段落缩进。
希望这可以帮助
布莱恩·芬内尔
| 归档时间: |
|
| 查看次数: |
17164 次 |
| 最近记录: |