gradle创建web工程_Gradle入门:创建Web应用程序项目

gradle创建web工程

这篇博客文章描述了如何使用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插件将新的约定(例如,默认目录布局),任务和属性添加到我们的构建中。 如果您想了解更多有关此的信息,则应阅读以下博客文章:

  • Gradle入门:我们的第一个Java项目

让我们继续前进,了解如何打包我们的Web应用程序。

打包我们的Web应用程序

在使用War插件打包Web应用程序之前 ,我们必须将其添加到我们的构建中。 应用War插件后, build.gradle文件如下所示:

apply plugin: 'java'
apply plugin: 'war'

War插件将新目录添加到项目的目录布局中,添加了两个新的依赖项管理配置,并向我们的项目添加了新任务。 这些更改描述如下:

  • War插件将src / main / webapp目录添加到项目的目录布局中。 此目录包含Web应用程序的源(CSS文件,Javascript文件,JSP文件等)。
  • War插件添加了两个新的依赖项管理配置,称为providerCompileproviderRuntime 。 这两个配置与编译运行时配置具有相同的作用域,但是不同之处在于,属于这些新配置的依赖项未添加到WAR存档中。
  • War插件还将战争任务添加到我们的Web应用程序项目中。 此任务将WAR归档文件汇编到build / libs目录。

补充阅读:

如果您不知道什么是编译运行时配置,则应阅读以下博客文章:

  • Gradle入门:依赖管理

现在,我们可以通过在命令提示符下运行命令gradle war来打包Web应用程序。 当我们这样做时,我们应该看到以下输出:

> gradle war
:compileJava
:processResources
:classes
:warBUILD SUCCESSFULTotal time: 4.937 secs

如果一切按预期进行,我们应该从build / libs目录中找到web-application.war文件。

注意:

如果您需要有关War插件或
war任务,或者您想覆盖War插件或war任务的默认配置,则应仔细查看以下网页:

  • Gradle用户指南:第26章。War插件
  • Gradle DSL参考:战争任务

让我们找出如何在开发环境中运行Web应用程序。

运行我们的Web应用程序

我们可以使用Gretty在开发环境中运行Web应用程序。 它同时支持Jetty和Tomcat,并且不会受到Gradle泄漏SLF4J绑定引起的问题的困扰 。 让我们继续并配置我们的构建,以使用Gretty运行我们的Web应用程序。

首先 ,我们必须配置构建脚本的依赖关系。 我们可以按照以下步骤进行操作:

  1. 将构建脚本配置为在解析依赖项时使用Bintray的JCenter Maven存储库 。
  2. 将Gretty插件依赖项添加到构建脚本的类路径中。

build.gradle文件的源代码如下所示:

buildscript {repositories {jcenter()}dependencies {classpath 'org.akhikhl.gretty:gretty:+'}
}apply plugin: 'java'
apply plugin: 'war'

如果您想了解有关使用已发布为jar文件的二进制插件的更多信息,则应阅读《 Gradle用户指南》的以下部分:

  • Gradle用户指南:21.4通过buildscript块应用插件
  • Gradle用户指南:60.5构建脚本的外部依赖关系

其次 ,我们必须应用Gretty插件。 完成此操作后, build.gradle文件如下所示:

buildscript {repositories {jcenter()}dependencies {classpath 'org.akhikhl.gretty:gretty:+'}
}apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'org.akhikhl.gretty'

第三 ,我们需要按照以下步骤配置Gretty:

  1. 将Gretty配置为在运行我们的Web应用程序时将Jetty 9用作servlet容器。
  2. 配置Jetty侦听端口8080。
  3. 使用上下文路径“ /”将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 = 8080contextPath = '/'servletContainer = 'jetty9'
}

如果您想了解有关Gretty的更多信息,则应仔细阅读其文档:

  • Gretty文档:入门
  • Gretty文档:Gretty配置
  • 灰色文档

现在,我们可以通过在命令提示符处运行以下命令来启动和停止Web应用程序:

  • 命令gradle appStart将运行我们的Web应用程序。
  • 命令gradle appStop将停止我们的Web应用程序。

让我们继续并总结从这篇博客文章中学到的知识。

摘要

