导入物料清单中使用的 maven 属性(bom)

     2023-02-22     232

关键词:

【中文标题】导入物料清单中使用的 maven 属性(bom)【英文标题】:Import maven property used in bill of materials (bom) 【发布时间】:2018-02-08 07:56:30 【问题描述】:

我们有一个项目布局,在 bom 文件中包含子模块和依赖项:

projectA
    bom           
    module1
    module2

实际版本号在 bom 文件中定义为属性,因此对于每个依赖项,我们都有类似

    <properties>
        <guice-version>4.1.0</guice-version>
    </properties>

<dependencies>
    <dependency>
        <groupId>com.google.inject</groupId>
        <artifactId>guice</artifactId>
        <version>$guice-version</version>
    </dependency>
</dependencies>

projectA中的***pom在dependecyManagement部分导入bom

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>group</groupId>
            <artifactId>bom</artifactId>
            <version>1.0.0</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>
    </dependencies>
</dependencyManagement>

这一切都很好,我们有集中的依赖定义。

但是,在构建过程中的某一时刻,我们需要使用其中一个依赖项的版本。我希望在 dependencyManagement 部分中导入 bom 也会将属性导入*** pom,但事实并非如此。也不可能使 bom 成为具有节的*** pom 的子项,因为这会在 pom 文件之间创建循环依赖。

我考虑将属性放入外部文件,并在需要时使用 maven 属性插件读取它。这显然在我们需要获取依赖版本的 bom 和 pom 文件中。但是,由于 bom 没有打包为 jar,所以路径必须是硬编码的。

我可以通过将属性复制到两个地方来修复它,但我不想这样做。有没有办法获取依赖项的版本,例如使用依赖定义的属性?

这个问题似乎很常见,我想知道我们是否在项目结构中做错了什么。在这种情况下,集中属性的标准方法是什么?

【问题讨论】:

请看一下这个问题及其接受的答案:***.com/questions/30164134/…。我认为除了使用父 pom 之外,没有其他方法可以集中属性。 不,我不认为你错过了什么。 maven 中的 bom 支持有点“高大上”,将来可能值得更清晰的支持。还有另一个问题可能会有所帮助:***.com/questions/50698654/… - 如果您感兴趣的依赖项在 jar 中包含一些元数据文件,则 classpath: variant 可能会起作用。除此之外:您是否考虑过编写自己的 Maven 插件?阅读bom然后你想要的属性?有一个类似的插件:github.com/apifocal/bom-maven-plugin 可能对你有用。 【参考方案1】:

您可以尝试将 BOM 用作父模块的父模块,因为 BOM 在技术上是 POM 的某种最小版本。这是官方 Maven 项目在此处描述的内容:

http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

我不喜欢这个解决方案,因为如果你已经从父级扩展,你就会在这里遇到多继承问题。

BOM 似乎无法满足您的要求。它只组装一堆依赖项,例如父项目的依赖项管理部分的提取。但是,它的内部结构对您的项目应该无关紧要。如果 BOM 在结构上发生变化,您的项目将不会受到影响。也许在这里不使用 BOM 是更合适的解决方案,而是选择依赖项并在此处使用您自己的版本属性。取决于 BOM 的复杂程度。

所以要么使用 BOM 作为父级,要么完全忽略 BOM,因为您需要的比 BOM 提供的更多。

【讨论】:

【参考方案2】:

BOM 导入的实际目的正是为了避免必须声明 BOM 中声明的依赖项的确切版本。 所以,考虑到你有一个 BOM 女巫声明了一个类似的依赖项

<dependency>
    <groupId>com.google.inject</groupId>
    <artifactId>guice</artifactId>
    <version>$guice-version</version>
</dependency>

(我们假设您的 BOM 还声明了其中的属性)。 因此,在您的项目中,您可以声明 guice 依赖项,而无需确定版本属性,因为它是从 BOM 继承的。

<dependency>
    <groupId>com.google.inject</groupId>
    <artifactId>guice</artifactId>
</dependency>

好处是,如果你改变你的 BOM 版本,这种依赖将相应地更新,而无需对你的项目的 pom.xml 做任何改变!

【讨论】:

什么是 Maven 依赖管理中的物料清单? [关闭]

】什么是Maven依赖管理中的物料清单?[关闭]【英文标题】:WhatisBill-Of-MaterialsinMavendependencymanagement?[closed]【发布时间】:2015-01-2121:18:47【问题描述】:新的Spring版本中提供的物料清单功能有什么重要用途,基本上这个名字听起来... 查看详情

erp之物料清单(bom)

ERP之物料清单(BOM)物料清单BOM是定义产品结构的技术文件,又称为产品结构表或产品结构树,它是计算物料需求计划的主要基础。在所有基础数据中,物料清单的影响最大,对它的准确性要求也最高。一般说来,一个管理很好的... 查看详情

solidedge性质管理者如何获取装配体的bom表物料清单

工具-性质管理者在里面可以输入每个文件的文件号,版本号,作者等信息 ?右击点击显示性质,你还可以添加或删除文件属性 ?把需要的属性更改好了之后,可以输出装配体的所有零件信息到Excel中,点击工具-报告即可 ?不过... 查看详情

