使用javax.inject
来调查问题我在IntelliJ IDEA中创建了简约的Gradle项目。
仅包含Main.java
:
import javax.inject.Scope;
public class Main {
public static void main(String[] args) {}
}
的build.gradle
buildscript {
repositories {
mavenCentral()
}
}
apply plugin: 'java'
dependencies {
compileOnly 'javax.annotation:jsr250-api:1.0'
}
和settings.gradle
rootProject.name = 'test'
建立我得到的项目
错误:(1,20)java:包javax.inject不存在
javax有什么问题,为什么它不存在?
嗯,似乎这个问题并不是专门针对javax的。试图从mavenCentral添加不同的依赖项,没有人工作。就像Gradle根本不加载外部库一样。解决
问题在于repositories
- 它必须在buildscript
之外。
答案 0 :(得分:2)
仅编译依赖项与常规“编译”依赖项明显不同。它们不包含在运行时类路径中,并且是不可传递的,这意味着它们不包含在依赖项目中。使用Gradle项目依赖项以及发布到Maven或Ivy存储库时也是如此。在后一种情况下,仅从已发布的元数据中省略仅编译依赖项。
请参阅https://docs.gradle.org/current/userguide/artifact_dependencies_tutorial.html
答案 1 :(得分:2)
只需带上javax.inject
依赖项
compile group: 'javax.inject', name: 'javax.inject', version: '1'