这篇博客文章教会了我们四件事:

  • 我们了解到,如果使用默认配置,则必须将Web应用程序的源放置到src / main / webapp目录中。
  • 我们了解到War插件向我们的构建中添加了两个新的依赖项配置( provideCompileProvidedRuntime ),并且我们学习了这些依赖项配置如何工作。
  • 我们学习了将Web应用程序打包到WAR文件中。
  • 我们学会了在开发环境中运行Web应用程序。

PS:您可以从Github获得此博客文章的示例应用程序。

如果您想学习如何使用Gradle,则应该看一下我的Gradle教程 。

翻译自: https://www.javacodegeeks.com/2015/03/getting-started-with-gradle-creating-a-web-application-project.html

gradle创建web工程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/338246.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言如何实现玫瑰花

c语言实现玫瑰花的方法:#include #include ?#include #include #include #pragma comment(lib,"winmm.lib")//定义全局变量int rosesize 500;int h -250;//定义结构体struct DOT {double x;double y;double z;double r;double g;};bool calc(double a,…

php保存成乱序,php – 调用MySQL存储过程时出现乱序错误

我正在尝试使用PDO调用存储过程,但在尝试对结果进行获取时遇到以下错误.警告:数据包乱序.预计1收到16.数据包大小 163我的存储过程使用两个游标,我在从临时表中选择之前关闭它.我怀疑这可能是问题,因为我可以直接在MySQL中调用我的SP并且可以看到结果.在迁移到php_p…

maven 部署nexus_设置本地Nexus存储库并从Maven部署WAR文件

maven 部署nexusMaven Central充当中央存储库管理器,二进制文件由不同的团队/公司/个人上载并与世界其他地方共享。 就像github和其他对源代码控制非常有效的源代码存储库一样,这些存储库管理器还充当您自己生成的二进制工件的部署目标。 设置本地存储库…

c vector用法是什么

在c 中&#xff0c;vector是一个十分有用的容器&#xff0c;c vector用法是&#xff1a;1、基本操作(1)头文件#include.(2)创建vector对象&#xff0c;vector vec;(3)尾部插入数字&#xff1a;vec.push_back(a);(4)使用下标访问元素&#xff0c;cout<<vec[0]<<endl…

Matlab中的logspace函数,matlab之logspace函数

logspace()在matlab帮助里的英文注释是这样的&#xff1a;logspaceGeneratelogarithmically spaced vectorsSyntaxy logspace(a,b)y logspace(a,b,n)y logspace(a,pi)DescriptionThe logspace function generates logarithmically spacedvectors. Especially useful for cre…

c语言for循环如何打印菱形

c语言for循环打印菱形的方法&#xff1a;使用两个for循环&#xff0c;实现条件判断&#xff0c;代码为【int i,j;for(i0; i<2*n-1; i )_(in-i-1&&jc语言for循环打印菱形的方法&#xff1a;方法一&#xff08;以循环为主打印&#xff09;#include void print(int n) …

quasar 异步回调_Java IO基准测试:Quasar与异步ForkJoinPool与ManagedBlock

quasar 异步回调“ Arien看到了我们运行的parallelStreams和ForkJoin基准测试的结果后&#xff0c;在Twitter上与我们联系。 这激起了他的兴趣&#xff0c;因此他进行了一些自己的测试&#xff0c;将Quasar纤维加入了混合物。 这是他的结果和结论。” –塔基皮&#xff08;Taki…

php微信自动回复机器人,微信自动回复机器人功能怎么实现?

原标题&#xff1a;微信自动回复机器人功能怎么实现&#xff1f;微信自动回复机器人功能怎么实现&#xff1f;最近有不少小伙伴都在询问这个问题。很多人在微信营销的过程中&#xff0c;都会有这样的问题&#xff0c;微信好友太多&#xff0c;想要都在第一时间回复&#xff0c;…

C语言怎么合并两个有序链表

C语言合并两个有序链表的方法&#xff1a;拼接指定的两个有序链表的所有节点即可。例如两个有序链表分别为【1->2->4】和【1->3->4】&#xff0c;合并后的有序链表为【1->1->2->3->4->4】。具体方法&#xff1a;将两个有序链表合并为一个新的有序链…

jira集成开发代码_7种JIRA集成可优化您的Java开发流程