pp-物料清单用户处理手册

1系统操作时间1、新旧物料的替换需有BOM的产生2、 BOM中组件发生变化时需有BOM的更改2 系统操作权限角色编码 角色名称Z:PP_PS_007_1000_200 PP主数据维护员3 适应的业务流程流程编码 流程名称JDB-TB-PP-010 物料清单维护流程4 操作结果... 查看详情

如何使用物料清单的父子记录创建简单的数据关系

】如何使用物料清单的父子记录创建简单的数据关系【英文标题】:HowtocreateasimpledatarelationshipusingparentchildrecordsforaBillofMaterials【发布时间】:2016-12-2120:29:00【问题描述】:我正在尝试开发一个简单的BOM(物料清单)管理器,它... 查看详情

金蝶财务软件kis专业版怎么制作bom(物料清单)

金蝶财务软件KIS专业版制作BOM(物料清单)如下:组装件和自制件都能制作BOM。组装件是由多个物料组成,不是生产环节的组装,而在销售出库环节的仓库组装。自制件也是有多个物料组成,是通过生产环节自制的,而不是在销... 查看详情

sap如何查bom

...各BOM的内容?SAP中的BOM为BILLOFMATERIAL的缩写,中文意思为物料清单,分为生产BOM和财务BOM。生产BOM用于流程订单的制定,便于流程订单的自动生成,如无物料用量调整,可直接使用依照生产BOM生成的工单;财务BOM,顾名思义为财... 查看详情

物料清单数据库模型

】物料清单数据库模型【英文标题】:Billofmaterialsdatabasemodel【发布时间】:2013-07-1509:55:28【问题描述】:我目前正在开展一个项目,该项目应有助于我们控制库存以及采购以组装最终产品。我们正处于对数据库进行建模的阶段... 查看详情

Maven 是不是有办法将依赖版本作为属性获取?

...:43:19【问题描述】:我正在使用BOM将依赖项从另一个项目导入到我的项目中,并且我需要一种方法来引用已在所述BOM中声明的依赖项版本。到目前为止,我已经尝试将依赖版本作为属性列在BOM中, 查看详情

sap中已知物料,如何察看包含该物料的bom

RTSAP里面有BOM反查功能,可以查询所有使用这个物料的成品或者半成品BOM。追问能告诉我T-Code或者路径吗?参考技术ASAP里面有BOM反查功能,可以查询所有使用这个物料的成品或者半成品BOMcs15  反查 查看详情

springboot:运行maven打包的jar包报错-jar中没有主清单属性

使用mvnpackage打jar包,运行java-jarXXX.jar的时候报错:jar中没有主清单属性。解决办法:pom.xml中添加<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven 查看详情

三层结构主要包括哪些类的设计及各类的主要作用

...限制”,只能上这么多,具体内容自己到参考资料查吧!物料清单(BillofMaterial,BOM)本文将就静态数据中物料清单(BillofMaterial,BOM)的作用,结合CAD(ComputerAidedDesign,计算机辅助设计)、CAPP(ComputerAidedProcessPlanning,计算机... 查看详情

如何在 Maven 中使用 BOM 文件?

】如何在Maven中使用BOM文件?【英文标题】:HowtouseBOMfilewithMaven?【发布时间】:2013-01-3006:18:54【问题描述】:我在互联网上进行了大量研究,但没有找到任何简单的解释如何使用Maven处理BOM文件。问题是我使用的是JBoss7.1.1,我想... 查看详情

怎样修改bom里的参数

  方法:  生产——基础数据——物料清单——物料单控制数据——定义修正参数?工程更改管理勾去掉生产——基础数据——物料清单——通用数据——配置BOM的历史需求  BOM(BillOfMaterials),即材料报表,它能详细表... 查看详情

sap中如何调整bom中的物料顺序

参考技术A你打开BOM以后,修改项目序号,然后保存,退出再进去就看到,BOM的顺序按照你自己设定的生成了。 参考技术B直接更改BOM 参考技术C哪种BOM?生产的还是销售的?不过都可以直接改啊。 参考技术D直接修改插入 查看详情

使用 Spring Boot BOM 管理 Maven 插件版本

...:58【问题描述】:我有一个用于SpringBoot项目的MavenPOM。POM导入SpringBootBOM。现在我想自定义一个Maven插件的配置,比如mvn-compiler-plugin。我想使用spring-boot-depen 查看详情

sapmd04模块下bom栏是怎么加出来的

参考技术A解决方法如下:1、SAP中产品BOM物料用量清单创建流程。2、事务代码CS01。3、进入“创建物料BOM:初始屏幕”。4、组件项下,所需添加的子件项编码。组件项下,所需添加的子件项数量。5、工序提前期偏置。6、复制BOM... 查看详情

20170524委外采购的物料bom

...实施:结果:MDBAEKET,"采购订单项目计划行相关:mdpaMDBA***物料主数据BOM表:STKO/SKPOMAST函数:M61LMD_LIST_PO_COMPONENTSMD_LIST_PO_COMPONENTS_ALVEKETMDBA**外包采购订单BOM组 查看详情