这篇博客文章描述了如何使用Gradle创建一个Web应用程序项目。
更具体地说,我们想创建一个使用Java的Web应用程序项目,将我们的Web应用程序打包到WAR文件中,并在开发环境中运行我们的Web应用程序。
让我们找出如何满足这些要求。
补充阅读:
如果您不熟悉Gradle, 请先阅读以下博客文章,然后再继续阅读此博客文章:
- Gradle入门:简介可帮助您安装Gradle,描述Gradle构建的基本概念,并描述如何使用Gradle插件向构建中添加功能。
- Gradle入门:我们的第一个Java项目描述了如何使用Gradle创建Java项目并将应用程序打包到可执行jar文件中。
- Gradle入门:依赖性管理介绍了如何管理Gradle项目的依赖性。
创建一个Web应用程序项目
如果我们要创建一个使用Java和Gradle的Web应用程序项目,那么我们要做的第一件事就是创建一个Java项目。 让我们看看我们如何做到这一点。
创建一个Java项目
我们可以通过应用Java插件来创建Java项目。 我们可以通过在build.gradle文件中添加以下行来实现:
apply plugin: 'java'
Java插件向我们的版本添加了新的约定(例如,默认目录布局),任务和属性。 如果您想了解更多有关此的内容,则应阅读以下博客文章:
让我们继续前进,了解如何打包我们的Web应用程序。
打包我们的Web应用程序
在使用War插件打包Web应用程序之前 ,我们必须将其添加到我们的构建中。 应用War插件后, build.gradle文件如下所示:
apply plugin: 'java'
apply plugin: 'war'
War插件将一个新目录添加到项目的目录布局中,添加两个新的依赖项管理配置,并向我们的项目添加一个新任务。 这些更改描述如下:
- War插件将src / main / webapp目录添加到项目的目录布局中。 此目录包含Web应用程序的源(CSS文件,Javascript文件,JSP文件等)。
- War插件添加了两个新的依赖项管理配置,称为providerCompile和providerRuntime 。 这两个配置与编译和运行时配置具有相同的作用域,但是不同之处在于,属于这些新配置的依赖项未添加到WAR存档中。
- War插件还将战争任务添加到我们的Web应用程序项目中。 此任务将WAR归档文件汇编到build / libs目录。
补充阅读:
如果您不知道什么是编译和运行时配置,则应阅读以下博客文章:
现在,我们可以通过在命令提示符处运行命令gradle war来打包Web应用程序。 当我们这样做时,我们应该看到以下输出:
> gradle war
:compileJava
:processResources
:classes
:war
BUILD SUCCESSFUL
Total time: 4.937 secs
如果一切按预期进行,我们应该从build / libs目录中找到web-application.war文件。
注意:
如果您需要有关War插件或
war任务,或者您想覆盖War插件或war任务的默认配置,则应仔细查看以下网页:
让我们找出如何在开发环境中运行Web应用程序。
运行我们的Web应用程序
我们可以使用Gretty在开发环境中运行Web应用程序。 它同时支持Jetty和Tomcat,并且不会受到Gradle泄漏SLF4J绑定引起的问题的困扰 。 让我们继续并配置我们的构建,以使用Gretty运行我们的Web应用程序。
首先 ,我们必须配置构建脚本的依赖关系。 我们可以按照以下步骤进行操作:
- 配置构建脚本以在解析依赖项时使用Bintray的JCenter Maven存储库 。
- 将Gretty插件依赖项添加到构建脚本的类路径中。
build.gradle文件的源代码如下所示:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'org.akhikhl.gretty:gretty:+'
}
}
apply plugin: 'java'
apply plugin: 'war'
如果您想了解有关使用已发布为jar文件的二进制插件的更多信息,则应阅读《 Gradle用户指南》的以下部分:
其次 ,我们必须应用Gretty插件。 完成此操作后, build.gradle文件如下所示:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'org.akhikhl.gretty:gretty:+'
}
}
apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'org.akhikhl.gretty'
第三 ,我们需要按照以下步骤配置Gretty:
- 将Gretty配置为在运行我们的Web应用程序时将Jetty 9用作servlet容器。
- 配置Jetty以侦听端口8080。
- 使用上下文路径“ /”将Jetty配置为运行我们的Web应用程序。
build.gradle文件的源代码如下所示:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'org.akhikhl.gretty:gretty:+'
}
}
apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'org.akhikhl.gretty'
gretty {
port = 8080
contextPath = '/'
servletContainer = 'jetty9'
}
如果您想了解有关Gretty的更多信息,则应仔细阅读其文档:
现在,我们可以在命令提示符处运行以下命令来启动和停止Web应用程序:
- 命令gradle appStart将运行我们的Web应用程序。
- gradle appStop命令将停止我们的Web应用程序。
让我们继续并总结从这篇博客文章中学到的知识。
摘要
这篇博客文章教会了我们四件事:
- 我们了解到,如果使用默认配置,则必须将Web应用程序的源放置到src / main / webapp目录中。
- 我们了解到War插件向我们的构建中添加了两个新的依赖项配置( ProvideCompile和ProvidedRuntime ),并且我们了解了这些依赖项配置如何工作。
- 我们学习了将Web应用程序打包到WAR文件中。
- 我们学会了在开发环境中运行Web应用程序。
PS:您可以从Github获得此博客文章的示例应用程序。