关于我的知识水平的一些背景知识:我目前正在尝试学习如何使用gradle构建项目。到目前为止,我没有很多构建工具的经验(几乎没有)。我确实理解了一般的想法并且之前已经看过ant和maven文件,但从未自己编写过。到目前为止,我只是使用其他人构建脚本或使用Eclipse配置我的构建。所以我可能在这里完全错误的轨道,如果是这样,请指出我正确的方向。 另外,遗憾的是,我没有太多手工制作罐子的经验。
我有一个Eclipse项目,我想将其编译成jar。必需的库jar位于我的本地文件系统上。我设法通过
让gradle使用这些dependencies {
compile fileTree(dir:'lib', include:'*.jar')
}
此外,我在src/main/java
中有我的源文件,只在apply plugin: 'java'
文件中使用build.gradle
。尝试使用gradle build
构建项目似乎做了正确的事情,据我所知。
但是,据我所知,该库应该在tomcat上运行的web项目中使用,并使用tomcat提供的一些库。例如。我正在使用javax.servlet.http.HttpServletRequest
。
该项目在Eclipse中运行良好,但我在我的Eclipse构建路径中添加了tomcat库。当我签入Eclipse时,我可以看到javax.servlet.http.HttpServletRequest
是servlet-api.jar
的一部分,它是Tomcat库的一部分。
现在,当我构建项目时,我遇到了构建错误,因为java编译器找不到类,因为我没有在依赖项中指定servlet-api.jar
。我想我可以以某种方式下载它(或者学习如何将它指定为外部依赖项以使gradle从某个存储库下载它)但我不确定这是否正确。
有没有办法告诉gradle使用Eclipse使用的相同库?或者其他一些告诉它所有tomcat jar的一般方法,就像我在Eclipse中简单地添加完整的Tomcat库一样? 或者我真的需要另外一些这些罐子的副本,并且必须单独指定每个罐子吗?
另外,我是否需要将这些库jar添加到构建结果库jar中?据我所知,我需要添加任何依赖于生成的jar的jar。但话说回来,我已经读过一些地方,某些库是由tomcat自己提供的,所以它们必须是部署在它上面的任何战争的一部分。 我担心,我对如何构建 jar -file以在 war -file中使用以组合在上的组合感到困惑tomcat 使用 gradle ,我不知道我的问题来自哪些部分。我希望有人能够帮我解开思路并指出正确的方向,或者至少告诉我如何将Tomcat库中包含的jar添加到我的gradle依赖项中。
答案 0 :(得分:9)
使用Gradle时,无论何时添加文件或目录作为依赖项,它们都不会被视为完整的工件(包含组,名称和版本),而是作为包含类的简单文件。这意味着Gradle不会对它们执行任何冲突解决方案,或者提取传递依赖性。
对于你,只是为了开始,我建议只添加tomcat依赖。确保它与Eclipse中的版本相同。
apply plugin: 'war'
repositories {
mavenCentral()
}
dependencies {
providedCompile 'org.apache.tomcat:tomcat-catalina:7.0.47'
}
另外,将Eclipse Integration Gradle项目视为长期解决方案。