【发布时间】:2020-05-29 20:13:30
【问题描述】:
我经历了the official doc 和许多关于api 和implementation 配置之间区别的 StackOverflow 问题。我想我了解基本,但我真的很想了解依赖项暴露或不暴露是什么意思。
这是我到目前为止所得到的。当我发布我的Java库(用Kotlin编写,但不相关)时,发布的pom文件中的依赖范围是complie(使用api时)或runtime(使用implementation时),即
dependencies {
api "..."
}
<dependency>
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<scope>compile</scope>
</dependency>
dependencies {
implementation "..."
}
<dependency>
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<scope>runtime</scope>
</dependency>
那么在这种情况下暴露依赖真的只是意味着将它们添加到类路径(编译范围)吗?
One of the many answers about api vs implementation 说它只是关于构建优化,如果我们不在类路径中添加所有内容,构建时间会减少是有道理的吗?
还有一个额外的问题,Gradle 文档说 api 配置带有 java-library 插件,但显然,我可以在不应用插件的情况下使用它,这怎么可能?
// Gradle 6.1.1
plugins {
id 'org.jetbrains.kotlin.jvm' version 'XXX'
}
dependencies {
api "myLibrary"
}
【问题讨论】:
标签: gradle