我试图在我的Windows机器上创建我的maven项目的.rpm文件.
我按照下面链接中给出的步骤来实现它
http://tim-perry.co.uk/blog/2012/11/22/building_rpms_on_windows_with_maven
当我运行命令mvn package rpm:attached-rpm时,它显示构建成功但没有生成rpm文件.相反,它在目标下创建一个名为"rpm"的目录,并复制此目录下所有需要的文件(如pom中所述).
让我知道我在这里失踪了什么.
下面是我正在使用的pom
<?xml version="1.0" encoding="UTF-8"?>
<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>
<groupId>com.org</groupId>
<artifactId>inv_project</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>inv_project</name>
<url>http://maven.apache.org</url>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>rpm-maven-plugin</artifactId>
<version>2.0-beta-1</version>
<extensions>true</extensions>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>attached-rpm</goal>
</goals>
</execution>
</executions>
<configuration>
<name>PName</name>
<release>1</release>
<copyright></copyright>
<distribution></distribution>
<workarea>target/rpm</workarea>
<group></group>
<mappings>
<mapping>
<directory>/bin/</directory>
<filemode>755</filemode>
<username>user</username>
<groupname>sysop</groupname>
<sources>
<source>
<location>test/</location>
<includes>
<include>*.jar</include>
</includes>
</source>
</sources>
</mapping>
<mapping>
<directory>/conf/</directory>
<filemode>755</filemode>
<username>user</username>
<groupname>sysop</groupname>
<sources>
<source>
<location>src/resources</location>
<includes>
<include>*.properties</include>
</includes>
</source>
</sources>
</mapping>
</mappings>
<postinstallScript /> …Run Code Online (Sandbox Code Playgroud) 有没有人知道使用Maven构建到RPM的任何Web应用程序?该RPM Maven插件提供了构建一个RPM的功能,但它的文档缺乏.
具体来说,我正在寻找一个包含多个模块的示例,即第8章"多模块项目",来自"Maven by Example"系列.
只有一个模块的示例如下:
<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>
<groupId>com.mycompany.app</groupId>
<artifactId>my-webapp</artifactId>
<packaging>war</packaging>
<version>1.0-SOME-SNAPSHOT</version>
<name>my-webapp</name>
<url>http://maven.apache.org</url>
<properties>
<rpm.install.basedir>/opt/tomcat6</rpm.install.basedir>
<rpm.install.webapps>${rpm.install.basedir}/webapps</rpm.install.webapps>
<rpm.install.config>${rpm.install.basedir}/lib</rpm.install.config>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- Servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl-api</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jstl-impl</artifactId>
<version>1.2</version>
</dependency>
<!-- Jackson JSON Processor -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.8.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>rpm-maven-plugin</artifactId>
<version>2.1-alpha-1</version>
<extensions>true</extensions>
<executions>
<execution>
<goals> …Run Code Online (Sandbox Code Playgroud) 我有一个Maven RPM插件映射:
<mapping>
<directory>/etc/myconfig</directory>
<configuration>true</configuration>
<sources>
<source>
<location>${project.build.directory}</location>
<includes>
<include>*.conf</include>
</includes>
</source>
</sources>
</mapping>
Run Code Online (Sandbox Code Playgroud)
但是,根据打包过程,可能会有零.conf文件放入/ etc.发生这种情况时,RPM插件会说:
[ERROR] Failed to execute goal org.codehaus.mojo:rpm-maven-plugin:2.1.2:rpm (default) on project clients:
Unable to copy files for packaging: You must set at least one file. -> [Help 1]
Run Code Online (Sandbox Code Playgroud)
有没有办法让一个映射部分满意包含零文件?
我看到两个在线的引用,但无法找出原因.有区别吗?如果是这样,怎么样?
我正在尝试在OSX上设置一个maven项目,并使用它rpm-maven-plugin来构建它作为RPM包.但是,即使最简单的插件配置似乎也失败了.我得到的错误是Bad exit status from /usr/local/Cellar/rpm/5.4.10/var/tmp/rpm-tmp.50667 (%install).详细输出不会提供太多信息.生成的spec文件如下所示:
Name: server
Version: 1.0
Release: SNAPSHOT20130920084527
Summary: MySummary
License: 2013 MyCompany
Distribution: MyDistribution
Group: Application/SomeGroup
Packager: me
autoprov: yes
autoreq: yes
Prefix: /app/theapp
BuildRoot: /Users/me/Projects/projectname/server/target/rpm/server/buildroot
%description
My Description
%install
if [ -e $RPM_BUILD_ROOT ];
then
mv /Users/me/Projects/projectname/server/target/rpm/server/tmp-buildroot/* $RPM_BUILD_ROOT
else
mv /Users/me/Projects/projectname/server/target/rpm/server/tmp-buildroot $RPM_BUILD_ROOT
fi
%files
%defattr(644,-,-,755)
"/"
Run Code Online (Sandbox Code Playgroud)
构建RPM的命令是 /usr/local/bin/rpmbuild -vvv -bb --target noarch --buildroot /Users/me/Projects/projectname/server/target/rpm/server/buildroot --define '_topdir /tmp' server.spec
我不确定它是OSX问题还是一般的rpm-maven-plugin问题,但我怀疑它是OSX问题,因为我在其他平台上使用rpm-maven-plugin构建RPM.
有没有其他人成功使用过rpm-maven-pluginOSX?
编辑
我正在使用rpm-maven-plugin2.1-alpha-3,OS X 10.8.4并通过自制软件安装rpm.我还验证了相同的配置适用于CentOS Vagrant盒子.
我正在使用Maven构建一些项目,它使用gMaven插件来构建包含主要工件的RPM.我只希望Maven尝试在具有rpmbuild的系统上构建RPM,而不是在没有的系统上构建RPM,因此我构建了两个独立的配置文件,一个应该是默认的,一个应该在Unix系列上激活OS.
我可以发誓,我测试了它,一切正常,但现在它运行Unix系列配置文件,即使我在OSX上构建.但是,如果我将配置文件的OS系列更改为"windows",它肯定知道它不在Windows机器上,因此运行默认配置文件.
这是我的pom.xml文件的相关部分:
<profiles>
<profile>
<id>default-profile</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<rpmPhase>none</rpmPhase>
</properties>
</profile>
<profile>
<id>rpm-profile</id>
<activation>
<os>
<family>unix</family>
</os>
</activation>
<properties>
<rpmPhase>package</rpmPhase>
</properties>
</profile>
</profiles>
Run Code Online (Sandbox Code Playgroud)
在Maven输出中:
OS name: "mac os x", version: "10.9.4", arch: "x86_64", family: "mac"
Run Code Online (Sandbox Code Playgroud)
但是,Maven将rpmPhase设置为"package"而不是"none",这不是预期的行为.
任何人都可以看到我在这里遗失了什么吗?
编辑:
此外,如果我将OS系列设置为不存在的东西,或者我完全注释掉激活块,则使用默认配置文件,因此Maven似乎正在积极地将我的OSX与Unix系列操作系统匹配.
我正在尝试使用 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> …Run Code Online (Sandbox Code Playgroud) 我在创建我的Maven项目的RPM时收到以下错误.
我能够成功打包Jar但RPM创建失败.
注意:我正在尝试使用Windows 7
[WARNING] operable program or batch file.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 42.696 s
[INFO] Finished at: 2014-10-08T15:06:40+05:30
[INFO] Final Memory: 23M/228M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:rpm-maven-plugin:2.0.1:rpm (default-cli) on project inv_project: RPM query for default vendor returned: '1' executing 'cmd.exe /X /C "rpm -E %{_host_vendor}"' -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:rpm-maven-plugin:2.0.1:rpm (default-cli) on project inv_project: RPM query for default vendor returned: '1' executing 'cmd.exe /X …Run Code Online (Sandbox Code Playgroud) 我试图使用rpm maven插件,我得到以下错误:
[错误]无法执行目标org.codehaus.mojo:rpm -maven-plugin:2.1.3:项目上的rpm(generate-rpm)TestRpmAndDocker:目标org.codehaus.mojo的参数'sourceEncoding':rpm-maven-插件:2.1.3:rpm丢失或无效 - > [帮助1] org.apache.maven.lifecycle.LifecycleExecutionException:无法执行目标org.codehaus.mojo:rpm -maven-plugin:2.1.3:rpm(生成-rpm)on project TestRpmAndDocker:目标org.codehaus.mojo的参数'sourceEncoding':rpm -maven-plugin:2.1.3:rpm在org.apache.maven.lifecycle.internal.MojoExecutor.execute中丢失或无效( MojoExecutor.java:220)org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)at org .apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:108)位于org.apache.mave的org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:76)n.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)org.apache.maven.life.internal.LifecycleStarter.execute(LifecycleStarter.java:116)atg.apache.maven.DefaultMaven. doOecute(DefaultMaven.java:361)org.apache.maven.maven.DefaultMaven.execute(DefaultMaven.java:155)org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)atg.apache.maven位于org.apache.maven.cli.MavenCli.main(mavenCli.java:157)的.cli.MavenCli.doMain(MavenCli.java:213)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl .invoke(NativeMethodAccessorImpl.java:62)位于org.codehaus.plexus.classworlds的java.lang.reflect.Method.invoke(Method.java:497)的sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43). launcher.Launcher.launchEnhanced(Launcher.java:289)org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)org.codehaus.plexus.classworlds.launcher.Launc her.mainWithExitCode(Launcher.java:415)at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)引起:org.apache.maven.plugin.PluginParameterException:参数'sourceEncoding'for目标org.codehaus.mojo:rpm -maven-plugin:2.1.3:在org.apache.maven的org.apache.maven.plugin.internal.DefaultMavenPluginManager.populatePluginFields(DefaultMavenPluginManager.java:584)中,rpm丢失或无效. plug.internal.DefaultMavenPluginManager.getConfiguredMojo(DefaultMavenPluginManager.java:537)org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:120)org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor. java:208)......还有19个
这是我的pom:
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>TestRpmAndDocker</groupId>
<artifactId>TestRpmAndDocker</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>TestRpmAndDocker</name>
<description>TestRpmAndDocker</description>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>rpm-maven-plugin</artifactId>
<version>2.1.3</version>
<executions>
<execution>
<id>generate-rpm</id>
<goals>
<goal>rpm</goal>
</goals>
</execution>
</executions>
<configuration>
<license>GPL (c) 2005, SWWDC</license>
<distribution>Trash 2005</distribution>
<group>Application/Collectors</group>
<icon>src/main/resources/icon.gif</icon>
<packager>SWWDC</packager>
<prefix>/usr/local</prefix>
<changelogFile>src/changelog</changelogFile>
<defineStatements>
<defineStatement>_unpackaged_files_terminate_build 0</defineStatement>
</defineStatements>
<mappings>
<mapping>
<directory>/usr/local/bin/landfill</directory> …Run Code Online (Sandbox Code Playgroud) 我用rpm -maven-plugin构建了三个包.一个父级和两个需要同一版本父级的插件.一切正常,直到我用XY-SNAPSHOT版本构建它.然后我的rpm版本被截断为XYpart,但值${project.version}仍然是XY-SNAPSHOT.它导致插件需要XY-SNAPSHOT父版本,而我已经安装了XY版本.
我想知道我是否可以在"requires"部分使用"截断"版本或强制插件不截断我的版本......
这是我的配置:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>rpm-maven-plugin</artifactId>
<version>2.0.1</version>
<executions>
<execution>
<id>parent-package</id>
<goals>
<goal>rpm</goal>
</goals>
<configuration>
<name>parent-package</name>
<mappings>
(...)
</mappings>
</configuration>
</execution>
<execution>
<id>first-plugin</id>
<goals>
<goal>rpm</goal>
</goals>
<configuration>
<name>first-plugin</name>
<mappings>
(...)
</mappings>
<requires>
<require>parent-package = ${project.version}</require>
</requires>
</configuration>
</execution>
<execution>
<id>second-plugin</id>
<goals>
<goal>rpm</goal>
</goals>
<configuration>
<name>second-plugin</name>
<mappings>
(...)
</mappings>
<requires>
<require>parent-package = ${project.version}</require>
</requires>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)