来自 Maven BOM 的传递依赖?
Transitive dependency from 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>
不,但是您可以在 <properties>
中定义一个名称类似于 <rdf4j.version>
的 属性 并在不同的依赖项中使用它。
您想要的正是通过创建物料清单来解决的。因此,您可以创建自己的 BOM,导入 rdf4j。然后您可以将两个依赖项放在 dependencyManagement 部分并将版本定义为单个 属性 以创建最小的维护设置。
<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-dependencies 是一个很好的灵感来源 - 因为它很好并且功能完整,是一个带有父 pom 的 BOM 并导入许多其他 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>
不,但是您可以在 <properties>
中定义一个名称类似于 <rdf4j.version>
的 属性 并在不同的依赖项中使用它。
您想要的正是通过创建物料清单来解决的。因此,您可以创建自己的 BOM,导入 rdf4j。然后您可以将两个依赖项放在 dependencyManagement 部分并将版本定义为单个 属性 以创建最小的维护设置。
<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-dependencies 是一个很好的灵感来源 - 因为它很好并且功能完整,是一个带有父 pom 的 BOM 并导入许多其他 BOM。