当前位置: 首页 > 知识库问答 >
问题:

如何设置maven父pom从子rpms构建rpm

宋智明
2023-03-14

我有一个具有多个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。然后我可以安装1个父rpm,而不是安装每个rpm,它会拉/安装所有其他的。

我应该补充一点,在这个之上有两个级别的父pom,因为我们将服务分组为业务服务和数据访问服务。然后还将服务从其他组件(如gui/etc)中分组到一起,这些组件有自己的pom。但是如果我让它与直接的父pom一起工作,那么它也应该适用于它们的父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>

以下是错误:

[错误]无法执行目标组织。科德豪斯。mojo:rpm-maven插件:2.1.1:attached-rpm(attached-rpm)on-project-project-business-parent:rpm-build-execution返回:“1”executing“/bin/sh-c-cd”“/workspace/project-pom/services/business/target/rpm/project-business-parent/SPECS”

编辑:使用“mvn-X install”添加了更多详细错误。谢谢你jDevelopment!

共有1个答案

储阳曦
2023-03-14

最后注意到了$rpm。权限}缺少{字符。哦!

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

 类似资料:
  • 我是使用maven和jenkins的新手。我正在尝试从父pom继承到子pom的依赖关系,它显示以下错误: 这是我的父母POM: 这是我的孩子波姆: 这是我如何尝试从父POM继承子POM中的依赖关系: 如果我在子POM中放置这些相同的依赖项,它会完美地工作。我使用jenkins在nexus中进行安装和部署。我使用的是maven-3.3.9。在jenkins中,我阅读了git中两个不同maven项目中

  • 我有一个带有子pom B、C和D的父pom A,在B、C和D中,我有相同类型的依赖项。 ie父Pom 儿童Pom 到目前为止,我已经尝试过编辑插件surefire,当试图排除子pom的测试范围时,它不起作用。 我的问题是,是否有一种方法可以将概要文件添加到父pom中,以排除所有子pom的类型测试jar的所有依赖项。谢谢

  • 当我使用mvn install构建工件时,我看到JAR在我的.m2文件夹中构建,但是Project.version没有替换为实际版本,即1.0-Snapshot。 > 每个工件的.m2存储库中的父pom和/或子pom是否具有指定的版本,或者是否为Project.version 我是否应该在父POM中指定Project.Version作为属性。maven文档说明Project.version可由De

  • 问题内容: 我是使用Maven和Jenkins的新手。我试图继承从父pom到子pom的依赖关系,它显示以下错误: 这是我的父母POM: 这是我的孩子POM: 这是我尝试从父POM继承子POM中的依赖项的方法: 如果我将相同的依赖项放在子POM中,则效果很好。我使用jenkins在nexus中进行安装和部署。我正在使用maven-3.3.9。在詹金斯,我从git中阅读了两个不同的Maven项目中的父

  • 我有一个父级pom a和子级pom B、C和D。在B、C和D中,我有相同类型的依赖关系。 ie母Pom

  • 使用可以用于基于的遗留用例,但也可以测试我们正在迁移的未来用例:。 我是否可以在每次修改POM时实现以下反应器构建?或者,类似的东西?或者,Maven仅仅是这个用例的错误工具吗? 理想情况下,我希望在一个反应器构建中实现所有功能,每个编译并与每个继承的依赖项一起使用。我知道这会使我的Maven repo处于不希望的状态,但至少我可以将反应器构建插入到我的CI,并确保我的构建在依赖平台上运行。 注意