【发布时间】:2019-04-21 10:18:22
【问题描述】:
我有一个 gradle 项目 A,我想将其导出为库,现在我使用 maven 发布插件从其 build.gradle 生成 pom.xml。并成功上传到本地神器。
现在我可以将它导入另一个项目,但不考虑依赖项。
例如:我的库A 具有依赖关系B 和C。当我在项目中使用A 时,它不会下载B 和C。
我假设我在生成 A 时做错了(不正确的 pom.xml/ 或任何其他错误)。
但我想知道,Maven 是如何计算传递依赖的。比如,它扫描哪些文件/位置,在哪里查找依赖项?
代码
在项目A中生成pom.xml的任务。
task writeNewPom << {
pom {
project {
groupId 'com.a.b'
version '1.0.0'
}
}.writeTo("src/main/resources/META-INF/maven/com.a.b/feature-store-lib/pom.xml")
}
我的 pom.xml 的位置在META-INF/maven/com.a.b/feature-store-lib/
我可以成功上传到 artifactory。
我也可以在另一个 gradle 项目中正确导入,但缺少它的传递依赖项。
这是gradle dependencies的裁剪输出
| | \--- org.junit.platform:junit-platform-commons:1.3.1 (*)
| \--- junit:junit:4.12
| \--- org.hamcrest:hamcrest-core:1.3
+--- com.a.b:feature-store-lib:0.4
+--- io.github.microutils:kotlin-logging:1.6.22
| +--- io.github.microutils:kotlin-logging-common:1.6.22
如您所见,没有来自
com.a.b:feature-store-lib:0.4
需要调试的想法。
【问题讨论】:
-
Maven 和 Gradle 都在 Maven 存储库中查找它们。不过,如果您也在另一个项目中使用 Gradle,那么 Maven 是如何做的就无关紧要了。您混淆了 Maven 存储库和 pom.xml 定义,以及 Maven 构建工具。 Gradle 使用存储库和 pom,但不使用 Maven 构建工具。
-
如果您发布了相关代码和错误,我们可以提供帮助。
-
@JBNizet 对,我对它们有点困惑。但现在掌握了它,我也在另一个项目中使用 gradle。现在,我不确定 gradle 构建工具如何查找 pom.xml 定义,因为显然这不起作用。也会发布代码。
-
如果您发布了相关代码和错误,我们可以提供帮助。
-
@JBNizet 发布了更多详细信息。