gpt4 book ai didi

java - 如何在编译时访问嵌套依赖项?

转载 作者:行者123 更新时间:2023-12-02 08:49:40 27 4
gpt4 key购买 nike

我开发了两个库:cms-libcommon-lib

cms-lib 依赖于 common-lib 像这样

# gradle.build of cms-lib

dependencies {
implementation 'com.example.shared:common-lib:1.0-SNAPSHOT'
}

common-lib 包含一些公共(public)类 - 例如com.example.shared.common.Content.java

这个想法是,cms-lib供第三方客户使用(他们应该在其gradle依赖项中声明它),而common-lib应该隐藏起来客户(客户不必声明其 gradle 依赖项)。所以他们只声明 cms-lib - 像这样:

# A
# build.gradle of a consumer of `cms-lib`

dependencies {
implementation 'com.example.shared:cms-lib:1.0-SNAPSHOT'
}

这意味着common-lib嵌套了cms-lib的依赖。

我希望 cms-lib 的客户可以访问嵌套依赖项 common-lib 中的公共(public)类。但事实证明,当我收到编译错误时,它们无法访问:

> Task :compileJava FAILED
C:\temp\lib-test\src\main\java\consumer\Controller.java:3: error: package com.example.shared.common does not exist
import com.example.shared.common.Content;

看来在这种情况下,support-lib的公共(public)类在编译时不可用(可能仅在运行时)。

如何在编译时访问嵌套依赖项?

最佳答案

您需要申请java-librarycms-lib项目。然后你需要定义 common-libapi配置以便使其在 cms-lib 的使用者的类路径上可用

您可以阅读有关 api 的更多信息与 implementationJava library plugin 的文档中.

# gradle.build of cms-lib

dependencies {
api 'com.example.shared:common-lib:1.0-SNAPSHOT'
}


# A
# build.gradle of a consumer of `cms-lib`

dependencies {
implementation 'com.example.shared:cms-lib:1.0-SNAPSHOT'
}

关于java - 如何在编译时访问嵌套依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60866943/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com