I want to reuse certain filter for many projects so I want to extract it and use a single jar to just add it to any Web App.
For building I am using Gradle 1.3 and the following build.gradle file:
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()
}
As you can see, I need the servlet api to compile this filter succesfully so I want to add it like a maven provided dependency.
Anyways, after running gradle build I get the following error:
Could not find method providedCompile() for arguments
[{group=javax.servlet, name=javax.servlet-api, version=3.+}] on root
project ‘hibernate-conversation-context’.
Now, I know that I cannot use providedCompile without the WAR plugin but I need the project to be a simple JAR. Is there another way to do this?
There is no such configuration out of the box for the
javaplugin. However you can build it yourself as follows:This adds the configuration, and puts all the dependencies in there on the compile classpaths of both your main classes and test classes. You also need to add it to the runtimeClasspath, as that doesn’t include the compile classpath according to the gradle DSL documentation.