我想重新使用特定的过滤器对于许多项目,所以我想提取并使用一个单独的jar,只是将其添加到任何Web应用程序。
对于建筑我使用的摇篮1.3及以下build.gradle
文件:
apply plugin: 'java'
dependencies {
compile group:'org.slf4j', name:'slf4j-api', version:'1.7.+'
testCompile group:'junit', name:'junit', version:'4.+'
compile group:'org.springframework', name:'spring-web', version:'3.+'
compile group:'org.slf4j', name:'slf4j-log4j12', version:'1.6.+'
compile group:'log4j', name:'log4j', version:'1.2.+'
providedCompile group: 'javax.servlet', name: 'javax.servlet-api', version:'3.+'
}
repositories {
mavenCentral()
}
正如你所看到的,我需要在Servlet API,所以我想添加它像一个行家提供的依赖于成功地编译这个过滤器。
不管怎么说,运行后gradle build
我得到以下错误:
找不到方法providedCompile()为参数[{组=的javax.servlet,名称=的javax.servlet-API,版本= 3 +}]上根项目 '休眠的会话上下文'。
现在,我知道我不能没有WAR插件使用providedCompile但我需要这个项目是一个简单的JAR。 是否有另一种方式做到这一点?
有没有这样的配置出于对盒子java
插件。 但是你可以按照如下建立它自己:
configurations { providedCompile }
dependencies {
providedCompile "javax.servlet:javax.servlet-api:3.+"
}
sourceSets.main.compileClasspath += configurations.providedCompile
sourceSets.test.compileClasspath += configurations.providedCompile
sourceSets.test.runtimeClasspath += configurations.providedCompile
这增加了配置,并把所有的依赖中有两个主要的类和测试类的编译类路径。 您还需要将其添加到runtimeClasspath,如根据gradle这个DSL文件不包含编译的类路径。
看看在摇篮插件从SpringSource的propdeps 。 从项目介绍:
提供与Maven POM生成支持沿着摇篮附加可选,并提供相关性配置。
由于摇篮2.12的定义只编译依赖的问题终于解决了通过新的“copmpileOnly”配置一个简单而自然的方式:
dependencies {
compileOnly 'javax.servlet:servlet-api:2.5'
}
我写了一篇博客最近这正好覆盖了这种情况。 这也说明你如何获得与Eclipse集成设置正确了。
http://blog.codeaholics.org/2012/emulating-mavens-provided-scope-in-gradle/
还有一个更简单的方法:
configurations {
provided
provided.extendsFrom(compile)
}
然后,您可以:
dependencies {
provided group: 'javax.servlet', name: 'javax.servlet-api', version:'3.+'
}
你也想在Eclipse或观念的生成项目文件所提供的库:
idea.module.scopes.PROVIDED.plus += configurations.provided
eclipse.classpath.plusConfigurations += configurations.provided
当你发现自己使用摇篮2.12,变“providedCompile”到“compileOnly”。
为了使javadoc的工作,我必须补充一点:
javadoc.classpath=sourceSets.main.compileClasspath