gpt4 book ai didi

spring-boot - Spring Boot Test不适用于Java 11

转载 作者:行者123 更新时间:2023-12-03 04:14:54 26 4
gpt4 key购买 nike

我试图将现有的Java 8多项目gradle应用程序升级到Java11。解决了一些编译问题之后,我最终遇到了测试用例中的问题。当我在Intellij中运行测试时,它将引发以下错误:

错误:java:尝试重新创建类型为{QueryDsl classes}的文件

它正在尝试生成Querydsl类,但是由于这些类已经存在,因此测试将引发异常。

我正在使用Java11,IntelliJ 2019,Gradle 5运行该应用程序。

这些测试在Java8中按预期工作。

我不知道是什么导致此错误。谁能帮我理解这一点。

代码段如下。

根项目build.gradle:

buildscript {
repositories {
maven {
url "https://plugins.gradle.org/m2/"
}
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:2.1.4.RELEASE)
classpath("net.ltgt.gradle:gradle-apt-plugin:0.21")
}
}
subprojects {

apply plugin: 'java'

repositories {
mavenCentral()
}

sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11

task allDependencies(type: DependencyReportTask) {}

jar {
baseName = "${parent.name}-${project.name}"
}

sourceSets {
main {
java {
srcDirs 'src/main/java', 'build/generated/sources/main/java', 'build/generated/sources/annotationProcessor/java/main'
}
}
}
}



子项目build.gradle:
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'net.ltgt.apt'

bootJar {
baseName = "test"
version = "1.0.0"
}

dependencies {
compile("org.springframework.boot:spring-boot-starter-data-jpa: 2.1.4.RELEASE")
compile("com.querydsl:querydsl-core:4.1.3")
compile("com.querydsl:querydsl-jpa:4.1.3")
annotationProcessor(
"com.querydsl:querydsl-apt:4.1.3:jpa",
"javax.annotation:javax.annotation-api:1.3.2"
)
annotationProcessor("org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.2.Final")

testCompile("org.springframework.boot:spring-boot-starter-test:2.1.4.RELEASE")
testCompile("com.h2database:h2:2.1.4.RELEASE")
}


整合测试
@RunWith(SpringRunner.class)
@SpringBootTest(classes = MainClass.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class ServiceImplTest {

@Autowired
private Service1Impl service;

@Test
public void getData() {
Data data = service.getData();
Assert.assertEquals(0, data.size());
}
}

最佳答案

我有同样的问题,问题出在gradle中依赖项的顺序。 intellij中的Java编译器以某种方式无法正常工作。

确保您具有QueryDSL的此依赖项

annotationProcessor group: 'com.querydsl', name: 'querydsl-apt', version: querydsl_version, classifier: 'jpa'
annotationProcessor group: 'org.hibernate.javax.persistence', name: 'hibernate-jpa-2.1-api', version: hibernate_jpa_version
annotationProcessor group: 'javax.annotation', name: 'javax.annotation-api', version: javax_annotation_version

以防万一,请删除项目中的out文件夹,然后使用Ctrl + f9进行重建。

除了注释,从gradle和test命令执行构建工作正常。看看这个 https://blog.jdriven.com/2018/10/using-querydsl-annotation-processor-with-gradle-and-intellij-idea/

关于spring-boot - Spring Boot Test不适用于Java 11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57038296/

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