• 使用IntelliJ IDEA,gradle开发Java web应用步骤


    最近 正在学习gradle构建工具的使用,看了一堆的文档,有点一知半解,索性动作实践一把,在以后的自己的项目中尝试使用看看。目前手头用的是IntelliJ IDEA 14,搭建了一天终于明白怎么集成gradle赖开发Java web,就在这里记下来以后备用。

    准备工作

    1. 本机安装好gradle
    2. 安装好java环境和IDEA 14
    3. 准备好tomcat
    4. 使用Jfinal jar包,后续做一个简单的Demo

      #

    工程创建步骤

    1. 打开IDEA,选择“New Project”->"Gradle",勾选图中的几个选项,在“gradle home”中填上本机gradle的安装目录,点击“next”。
    2. 填写工程名。点“finish”。
    3. 生成项目后目录结构如下,其中lib是手动建立的目录,用来放一些从本地导入的依赖包,后面Jfinal的jar包就在这里。其他目录都是IDEA根据gradle规范生成的。(运行build.gradle)

    4. 创建webapp目录,就是java的web目录(Eclipse中的WebRoot),存放jsp文件和WEF-INF等文件的地方。根据gradle目录规范。编辑build.gradle文件,在开头添加一个apply plugin: 'war',在IDEA的gradle工具栏中运行"build"命令,就会生成在src/main下生成一个webapp文件夹,并且在项目的Modules中生成一个Web项目。
    5. 创建web.xml文件。点击"File"->"Project Structrue"。在对话框中选择"Modules",选择右边的项目下上一步生成的Web项目,点"Deployment Descriptor"中的绿色加号,在/src/main/webapp下添加一个web.xml文件。
    6. 这时一个java web项目的结构就已经搭建好了,看到项目菜单里的webapp文件夹已经有个小地球的标志。现在就可以按照在IDEA下java web开发的的操作开发web项目了。
    7. 按照Jfinal的帮助文档,把jar包导入,把web.xml配置好,写好Demo类,然后用gradle build,一个web demo就编译好了,后续只要启动web容器,部署应用即可。
    8. gradle用jetty插件运行web项目更方便,

      apply plugin: 'jetty'
      
      gradle jettyRun,这里我还是用IDEA启动tomcat做测试。配置好tomcat,将gradle生成的artifacts(gradle构建时自动为项目天刚加了2个artifacts,一个是项目的war包,一个是没打包的exploded,推荐用exploded)添加到tomcat的deployment中。
    9. 点击工具栏上的"run",启动tomcat,容器启动后部署应用,没问题就可以正常访问站点了。

    10. 最后项目的目录结构:

    11. 几个文件的代码:

    build.gradle

        apply plugin: 'java'
        //IntelliJ IDEA 插件
        apply plugin: 'idea'
        //war包插件
        apply plugin: 'war'
    
        sourceCompatibility = 1.6
        version = '1.0'
    
        repositories {
        //    使用开源中国的maven仓库
            maven { url 'http://maven.oschina.net/content/groups/public/' }
        }
    
        dependencies {
            //导入本地的依赖包
            compile fileTree(dir: 'libs', include: ['*.jar'])
            //从maven仓库导入依赖
            compile ('org.apache.httpcomponents:httpclient:4.4')
            compile ('org.apache.commons:commons-lang3:3.3.2')
        }
    

    web.xml

        <?xml version="1.0" encoding="UTF-8"?>
        <web-app xmlns="http://java.sun.com/xml/ns/javaee"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                  http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
                 version="3.0">
    
            <filter>
                <filter-name>jfinal</filter-name>
                <filter-class>com.jfinal.core.JFinalFilter</filter-class>
                <init-param>
                    <param-name>configClass</param-name>
                    <param-value>com.jfinal.demo.Config</param-value>
                </init-param>
            </filter>
            <filter-mapping>
                <filter-name>jfinal</filter-name>
                <url-pattern>/*</url-pattern>
            </filter-mapping>
        </web-app>
    

    DemoConfig.java

    package com.jfinal.demo;
    
    import com.jfinal.core.Controller;
    
    public class DemoController extends Controller{
        public void hello(){
           renderText("hello world");
        }
    
    }
    

    DemoController.java

    package com.jfinal.demo;
    
    import com.jfinal.config.*;
    import com.jfinal.render.ViewType;
    
    public class DemoConfig extends JFinalConfig {
        public void configConstant(Constants me) {
            me.setDevMode(true);
            me.setViewType(ViewType. JSP);
        }
        public void configRoute(Routes me) {
            me.add("/", DemoController. class);
        }
        public void configPlugin(Plugins me) {
    
        }
        public void configInterceptor(Interceptors me) {
    
        }
        public void configHandler(Handlers me) {
    
        }
    }
    

    To Be Continue

    gradle作为一个新兴的构建工具,有很多好玩的地方,解决完工程搭建后,要好好研究研究才行:)

  • 相关阅读:
    linux 命令行远程登录 后台运行命令的方法
    再议perl写多线程端口扫描器
    perl 函数参数传递与返回值(一)
    Linux 删除带有特殊字符的文件
    桌面云的四大协议解析
    RemoteBox 1.6 发布,VirtualBox 管理工具
    gsoap
    Open Compute Project
    基于 Arduino 开发板,这款插座是可编程且开源的
    minnowboard
  • 原文地址:https://www.cnblogs.com/lykbk/p/SACASAFAFSDQ34R32443.html
Copyright © 2020-2023  润新知