【发布时间】:2015-06-06 20:38:45
【问题描述】:
我有一个包含多个 pom 层的微服务项目。我已经设置为使用 'org.codehaus.mojo:rpm-maven-plugin:2.1.1' 插件为每个服务生成 rpm。我需要将其设置为生成一个 rpm,并将所有这些 rpm 作为所需的依赖项。
在父 pom 中,我添加了没有源但需要两个 rpm 包的设置。当我向父级添加相同的设置时,它失败了,我不明白我错过了什么。
例如: 项目组 --ProjectCommon --项目1 --项目2
因此,ProjectCommon、Project1 和 Project2 都生成了自己的 rpm,并与它们的 pom 和 war 一起部署到我们的存储库中。 Project1 和 Project2 需要通用且有效。我想做的是将相同的内容放在父 pom 中,这样它将构建一个需要子级的 rpm。然后,不必安装每个 rpm,我可以安装 1 个父 rpm,它将拉/安装所有其他 rpm。
我应该补充一点,在这一层之上有两层父 pom,因为我们将服务分为业务服务和数据访问服务。然后还将服务与其他组件(如具有自己的 pom 的 gui/etc)组合在一起。但是,如果我让它与直接父母 pom 一起使用,那么它也应该适用于他们的父母。
这是我添加到父 pom 中的内容:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>rpm-maven-plugin</artifactId>
<version>2.1.1</version>
<executions>
<execution>
<id>attach-rpm</id>
<goals>
<goal>attached-rpm</goal>
</goals>
<configuration>
<sourceEncoding>${project.build.sourceEncoding}</sourceEncoding>
<group>${rpm.group}</group>
<requires>
<require>project1 > ${project.version}</require>
<require>project2 > ${project.version}</require>
</requires>
<mappings>
<mapping>
<directory>${rpm.directory}</directory>
<filemode>$rpm.permissions}</filemode>
<username>${rpm.user}</username>
<groupname>${rpm.usergroup}</groupname>
</mapping>
</mappings>
</configuration>
</execution>
</executions>
</plugin>
这是其中一个孩子:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>rpm-maven-plugin</artifactId>
<version>2.1.1</version>
<executions>
<execution>
<id>attach-rpm</id>
<goals>
<goal>attached-rpm</goal>
</goals>
<configuration>
<sourceEncoding>${project.build.sourceEncoding}</sourceEncoding>
<group>${rpm.group}</group>
<requires>
<require>weblogic</require>
<require>project1 > ${project.version}</require>
</requires>
<mappings>
<mapping>
<directory>${rpm.directory}/config</directory>
<filemode>$rpm.permissions}</filemode>
<username>${rpm.user}</username>
<groupname>${rpm.usergroup}</groupname>
<sources>
<source>
<location>${project.build.directory}/${project.build.finalName}.${project.packaging}</location>
</source>
</sources>
</mapping>
</mappings>
</configuration>
</execution>
</executions>
</plugin>
这是错误:
[错误] 无法在项目 project-business-parent 上执行目标 org.codehaus.mojo:rpm-maven-plugin:2.1.1:attached-rpm (attach-rpm):RPM 构建执行返回:'1'执行 '/bin/sh -c cd '/workspace/project-pom/services/business/target/rpm/project-business-parent/SPECS' && 'rpmbuild' '-bb' '--target' 'noarch-pc -linux' '--buildroot' '/workspace/project-pom/services/business/target/rpm/project-business-parent/buildroot' '--define' '_topdir /workspace/project-pom/services/business/目标/rpm/project-business-parent' 'project-business-parent.spec'' -> [帮助 1] org.apache.maven.lifecycle.LifecycleExecutionException: 未能执行目标 org.codehaus.mojo:rpm-maven-plugin:2.1.1:attached-rpm (attach-rpm) on project-business-parent: RPM 构建执行返回: '1' 执行 '/bin/sh -c cd '/workspace/project-pom/services/business/target/rpm/project-business-parent/SPECS' && 'rpmbuild' '-bb' '--target' 'noarch-pc-linux' '--buildroot' '/workspace/project-pom/services/business/target/rpm/project-business-parent/buildroot' '--define' '_topdir /workspace/project-pom/服务/业务/目标/rpm/project-business-parent''project-business-parent.spec'' 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:216) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) 在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) 在 org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) 在 org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) 在 org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:317) 在 org.apache.maven.DefaultMaven.execute(DefaultMaven.java:152) 在 org.apache.maven.cli.MavenCli.execute(MavenCli.java:555) 在 org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214) 在 org.apache.maven.cli.MavenCli.main(MavenCli.java:158) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) 在 org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) 在 org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) 在 org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) 引起:org.apache.maven.plugin.MojoExecutionException:RPM 构建执行返回:'1'正在执行'/bin/sh -c cd'/workspace/project-pom/services/business/target/rpm/project-business- parent/SPECS' && 'rpmbuild' '-bb' '--target' 'noarch-pc-linux' '--buildroot' '/workspace/project-pom/services/business/target/rpm/project-business-parent /buildroot' '--define' '_topdir /workspace/project-pom/services/business/target/rpm/project-business-parent' 'project-business-parent.spec'' 在 org.codehaus.mojo.rpm.RPMHelper.buildPackage(RPMHelper.java:149) 在 org.codehaus.mojo.rpm.AbstractRPMMojo.execute(AbstractRPMMojo.java:633) 在 org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:106) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) ... 19 更多
编辑:使用“mvn -X install”添加了更详细的错误。谢谢 jdevelop!
【问题讨论】:
-
请发布“mvn -X ...”的输出,这将提供有关为什么无法启动该 shell 脚本的更多信息。
标签: maven rpm parent-pom