gpt4 book ai didi

maven - 在 Maven BOM( Material list )中定义依赖范围是一种好习惯吗?

转载 作者:行者123 更新时间:2023-12-04 19:29:01 26 4
gpt4 key购买 nike

我有一个 pom.xml像这样用作 BOM( Material list )。定义的依赖项之一是 *-test用于测试使用此 BOM 中的库的代码的 Artifact 。

问题是:指定 *-test 是否合适/好的做法?神器仅适用于 test范围在 BOM 本身中,还是应该留给 BOM 用户在其项目的 POM 中指定(如果需要)?

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.example.mylib</groupId>
<artifactId>mylib-bom</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>MyLib (Bill of Materials)</name>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.example.mylib</groupId>
<artifactId>mylib-cool-library</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.example.mylib</groupId>
<artifactId>mylib-test</artifactId>
<version>${project.version}</version>
<scope>test</scope> <!-- === HERE === -->
</dependency>
</dependencies>
</dependencyManagement>
</project>

我正在研究现有项目是如何做到这一点的,例如,Spring 框架 BOM 确实没有明确定义任何范围。但我仍然想知道是否有一些不成文的规则或类似的规则?

最佳答案

最佳实践是让用户决定范围,而不是在 BOM(或父 pom)中设置它。

当您在 BOM 中设置范围(除 compile 之外的任何内容)时,您会更改该依赖项的默认范围,如用户项目所示。 maven 中默认的依赖范围是 compile ,因此通常的做法是在希望编译时省略依赖项的范围。如果 BOM 强加了另一个范围,那么对于使用 BOM 的其他开发人员(甚至您自己)来说,这可能是一个令人讨厌的惊喜。

关于maven - 在 Maven BOM( Material list )中定义依赖范围是一种好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47394837/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com