maven - 来自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 版本rdf4j-utils
可用于导入模块,以便可以从 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 。然后,您可以将这两个依赖项放在 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是一个很好的灵感 - 因为它很好,并且具有完整的 BOM 与父 pom 并导入许多其他 BOM。
推荐阅读
- python - 在 FastAPI 中连接数据库的最佳方法是什么?
- python - 无法在全新的 anaconda 环境中安装 apache-beam
- google-apps-script - appendParagraph - 在第一行添加空格
- c++ - c++ new 不存储对象
- flutter - ExpansionTile 不会滚动到打开的内容
- python - 替换单词,但替换了具有相同字母格式的另一个单词
- java - 如果绑定结果有错误,API 是否应该抛出异常?
- spring - 如何模拟 RestTemplate 交换?
- r - 如何改进沿 ablines 对齐文本的方式?
- html - HTML:iframe 和段落在同一行