运行 测试时无法使用 spring-boot-starter-web 依赖项
Cant use spring-boot-starter-web dependecies when running tests
我有一个使用 gradle(web,common,batch)
的多模块项目
项目运行宁好
然而,当 spring 出现时,当我尝试从批处理模块的测试文件夹中 运行 junit 时,我得到了这个:
Caused by: java.lang.NoClassDefFoundError: org/springframework/http/converter/xml/MappingJackson2XmlHttpMessageConverter
我检查了批处理模块的依赖树:
<batch>gradle -q dependencies --configuration testRuntime
我在尝试导入 spring-boot-start-web
时看到按钮失败
.....
| | +--- com.caucho:resin-hessian:4.0.23
| | +--- org.springframework:spring-jdbc:3.1.0.RELEASE -> 4.1.4.RELEASE (*)
| | +--- com.adobe.blazeds:blazeds-common:3.2.0.3978
| | +--- com.adobe.blazeds:blazeds-proxy:3.2.0.3978
| | +--- org.codehaus.jackson:jackson-core-asl:1.9.2
| | +--- org.codehaus.jackson:jackson-mapper-asl:1.9.2 (*)
| | \--- org.mockito:mockito-all:1.9.5
| +--- com.mycompany.services.configuration:ConfigurationManager:2.0.8 (*)
| +--- com.caucho:resin-hessian:4.0.23
| +--- mysql:mysql-connector-java:5.1.34
| \--- javax.inject:javax.inject:1
+--- org.springframework.boot:spring-boot-starter-test:1.2.1.RELEASE
| +--- junit:junit:4.12
| | \--- org.hamcrest:hamcrest-core:1.3
| +--- org.mockito:mockito-core:1.10.8
| | +--- org.hamcrest:hamcrest-core:1.1 -> 1.3
| | \--- org.objenesis:objenesis:2.1
| +--- org.hamcrest:hamcrest-core:1.3
| +--- org.hamcrest:hamcrest-library:1.3
| | \--- org.hamcrest:hamcrest-core:1.3
| +--- org.springframework:spring-core:4.1.4.RELEASE (*)
| \--- org.springframework:spring-test:4.1.4.RELEASE
| \--- org.springframework:spring-core:4.1.4.RELEASE (*)
+--- org.springframework.batch:spring-batch-test:3.0.2.RELEASE
| +--- junit:junit:4.11 -> 4.12 (*)
| +--- org.hamcrest:hamcrest-all:1.3
| \--- org.springframework.batch:spring-batch-core:3.0.2.RELEASE (*)
\--- org.springframework.boot:spring-boot-starter-web: FAILED
这是我在批处理模块上的build.gradle:
buildscript {
repositories {
maven { url "http://repo.spring.io/libs-release" }
mavenLocal()
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:$project.ext.springBootVersion")
}
}
description = 'batch'
dependencies {
compile("org.springframework.boot:spring-boot-starter-batch:$project.ext.springBootVersion")
testRuntime("org.springframework.batch:spring-batch-test:$project.ext.springBatchVersion") {
exclude(module: 'spring-test')
exclude(module: 'spring-jdbc')
exclude(module: 'commons-io')
exclude(module: 'commons-collections')
}
/* compile ('org.springframework.integration:spring-integration-core:4.1.2.RELEASE')*/
compile project(":common")
testRuntime("org.springframework.boot:spring-boot-starter-web")
}
知道哪里出了问题吗?
谢谢。
几个选项,更改:
testRuntime("org.springframework.boot:spring-boot-starter-web")
至:
compile("org.springframework.boot:spring-boot-starter-web")
此外,我的 Spring 引导 build.gradle
文件不使用 :$project.ext.springBatchVersion
变量。它似乎可以很好地设置变量 - 例如,这是我的(浓缩)示例 build.gradle
文件。:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.2.1.RELEASE")
}
}
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'spring-boot'
repositories {
mavenCentral()
}
dependencies {
compile("org.springframework.boot:spring-boot-starter-web")
compile("org.springframework.boot:spring-boot-starter-actuator")
testCompile("junit:junit")
}
task wrapper(type: Wrapper) {
gradleVersion = '2.2.1'
}
您要么需要在声明依赖项时提供版本号,要么需要应用 Spring Boot 插件(您已将插件声明为构建脚本依赖项,但不似乎已经应用了它)。
当应用 Spring Boot 插件时,它会自动将 spring-boot-starter-web 的版本设置为与插件相同的版本。您可以在文档中看到插件可以为您设置的list of all the versions。
我有一个使用 gradle(web,common,batch)
的多模块项目项目运行宁好
然而,当 spring 出现时,当我尝试从批处理模块的测试文件夹中 运行 junit 时,我得到了这个:
Caused by: java.lang.NoClassDefFoundError: org/springframework/http/converter/xml/MappingJackson2XmlHttpMessageConverter
我检查了批处理模块的依赖树:
<batch>gradle -q dependencies --configuration testRuntime
我在尝试导入 spring-boot-start-web
时看到按钮失败.....
| | +--- com.caucho:resin-hessian:4.0.23
| | +--- org.springframework:spring-jdbc:3.1.0.RELEASE -> 4.1.4.RELEASE (*)
| | +--- com.adobe.blazeds:blazeds-common:3.2.0.3978
| | +--- com.adobe.blazeds:blazeds-proxy:3.2.0.3978
| | +--- org.codehaus.jackson:jackson-core-asl:1.9.2
| | +--- org.codehaus.jackson:jackson-mapper-asl:1.9.2 (*)
| | \--- org.mockito:mockito-all:1.9.5
| +--- com.mycompany.services.configuration:ConfigurationManager:2.0.8 (*)
| +--- com.caucho:resin-hessian:4.0.23
| +--- mysql:mysql-connector-java:5.1.34
| \--- javax.inject:javax.inject:1
+--- org.springframework.boot:spring-boot-starter-test:1.2.1.RELEASE
| +--- junit:junit:4.12
| | \--- org.hamcrest:hamcrest-core:1.3
| +--- org.mockito:mockito-core:1.10.8
| | +--- org.hamcrest:hamcrest-core:1.1 -> 1.3
| | \--- org.objenesis:objenesis:2.1
| +--- org.hamcrest:hamcrest-core:1.3
| +--- org.hamcrest:hamcrest-library:1.3
| | \--- org.hamcrest:hamcrest-core:1.3
| +--- org.springframework:spring-core:4.1.4.RELEASE (*)
| \--- org.springframework:spring-test:4.1.4.RELEASE
| \--- org.springframework:spring-core:4.1.4.RELEASE (*)
+--- org.springframework.batch:spring-batch-test:3.0.2.RELEASE
| +--- junit:junit:4.11 -> 4.12 (*)
| +--- org.hamcrest:hamcrest-all:1.3
| \--- org.springframework.batch:spring-batch-core:3.0.2.RELEASE (*)
\--- org.springframework.boot:spring-boot-starter-web: FAILED
这是我在批处理模块上的build.gradle:
buildscript {
repositories {
maven { url "http://repo.spring.io/libs-release" }
mavenLocal()
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:$project.ext.springBootVersion")
}
}
description = 'batch'
dependencies {
compile("org.springframework.boot:spring-boot-starter-batch:$project.ext.springBootVersion")
testRuntime("org.springframework.batch:spring-batch-test:$project.ext.springBatchVersion") {
exclude(module: 'spring-test')
exclude(module: 'spring-jdbc')
exclude(module: 'commons-io')
exclude(module: 'commons-collections')
}
/* compile ('org.springframework.integration:spring-integration-core:4.1.2.RELEASE')*/
compile project(":common")
testRuntime("org.springframework.boot:spring-boot-starter-web")
}
知道哪里出了问题吗?
谢谢。
几个选项,更改:
testRuntime("org.springframework.boot:spring-boot-starter-web")
至:
compile("org.springframework.boot:spring-boot-starter-web")
此外,我的 Spring 引导 build.gradle
文件不使用 :$project.ext.springBatchVersion
变量。它似乎可以很好地设置变量 - 例如,这是我的(浓缩)示例 build.gradle
文件。:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.2.1.RELEASE")
}
}
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'spring-boot'
repositories {
mavenCentral()
}
dependencies {
compile("org.springframework.boot:spring-boot-starter-web")
compile("org.springframework.boot:spring-boot-starter-actuator")
testCompile("junit:junit")
}
task wrapper(type: Wrapper) {
gradleVersion = '2.2.1'
}
您要么需要在声明依赖项时提供版本号,要么需要应用 Spring Boot 插件(您已将插件声明为构建脚本依赖项,但不似乎已经应用了它)。
当应用 Spring Boot 插件时,它会自动将 spring-boot-starter-web 的版本设置为与插件相同的版本。您可以在文档中看到插件可以为您设置的list of all the versions。