providedCompile没有战争插件(providedCompile without war

2019-07-05 14:58发布

我想重新使用特定的过滤器对于许多项目,所以我想提取并使用一个单独的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。 是否有另一种方式做到这一点?

Answer 1:

有没有这样的配置出于对盒子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文件不包含编译的类路径。



Answer 2:

看看在摇篮插件从SpringSource的propdeps 。 从项目介绍:

提供与Maven POM生成支持沿着摇篮附加可选,并提供相关性配置。



Answer 3:

由于摇篮2.12的定义只编译依赖的问题终于解决了通过新的“copmpileOnly”配置一个简单而自然的方式:

dependencies {
    compileOnly 'javax.servlet:servlet-api:2.5'
}


Answer 4:

我写了一篇博客最近这正好覆盖了这种情况。 这也说明你如何获得与Eclipse集成设置正确了。

http://blog.codeaholics.org/2012/emulating-mavens-provided-scope-in​​-gradle/



Answer 5:

还有一个更简单的方法:

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


Answer 6:

当你发现自己使用摇篮2.12,变“providedCompile”到“compileOnly”。



Answer 7:

为了使javadoc的工作,我必须补充一点:

javadoc.classpath=sourceSets.main.compileClasspath


文章来源: providedCompile without war plugin
标签: gradle