簡體   English   中英

使用Maven的RPM軟件包

[英]RPM package using maven

我正在嘗試使用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>

這個問題的唯一答案基本上是:“如果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中,添加“覆蓋默認生命周期”中的內容。 在角色提示下設置包裝類型的名稱,並設置包含要綁定的目標坐標的階段集(忽略版本)。 可以使用逗號分隔列表將多個目標與一個階段相關聯。

我以此為起點搜索“叢”,發現它是一個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 /主/ JAVA /組織/ Codehaus的/魔力/轉/ RPMMojo.java

SRC /主/資源/ META-INF /叢/ components.xml中

SRC /網站/公寓/ usage.apt

use.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-usage.apt

由於我很好奇,因此我查找了“ 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使用段落縮進。

希望這可以幫助

布萊恩·芬內爾

錯誤是參考以下行:

<packaging>rpm</packaging>

問題在於您的包裝實際上是插件結構,而不是內置的maven包類型。 省略該行將解決該錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM