我有一个以下的gradle构建脚本
apply plugin: 'java'
sourceSets {
test {
java {
srcDir 'tests'
}
}
main{
java {srcDir 'web-schedule\\src'}
}
}
repositories {
mavenCentral()
}
dependencies {
compile 'javax:javaee-api:6.0'
compile 'javax:javaee-web-api:6.0'
testRuntime 'org.jboss.arquillian:arquillian-bom:1.0.3.Final'
testRuntime 'org.jboss.arquillian.junit:arquillian-junit-container:1.0.3.Final'
testRuntime 'org.jboss.arquillian.container:arquillian-glassfish-remote-3.1:1.0.0.CR3'
testRuntime 'junit:junit:4.+'
testRuntime 'org.jboss.weld:weld-api:1.1.Final'
}
我尝试使用gradle实现全自动编译和测试执行。 基本上问题是库依赖性。为了在没有测试的情况下编译项目本身,我只需要关注库
compile 'javax:javaee-api:6.0'
compile 'javax:javaee-web-api:6.0'
但是对于测试编译我还需要其他所有。但是在测试编译过程中,如果我拥有它,它会引发异常。我发现解决方案将其从测试编译和执行过程中排除。现在我手动完成。我想要实现的是完全自动完成。我需要做什么。
答案 0 :(得分:2)
我不明白为什么你必须删除除前两个以外的所有依赖项来编译生产代码,因为那里没有testRuntime
配置。不确定是否必须删除前两个依赖项以进行测试编译,但是您必须删除它们才能执行测试。这是我会尝试的:
sourceSets {
test {
runtimeClasspath -= configurations.compile
// additionally try this:
// compileClasspath -= configurations.compile
}
}
答案 1 :(得分:1)
javaee-api-6.0.jar是一个格式错误的jar,它没有方法体,只有签名。所以它不可能在运行时使用它。所以你可以从测试的类路径中排除这个特定的库:
configurations {
testRuntime.exclude module: 'javaee-api'
}