来自 maven BOM 的传递依赖关系?



我正在开发一个实用程序库,该库扩展了rdf4j框架,使用其BOM模块导入它,如下所示:

<groupId>com.example</groupId>
<artifactId>rdf4j-utils</artifactId>
<version>1.0</version>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.eclipse.rdf4j</groupId>
<artifactId>rdf4j-bom</artifactId>
<version>3.0.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- core rdf4j dependencies here -->
</dependencies>

是否可以使rdf4j-utils指定的 rdf4j 版本可用于导入模块,以便可以在不指定目标版本的情况下从 BOM 导入其他 rdf4j 模块? 例如:

<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>rdf4j-utils</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>org.eclipse.rdf4j</groupId>
<artifactId>rdf4j-repository-sparql</artifactId>
<!-- !!! implicit rdf4j version as specified by rdf4j-utils -->
</dependency>
</dependencies>

你想要的,通过创建物料清单可以精确地解决。因此,您可以创建自己的BOM来导入rdf4j。然后,您可以将这两个依赖项放在依赖项管理部分中,并将版本定义为单个属性,以创建最少的维护设置。

<properties>
<rdf4j-utils-version>1.0</rdf4j-utils-version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.eclipse.rdf4j</groupId>
<artifactId>rdf4j-bom</artifactId>
<version>3.0.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.example</groupId>
<artifactId>rdf4j-utils</artifactId>
<version>${rdf4j-utils-version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.rdf4j</groupId>
<artifactId>rdf4j-repository-sparql</artifactId>
<version>${rdf4j-utils-version}</version>
</dependency>
</dependencies>
<dependencyManagement>

对于更完整的 BOM 示例,我发现 spring-cloud-依赖项是一个很好的灵感 - 因为它很好,并且功能完整,是一个带有父 pom 的 BOM 并导入许多其他 BOM。

否,但您可以使用名称(如<rdf4j.version>in<properties>(定义属性,并在不同的依赖项中使用它。

最新更新