【发布时间】:2021-12-31 00:01:21
【问题描述】:
我正在使用QR-Bill library v2.5.3。作为其依赖项之一,它使用[2.0.0,3.0) 范围指定 PDFBox:
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>[2.0.0,3.0)</version>
<scope>runtime</scope>
</dependency>
对于 Gradle 项目,依赖项解析为 pdfbox-2.0.24。对于 Maven 项目,它解析为 pdfbox-3.0.0-RC1。
Maven 和 Gradle 真的对待版本范围不同吗?库的正确范围是多少,以便 Gradle 和 Maven 都使用最新的 2.x 版 PDFBox 但不使用 3.x 版(因为它不兼容)?
更多调试细节:
Maven 项目
https://github.com/manuelbl/SwissQRBill/tree/master/examples/maven_example
% mvn dependency:tree
[INFO] net.codecrete.qrbill:maven-example:jar:1.0-SNAPSHOT
[INFO] \- net.codecrete.qrbill:qrbill-generator:jar:2.5.3:compile
[INFO] +- io.nayuki:qrcodegen:jar:1.7.0:runtime (version selected from constraint [1.6.0,2.0))
[INFO] \- org.apache.pdfbox:pdfbox:jar:3.0.0-RC1:runtime (version selected from constraint [2.0.0,3.0))
[INFO] +- org.apache.pdfbox:fontbox:jar:3.0.0-RC1:runtime
[INFO] \- commons-logging:commons-logging:jar:1.2:runtime
Gradle 项目
https://github.com/manuelbl/SwissQRBill/tree/master/examples/gradle_example
% gradle dependencies --configuration runtimeClasspath
runtimeClasspath - Runtime classpath of source set 'main'.
\--- net.codecrete.qrbill:qrbill-generator:2.5.3+ -> 2.5.3
+--- io.nayuki:qrcodegen:[1.6.0,2.0) -> 1.7.0
\--- org.apache.pdfbox:pdfbox:[2.0.0,3.0) -> 2.0.24
+--- org.apache.pdfbox:fontbox:2.0.24
| \--- commons-logging:commons-logging:1.2
\--- commons-logging:commons-logging:1.2
【问题讨论】:
-
这很奇怪。绝对看起来像一个 Maven 错误。报告它,他们可能会在 2030 年之前承认它。