【发布时间】:2020-01-15 21:06:01
【问题描述】:
我从gradle init 任务生成的全新java 库项目开始。然后我按照 gradle java 插件用户指南中给出的步骤添加了一个 integrationTest 任务:https://docs.gradle.org/current/userguide/java_testing.html#sec:configuring_java_integration_tests。但是现在 gradle eclipse 插件不包括 .classpath 文件中的 intTestImplementation 依赖。使用gradle build test 任务,一切都可以正常编译、测试和运行,但是由于 .classpath 缺少 intTestImplementation 依赖项,VSCode 说我的集成测试类使用的是未定义的类型。
我尝试调整此文档中显示的有关 gradle eclipse 插件的配置,但我在那里尝试过的没有任何帮助。 https://docs.gradle.org/current/dsl/org.gradle.plugins.ide.eclipse.model.EclipseClasspath.html
这是我的 build.gradle 文件
plugins {
id 'java-library'
id 'eclipse'
}
repositories {
jcenter()
}
sourceSets {
intTest {
compileClasspath += sourceSets.main.output
runtimeClasspath += sourceSets.main.output
}
}
configurations {
intTestImplementation.extendsFrom implementation
intTestRuntimeOnly.extendsFrom runtimeOnly
}
dependencies {
intTestImplementation 'junit:junit:4.12'
}
task integrationTest(type: Test) {
description = 'Runs integration tests.'
group = 'verification'
testClassesDirs = sourceSets.intTest.output.classesDirs
classpath = sourceSets.intTest.runtimeClasspath
shouldRunAfter test
}
并运行 gradlew eclipse 会生成一个这样的类路径,缺少 junit 依赖项
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="output" path="bin/default"/>
<classpathentry output="bin/main" kind="src" path="src/main/java">
<attributes>
<attribute name="gradle_scope" value="main"/>
<attribute name="gradle_used_by_scope" value="main,test,intTest"/>
</attributes>
</classpathentry>
<classpathentry output="bin/main" kind="src" path="src/main/resources">
<attributes>
<attribute name="gradle_scope" value="main"/>
<attribute name="gradle_used_by_scope" value="main,test,intTest"/>
</attributes>
</classpathentry>
<classpathentry output="bin/test" kind="src" path="src/test/java">
<attributes>
<attribute name="gradle_scope" value="test"/>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry output="bin/test" kind="src" path="src/test/resources">
<attributes>
<attribute name="gradle_scope" value="test"/>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
<classpathentry output="bin/intTest" kind="src" path="src/intTest/java">
<attributes>
<attribute name="gradle_scope" value="intTest"/>
<attribute name="gradle_used_by_scope" value="intTest"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-10/"/>
</classpath>
我希望 gradle eclipse 任务会生成具有 junit 依赖项的 .classpath 文件,但它丢失了。
【问题讨论】:
-
在 intelliJ 中试过,没有问题。但当然它没有使用 gradle eclipse 插件。
-
你试过这里提到的eclipse配置了吗:stackoverflow.com/a/38207361/5065946
标签: java eclipse gradle visual-studio-code gradle-plugin