如何在 gradle 中重用 pom.xml 中定义的依赖项

Posted

技术标签:

【中文标题】如何在 gradle 中重用 pom.xml 中定义的依赖项【英文标题】:how do I reuse the dependencies defined in pom.xml in gradle 【发布时间】:2018-02-10 01:44:56 【问题描述】:

我想重用这个pom.xml file 中定义的依赖项,这是一个相当长的依赖项列表。为了方便起见,我想重用它。

所以我在 build.gradle 文件中添加了这样一行。:

dependencies 
   // unfortunately,  Gradle seems just ignore this line.
   compile("org.activiti:activiti-ui-root:6.0.0")  

但似乎 gradle 只是忽略了这一行。如果我不想重写一长串依赖项,那么重用 pom 文件的最佳方法是什么?

请给我一些建议,非常感谢。

================================

谢谢大家。最后我发现“io.spring.gradle:dependency-management-plugin”有助于解决我的问题。

@madhead 是对的。 pom.xml 只提供 jars 的版本,但不会将任何文件导入我的项目。

pom.xml 实际上并没有定义任何依赖项,它只定义了dependencyManagement 块中的工件版本。因此,在 Gradle 中依赖此工件不会在您的项目中带来任何传递依赖(在 Maven 中也不会,顺便说一句)。

但没关系。版本信息就够了。

这个片段是我用来解决我的问题的。

buildscript 

repositories 
    mavenCentral()
    jcenter()     


dependencies 
    classpath "io.spring.gradle:dependency-management-plugin:1.0.3.RELEASE"
  

.......

project(':editor-image-generator')

dependencyManagement 
  imports 
       // import the pom.xml from outside.
     mavenBom "org.activiti:activiti-ui-root:6.0.0"
  


dependencies 
      // It's good to see that, you don't need to specify the version here.
      // with the mavenBom imported above,  you can always get the right version.
    compile("org.activiti:activiti-bpmn-model")
    testCompile("org.activiti:activiti-bpmn-converter")
    compile("org.activiti:activiti-image-generator")
    compile("org.imgscalr:imgscalr-lib:4.2")
    compile("org.slf4j:slf4j-api")
    testCompile("commons-io:commons-io")
    testCompile("junit:junit")

【问题讨论】:

docs.gradle.org/current/userguide/… 我没有尝试,但我认为你可以实现它。在 Gradle 设置文件中,您可以实现读取 xml pom 文件的功能,获取所有依赖项,然后将它们作为 Gradle 依赖项加载。这只是一个想法。 你认为 Gradle 为什么会忽略这条线?你的build.gradle 的其余部分怎么样? 您可以将 pom 迁移到 build.gradle 并修复可能无法正常工作的内容。只需在带有pom.xml 的项目中运行gradle init,我也同意Lu 为什么您认为Gradle 确实忽略了这种依赖关系? 【参考方案1】:

pom.xml 实际上并没有定义任何依赖项,它只定义了 dependencyManagement block 中的工件版本。因此,在 Gradle 中依赖此工件不会在您的项目中带来任何传递依赖(在 Maven 中也不会,顺便说一句)。

您可以在 Spring's dependency management plugin 中为 Gradle 尝试什么。它允许在 Gradle 中为 BOM 重用 dependencyManagement 块定义。

【讨论】:

谢谢,@madhead,你是对的。您的信息有很大帮助。 Spring 的依赖管理插件非常好用,有助于解决版本问题。

以上是关于如何在 gradle 中重用 pom.xml 中定义的依赖项的主要内容,如果未能解决你的问题,请参考以下文章

`gradle install` 如何生成 `pom.xml` 文件

Gradle build.gradle 到 Maven pom.xml

如何将 gradle 中的 groovy 任务转换为 Gradle Kotlin DSL 以生成 pom.xml?

如何从 android 中的 pom.xml 文件创建 gradle 依赖项?

如何从build.gradle导入依赖关系到pom.xml

Netbeans 使用 pom.xml (Maven) 而不是 build.gradle (Gradle)