我从一个全新的java库项目开始,该项目由gradleinit
任务生成。然后,我按照gradle java插件用户指南中给出的步骤添加了一个integrationTest任务:https://docs.gradle.org/current/userguide/java_testing.html#sec:configuring_java_integration_tests.但是现在gradle eclipse插件在中不包含intTestImplementation依赖项。类路径文件。使用gradlebuildtest
任务,一切都可以很好地编译、测试和运行,但这是因为。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
}
运行gradleweclipse
会生成这样一个类路径,它缺少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文件,但它丢失了。
我也在努力进行集成测试。这是我的解决方案,对我有效。
更改源设置:
sourceSets{
intTest {
compileClasspath += sourceSets.main.output
runtimeClasspath += sourceSets.main.output
java.srcDirs=files('src/intTest/java')
resources.srcDirs=files('src/intTest/resources')
}
}
这将修复类路径
我还面临着另一个问题:我的集成测试使用. gradlew集成运行,但是在VS Code中,我得到了一个编译错误,一个库没有找到,尽管依赖关系(仅为集成测试任务设置)被很好地添加了
intTestImplementation 'org.springframework.cloud:spring-cloud-starter-contract-stub-runner'
当我在VScode中单击“运行测试”时,我得到一个编译异常。这可能是VSCode中的一个错误,因为我也尝试了intelliJ相同的代码。没有错误,集成测试在intelliJ ui中运行良好。
要删除此错误,我还添加了测试的依赖项:
testImplementation 'org.springframework.cloud:spring-cloud-starter-contract-stub-runner'
我想在gradle中创建zip/war/jar工件,其中包括几个类,并且只需要依赖项 我有简单的zip任务如下: 现在我想包括一些编译依赖项示例构建。渐变骨架: 对于我的zip任务:
我将给你一个关于我的文件的概述: 设置。分级: Build.Gradle: 注意:我以为没有将依赖项添加到类路径中,但我不确定这一点。但是,我希望Intellij将依赖项添加到类路径中(或者在清单文件中声明) 但是,这会创建一个zip/tar,其中包含一个执行脚本和一个bin文件夹,这不是我的本意。 所以我开始在谷歌上搜索了好几个小时,但我找不到解决问题的方法。
那么,我该如何配置呢?
我想创建一个自动应用其他插件(外部插件)的插件。这需要在调用“apply plugin”之前设置插件的buildscript依赖项。然而,我似乎无法在插件中添加buildscript依赖项,或者我得到:您无法更改未处于未解析状态的配置! 有解决办法吗? 我的示例(非工作)代码:
我以为这会起作用,但事情一定发生了变化(或者我犯了某种错误) 根据父项目的任务,gradle子项目任务的语法是什么? 我在根级别上有以下任务(即子项目闭包之外和所有项目闭包之外)。 我得到的错误是 然后我猜了几件事包括这个 但那给了我错误 版本信息因此
我的项目中有以下设置... 用于SOA风格项目的多项目gradle构建,使用Rabbitmq和Spring集成连接在一起。 包含许多grails项目以及表示服务的普通java/groovy项目。 每个服务项目旁边都有一个项目(jar),其中包含可以使用Spring集成代理的服务的所有公共接口(和消息)。 这些项目使用gradle依赖关系相互关联,然后我使用gradle想法插件生成IntelliJ项