我有一个带有多个 pom 层的微服务项目。我已经设置为使用 'org.codehaus.mojo:rpm-maven-plugin:2.1.1' 插件为每个服务生成 rpm。我需要将其设置为生成一个 rpm,并将所有这些 rpm 作为所需的依赖项。
在父 pom 中,我添加了没有源但需要两个 rpm 包的设置。当我向父级添加相同的设置时,它失败了,我不明白我错过了什么。
例如:项目组 --ProjectCommon --Project1 --Project2
因此,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/target/rpm /project-business-parent' 'project-business-parent.spec'' -> [Help 1] org.apache.maven.lifecycle.LifecycleExecutionException: 未能执行目标 org.codehaus.mojo:rpm-maven-plugin:2.1 .1:attached-rpm (attach-rpm) 在项目 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/services/business/target/rpm/project-business-parent' 'project-business-parent.spec'' at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:216) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 在 org.apache.maven.lifecycle。内部的。LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) at 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) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at 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'' at org.codehaus.mojo.rpm.RPMHelper.buildPackage(RPMHelper.java:149) at 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 更多_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.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:106) 在 org.apache.maven.lifecycle.internal 的 org.codehaus.mojo.rpm.AbstractRPMMojo.execute(AbstractRPMMojo.java:633)。 MojoExecutor.execute(MojoExecutor.java:208) ... 还有 19 个_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.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:106) 在 org.apache.maven.lifecycle.internal 的 org.codehaus.mojo.rpm.AbstractRPMMojo.execute(AbstractRPMMojo.java:633)。 MojoExecutor.execute(MojoExecutor.java:208) ... 还有 19 个apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) ... 还有 19 个apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) ... 还有 19 个
编辑:使用“mvn -X install”添加了更详细的错误。谢谢jdevelop!