3

我有一个带有多个 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 &gt; ${project.version}</require>
                        <require>project2 &gt; ${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 &gt; ${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!

4

1 回答 1

0

最后注意到 $rpm.permissions} 缺少 { 字符。哦!

更改为 ${rpm.permissions} 一切正常!

于 2015-04-02T23:56:23.750 回答