我使用Gradle构建我的Web应用程序。 我创建了src / main / webapp / WEB-INF / lib来放置名为foo.jar的jar文件 foo.jar中的类如下:
package com.foo.util;
class FooUtil {
public static say() { System.out.println("Hello World"); }
}
在我的Servlet中,我编写了以下代码来使用它:
import com.foo.util.FooUtil;
...
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
FooUtil.say();
}
最后,我输入以下命令来构建项目:
gradle clean build
但是,我会得到如下错误:
:clean
:compileJava
package com.foo.util does not exist
import com.foo.util.FooUtil;
以下是我的build.gradle文件:
apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'jetty'
apply plugin: 'idea'
apply plugin: 'eclipse'
sourceCompatibility = 1.7
version = '1.0'
repositories {
mavenCentral()
}
dependencies {
compile 'javax.servlet:javax.servlet-api:3.1.0'
testCompile 'junit:junit:4.11'
testCompile 'org.mockito:mockito-all:1.9.5'
}
我错过了什么或做错了吗? 感谢
答案 0 :(得分:2)
为什么不阅读http://www.gradle.org/docs/current/userguide/war_plugin.html?
首先:最好将foo.jar
放入libs
之类的其他文件夹中,然后将其声明为编译依赖项
dependencies {
providedCompile 'javax.servlet:javax.servlet-api:3.1.0'
compile files('libs/foo.jar')
...
}
Gradle将负责将其复制到WAR中的适当位置。
您可以在上面的代码段中看到的另一件事是使用用于Servlet API的providedCompile
配置。这意味着您的代码将针对此库进行编译,但它不会包含在WAR中。这是避免Web应用程序和servlet容器中这些类之间发生冲突的正确方法。