2015-04-02 54 views
2

我有一个包含多个pom图层的microservices项目。我设置了使用'org.codehaus.mojo:rpm-maven-plugin:2.1.1'插件为每个服务生成rpms。我需要将它设置为生成一个rpm,并将所有这些rpms作为所需的依赖关系。如何设置maven父pom从子rpms构建rpm

在父pom中,我添加了没有源的设置,但需要两个rpm包。当我向父母添加相同的设置时,它会失败,我不明白我缺少什么。

例如: 项目组 --ProjectCommon --Project1 --Project2

所以ProjectCommon,PROJECT1和Project2中都产生并部署到我们的仓库沿着他们的劲歌和战争自己的RPM。 Project1和Project2需要通用并且可行。我想要做的是把它放在父pom中,所以它会建立一个需要孩子们的rpm。然后,不必安装每个rpm,我可以安装1个父级rpm,并将其拉出/安装所有其他rpm。

我应该补充说,在这个之上有两个级别的父级poms,因为我们将这些服务分组为业务服务和数据访问服务。然后还从其他组件的服务组合在一起,例如gui/etc,它们有自己的poms。但是,如果我将它与父母的父母一起工作,那么它也应该为他们的父母工作。

这是我加入到父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> 

以下是错误:

[ERROR] Failed to execute goal org.codehaus.mojo:rpm-maven-plugin:2.1.1:attached-rpm (attach-rpm) on project project-business-parent: RPM build execution returned: '1' executing '/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: Failed to execute goal org.codehaus.mojo:rpm-maven-plugin:2.1.1:attached-rpm (attach-rpm) on project project-business-parent: RPM build execution returned: '1' executing '/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) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) at org.apache.maven.lifecycle.internal.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) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:317) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:152) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:555) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214) at org.apache.maven.cli.MavenCli.main(MavenCli.java:158) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at 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) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) Caused by: org.apache.maven.plugin.MojoExecutionException: RPM build execution returned: '1' executing '/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) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:106) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) ... 19 more

编辑:新增“mvn -X install”的详细错误。谢谢jdevelop!

+1

请发布“mvn -X ...”的输出,这将提供更多信息,说明为什么该shell脚本无法启动。 – jdevelop 2015-04-02 01:54:41

回答

0

结束注意$ rpm.permissions}缺少{字符。 D'哦!

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