代码之家  ›  专栏  ›  技术社区  ›  Akashdeep Saluja

maven如何寻找可传递依赖关系

  •  0
  • Akashdeep Saluja  · 技术社区  · 5 年前

    A ,我想将其导出为库,现在我使用maven publish plugin生成pom.xml文件从它的 build.gradle

    现在我可以将它导入到另一个项目中,但是不考虑依赖关系。

    A 有依赖项 B C . 当我使用 A B类 C级 .

    我想我在这件事上做错了什么 (不恰当) pom.xml /或任何其他错误)。

    代码

    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")
    }
    

    META-INF/maven/com.a.b/feature-store-lib/

    我也可以在另一个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

    0 回复  |  直到 5 年前
        1
  •  0
  •   Lucas Rouckhout    5 年前

    首先,我将假设您以这种方式生成pom是因为一些外部需求。否则我建议使用 documentation . 通过这种方式,发布到artifactory变得非常容易。

    应用程序编程接口 需要向工件的任何用户公开的依赖项的配置。

    dependencies {
        api 'org.apache.httpcomponents:httpclient:4.5.7' // Exposed
        implementation 'org.apache.commons:commons-lang3:3.5' // Not exposed
    }
    

    有关更多信息,请参阅gradle文档: https://docs.gradle.org/current/userguide/java_library_plugin.html#sec:java_library_configurations_graph