jira集成开发代码有哪些最佳集成可以用来优化JIRA工作流程&#xff1f; 我喜欢寻找在工作流程中提高效率的方法。 看着那些小小的自动化和流畅的流程&#xff0c;我的脸上露出了微笑。 我知道我并不孤单&#xff0c;有时花费更多的时间来获得一点点提升以使其正常工作&#xff…

php拼接多个insert,php – 将多个INSERTS分成一个表和多个表

我正在尝试使用PostgreSQL数据库在 PHP中开发一个Q& A网站.我有一个动作来创建一个页面,其中包含标题,正文,类别和标签.我设法插入所有这些字段,但是我在插入多个标记值时遇到了一些问题.我使用这个函数将逗号分隔的值放到一个数组中,现在我想要一些东西将每个数组元素插入…

c语言源程序结构是怎样的?

一个C语言源程序至少一个有main函数&#xff0c;定义函数必须指定 4 个元素&#xff1a;返回类型、函数名、圆括号内的形参表&#xff08;可能为空&#xff09;和函数体。源程序的结构特点&#xff1a;1、一个C语言源程序可以由一个或多个源文件组成。2、每个源文件可由一个或多…

gradle maven_将工件从Gradle自动提升到Maven Central

gradle maven快速教程&#xff0c;无需在带有Gradle Nexus Staging插件的Nexus GUI中单击即可将Gradle项目中的工件提升/释放到Maven Central。 介绍 Maven Central &#xff08;又名“中央存储库”&#xff09;是&#xff08;可能是&#xff09;全球最大的一组开源工件&#…

matlab 自定义对象,自定义类的对象显示

用于自定义对象显示的特定方法You can customize object display based on the state of the object and you can change different parts of the display.Change the order and number of properties displayed for an object of your class.Customize each of the three part…

c语言规定在一个源程序中main函数的位置是什么?

一个c程序有且仅有一个main函数&#xff0c;除main函数之外可以有若干个其它的函数&#xff0c;每个函数实现某一特定的操作。C语言规定&#xff0c;在一个源程序中&#xff0c;main函数的位置可以任意。因为&#xff1a;在一个C语言源程序中&#xff0c;程序总是从main函数开始…

jax-ws和jax-rs_使用JAX-RS和Jetty创建Web服务和Rest Server

jax-ws和jax-rs用Java创建WebService非常容易。 将其添加到ServletContainer并将其部署到嵌入式WebServer仅需要几行代码。 让我们创建一个具有两个函数的简单计算器&#xff0c;作为WebService的示例。 计算器将计算任意数量的squareRoot和平方。 它将返回一个简单的JSON响应…

图像锐化处理算法matlab,图像锐化matlab算法

《图像锐化matlab算法》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《图像锐化matlab算法(2页珍藏版)》请在读根文库上搜索。1、%常用图像锐化算法clcclearclose allimaimread(132.jpg);%读入图像imargb2gray(ima);%转为灰度图像 imadouble(ima);bw1 edge(ima,sobe…

可运行的c语言程序的扩展名为什么?

C语言源程序经过C语言编译程序编译之后&#xff0c;生成一个后缀为“.OBJ”的二进制文件(称为目标文件)&#xff0c;最后还要由称为“连接程序”(link)的软件&#xff0c;把此“.OBJ”文件与c语言提供的各种库函数连接在一起&#xff0c;生成一个后缀“.EXE”的可执行文件。显然…

activemq消息持久化_将ActiveMQ持久消息传递性能提高25倍

activemq消息持久化Apache ActiveMQ&#xff0c;JBoss A-MQ和Red Hat Apache ActiveMQ是一个非常受欢迎的开源消息传递代理&#xff0c;由创建&#xff08;和从事&#xff09; Apache Karaf &#xff0c; Apache Camel &#xff0c; Apache ServiceMix以及许多其他工具的人提供…

c语言实现两个有序链表的合并(代码示例)

c语言实现两个有序链表的合并&#xff1a;现有两个有序单链表&#xff0c;通过代码实现将两个单链表合并为一个有序的新表&#xff0c;要求使用旧表的空间&#xff0c;不能新分配内存#include #include typedef struct List{ int a; struct List *next;}list;void newLis…