代码之家  ›  专栏  ›  技术社区  ›  Sudhir

我们如何在同一pom中构建和引用bom

  •  1
  • Sudhir  · 技术社区  · 6 年前

    我有一份詹金斯的工作,负责制作家长pom。在父pom中,我还有一个模块BOM。bom本身在同一父POM中引用,如下所示。

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.org.fgn.abs</groupId>
                <artifactId>abs-bom</artifactId>
                <version>${project.version}</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>
        </dependencies> 
    </dependencyManagement>
    

    但无法找到bom的正确版本。很明显,它找不到bom表,因为它尚未构建。 我只是在寻找任何方法来做同样的事情,而不需要单独的工作来构建bom表。

    提前谢谢。

    3 回复  |  直到 6 年前
        1
  •  1
  •   ranjithkr    6 年前

    是的,问得好。一种选择是,您可以首先在Jenkins中使用单独的作业来构建BOM项目,这样,当您构建主父项目时,它会找到依赖关系。我有一些项目是这样配置的,应该可以正常工作。 我认为另一种选择是,您可以将BOM项目作为另一个父项目(如B)中的模块,然后将此父项目作为模块包含在主父项目中。老实说,我还没有尝试第二种方法,但你可以试试。

    HTH公司

        2
  •  0
  •   Santhoshm    6 年前

    而不是使用 <版本(>)${project.version}</版本(>);

    尝试提供明确的版本,如,

    <版本(>);0.0.1-快照(&L)/版本(>);

    您可以参考 http://www.baeldung.com/spring-maven-bom

        3
  •  0
  •   Steven Huypens    3 年前

    这个问题的一个解决方案是像您所做的那样将BOM添加为一个模块,但要确保它是要构建的第一个模块。

    <modules>
        <!-- Run first, not using the parent but part of the aggregator -->
        <module>bom</module>
        <!-- Module 1 using the parent -->
        <module>module1</module>
        <!-- Module 2 using the parent, depends on module 1 -->
        <module>module2</module>
    </modules>
    

    一个简单但优秀的代码示例可以在 https://github.com/anliksim/maven-template-bom

    确保阅读有关版本maven插件的备注(如果您正在使用该插件),并使用 处理所有模块

    mvn versions:set -DnewVersion=1.1-SNAPSHOT -DprocessAllModules=true