使用Gradle构建构建一个Java Web工程及持续集成环境Jenkins配置

简介:

安装Eclipse插件——Buildship

什么是Buildship?

Buildship能方便我们通过Eclipse IDE创建和导入Gradle工程,同时还能执行Gradle任务。

Eclipse上安装Buildship

建议直接去Eclipse market处下载,简单方便,如下图:

Buildship的更多信息

请参考以下链接,有教程,比较简单,

主要内容:

如何导入Gradle工程,

如何创建Gradle工程,

如何执行Gradle任务,

等。。。

http://projects.eclipse.org/projects/tools.buildship

http://www.vogella.com/tutorials/EclipseGradle/article.html

安装Eclipse插件——Minimalist Gradle Editor【可选】

主要作用是方便编辑gradle文件,提供语法高亮功能,另外该插件也非常精简,大小小于50k。

高亮效果及安装方式如下图:

Gradle安装

官网下载Gradle安装包,如下链接

http://services.gradle.org/distributions

我下载的是gradle-2.14.1-bin.zip包,下载后解压到硬盘路径即可,想配环境变量的可以配置下,既然打算用Eclipse集成Buildship了,我也就懒得配置了。

Eclipse上创建Gradle工程

这个我稍微翻译一下,最好直接参考官方文档:

1、通过File ▸ New ▸ Other…​ 菜单入口找到创建Gradle Project选项,如下图:

 

点击下一步,输入工程名字,工程位置,以及所属的工作集(可选,用于工程分组),

点击下一步,如下图所示,这里我们选择自己的Gradle本地安装路径,如下图:

在以上步骤中,点击完成按钮,会触发gradle init --type java-library命令的执行,并导入该工程到Eclipse IDE中;

点击下一步可预览即将创建的Gradle工程,如下图,

创建好的工程

Eclipse上导入Gradle工程

很简单,跟平常工程的导入类似,只不过工程类型选择导入Gradle Project而已,可参考以下链接:

http://www.vogella.com/tutorials/EclipseGradle/article.html#import-an-existing-gradle-project

已有工程转为Gradle工程

工程右键,配置->Add Gradle Nature即可,如果没有Gradle相关的文件,可以执行gradle init命令生成:

创建一个Gradle Web工程及相关配置

首先,Eclipse上创建一个Dynamic Web project,然后将其转成Gradle工程,可参考前面的步骤;

然后,改造下工程目录,如下图,跟maven的目录一样,另外把resources目录添加到构建路径下,

最后主要就是build.gradle文件的配置了

我这边主要用了三个插件,配置如下,

  1. war用于打包,
  2. org.akhikhl.gretty提供jetty、tomcat等容器的支持,
  3. org.hidetake.ssh提供远程服务器登陆,文件传输,命令执行等支持,

相关插件官方文档都比较完善。

复制代码
buildscript{
    repositories {
        mavenLocal()
        jcenter()
        maven{ url 'http://maven.d.com/content/groups/public/'}
        mavenCentral()
        
    }
      dependencies {
        classpath 'org.hidetake:gradle-ssh-plugin:2.6.0'
        classpath 'org.akhikhl.gretty:gretty:+'
      }
}

apply plugin: 'war'
apply plugin: 'org.akhikhl.gretty'
apply plugin: 'org.hidetake.ssh'

gretty { 
    servletContainer = 'tomcat7'
    contextPath = '/dss'
    //httpPort = 8080
    fastReload = false
    recompileOnSourceChange = false
    reloadOnClassChange = false
    reloadOnConfigChange = false
    reloadOnLibChange = false
    enableNaming = true
}

ssh.settings {
  knownHosts = allowAnyHosts
}

remotes {
  deployServer {
    host = 'XX.XX.XX.XX'
    user = 'XXXX'
    password = 'XXXXXX'
  }
}
复制代码

另外可以配下工程信息:

group 'com.cetiti.epdc'
def artifactid = "dss"
//version '0.1.0-SNAPSHOT'
description = """Gradle WebApp of dss"""
buildDir = 'target

依赖查找仓库:

复制代码
repositories {
    // Use 'jcenter' for resolving your dependencies.
    // You can declare any Maven/Ivy/file repository here.
    mavenLocal()
    jcenter()
    maven{ url 'http://maven.d.com/content/groups/public/'}
    mavenCentral()
}
复制代码

依赖配置:

复制代码
dependencies {
    // The production code uses the SLF4J logging API at compile time
    compile "org.slf4j:slf4j-api:1.7.21" 
    //compile "org.slf4j:slf4j-log4j12:1.7.21" 
    compile "log4j:log4j:1.2.17" 
    compile "com.google.code.gson:gson:2.6.2" 
    compile "org.apache.commons:commons-lang3:3.4" 
    
    compile "org.springframework:spring-context:3.2.16.RELEASE"
    compile "org.springframework:spring-web:3.2.16.RELEASE"
    compile "org.springframework:spring-webmvc:3.2.16.RELEASE" 
    compile "org.springframework:spring-tx:3.2.16.RELEASE" 
    compile "org.springframework:spring-context-support:3.2.16.RELEASE" 
    compile "org.springframework:spring-jdbc:3.2.16.RELEASE" 

    compile "org.aspectj:aspectjweaver:1.8.7" 
    compile "com.alibaba:druid:1.0.15" 
    compile "ojdbc:ojdbc:6" 
    compile "org.mybatis:mybatis:3.2.8" 
    compile "org.mybatis:mybatis-spring:1.2.5" 
    compile "org.jasig.cas.client:cas-client-core:3.4.1" 
    compile "com.cetiti.common:cetiti-common:0.1.0" 
    compile "org.quartz-scheduler:quartz:1.8.6" 

    compile 'javax.servlet:servlet-api:2.5'  

    // Declare the dependency for your favourite test framework you want to use in your tests.
    // TestNG is also supported by the Gradle Test task. Just change the
    // testCompile dependency to testCompile 'org.testng:testng:6.8.1' and add
    // 'test.useTestNG()' to your build script.
    testCompile 'junit:junit:4.12'
}
复制代码

添加自定义任务,我这里简单的写了四个任务,主要做以下几件事,关闭tomcat、删除war包及目录、拷贝文件、启动tomcat:

复制代码
task shutdownTomcat() << {
  ssh.run {
    session(remotes.deployServer) {
      println 'shut down tomcat...' 
      executeScript '''#!/bin/sh
                        cd /usr/local/dss-tomcat-7.0.47/bin
                        ./shutdown.sh
                    '''
    }
  }
}

task del(dependsOn:shutdownTomcat) << {
  ssh.run {
    session(remotes.deployServer) {
      println 'start deleting...' 
      executeScript '''#!/bin/sh
                        rm -rf /usr/local/dss-tomcat-7.0.47/webapps/dss
                        rm -f /usr/local/dss-tomcat-7.0.47/webapps/dss.war
                    '''
    }
  }
}

task copy(dependsOn:del) << {
  ssh.run {
    session(remotes.deployServer) {
      println 'start copying war...' 
      put from: buildDir.toString() + '/libs/dss.war', into: '/usr/local/dss-tomcat-7.0.47/webapps'
    }
  }
}

task deploy(dependsOn:copy) << {
  ssh.run {
    session(remotes.deployServer) {
      println 'start tomcat...' 
      execute '/usr/local/dss-tomcat-7.0.47/bin/startup.sh'
    }
  }
}
复制代码

执行Gradle任务

执行Gradle Task视图里的任务:

Eclipse IDE上打开Gradle Task视图,不知道为什么,我这边添加了相关插件之后,任务列表不会马上显示,需要重启Eclipse,可能是Buildship的Bug。

执行自定义任务:

工程右键,run as,打开运行配置,输入命令即可

持续集成环境Jenkins配置

首先要安装jenkins的gradle插件,我这里假设已经安装好了,不知道怎么安装的参考网络,

1、选择构建一个自由风格的软件项目

2、配置,很简单,见图:


本文转自风一样的码农博客园博客,原文链接:http://www.cnblogs.com/chenpi/p/5872313.html,如需转载请自行联系原作者

相关文章
|
11月前
|
安全 Java API
Java Web 在线商城项目最新技术实操指南帮助开发者高效完成商城项目开发
本项目基于Spring Boot 3.2与Vue 3构建现代化在线商城,涵盖技术选型、核心功能实现、安全控制与容器化部署,助开发者掌握最新Java Web全栈开发实践。
864 1
|
11月前
|
存储 前端开发 Java
【JAVA】Java 项目实战之 Java Web 在线商城项目开发实战指南
本文介绍基于Java Web的在线商城技术方案与实现,涵盖三层架构设计、MySQL数据库建模及核心功能开发。通过Spring MVC + MyBatis + Thymeleaf实现商品展示、购物车等模块,提供完整代码示例,助力掌握Java Web项目实战技能。(238字)
1283 0
|
11月前
|
人工智能 Java API
Java与大模型集成实战:构建智能Java应用的新范式
随着大型语言模型(LLM)的API化,将其强大的自然语言处理能力集成到现有Java应用中已成为提升应用智能水平的关键路径。本文旨在为Java开发者提供一份实用的集成指南。我们将深入探讨如何使用Spring Boot 3框架,通过HTTP客户端与OpenAI GPT(或兼容API)进行高效、安全的交互。内容涵盖项目依赖配置、异步非阻塞的API调用、请求与响应的结构化处理、异常管理以及一些面向生产环境的最佳实践,并附带完整的代码示例,助您快速将AI能力融入Java生态。
1595 12
|
前端开发 Java 数据库
Java 项目实战从入门到精通 :Java Web 在线商城项目开发指南
本文介绍了一个基于Java Web的在线商城项目,涵盖技术方案与应用实例。项目采用Spring、Spring MVC和MyBatis框架,结合MySQL数据库,实现商品展示、购物车、用户注册登录等核心功能。通过Spring Boot快速搭建项目结构,使用JPA进行数据持久化,并通过Thymeleaf模板展示页面。项目结构清晰,适合Java Web初学者学习与拓展。
693 1
|
人工智能 自然语言处理 分布式计算
AI 驱动传统 Java 应用集成的关键技术与实战应用指南
本文探讨了如何将AI技术与传统Java应用集成,助力企业实现数字化转型。内容涵盖DJL、Deeplearning4j等主流AI框架选择,技术融合方案,模型部署策略,以及智能客服、财务审核、设备诊断等实战应用案例,全面解析Java系统如何通过AI实现智能化升级与效率提升。
929 0
|
10月前
|
算法 Java Go
【GoGin】(1)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收
gin 框架中采用的路优酷是基于httprouter做的是一个高性能的 HTTP 请求路由器,适用于 Go 语言。它的设计目标是提供高效的路由匹配和低内存占用,特别适合需要高性能和简单路由的应用场景。
691 4
|
缓存 JavaScript 前端开发
鸿蒙5开发宝藏案例分享---Web开发优化案例分享
本文深入解读鸿蒙官方文档中的 `ArkWeb` 性能优化技巧,从预启动进程到预渲染,涵盖预下载、预连接、预取POST等八大优化策略。通过代码示例详解如何提升Web页面加载速度,助你打造流畅的HarmonyOS应用体验。内容实用,按需选用,让H5页面快到飞起!
|
JavaScript 前端开发 API
鸿蒙5开发宝藏案例分享---Web加载时延优化解析
本文深入解析了鸿蒙开发中Web加载完成时延的优化技巧,结合官方案例与实际代码,助你提升性能。核心内容包括:使用DevEco Profiler和DevTools定位瓶颈、四大优化方向(资源合并、接口预取、图片懒加载、任务拆解)及高频手段总结。同时提供性能优化黄金准则,如首屏资源控制在300KB内、关键接口响应≤200ms等,帮助开发者实现丝般流畅体验。
|
前端开发 JavaScript Shell
鸿蒙5开发宝藏案例分享---Web页面内点击响应时延分析
本文为鸿蒙开发者整理了Web性能优化的实战案例解析,结合官方文档深度扩展。内容涵盖点击响应时延核心指标(≤100ms)、性能分析工具链(如DevTools时间线、ArkUI Trace抓取)以及高频优化场景,包括递归函数优化、网络请求阻塞解决方案和setTimeout滥用问题等。同时提供进阶技巧,如首帧加速、透明动画陷阱规避及Web组件初始化加速,并通过优化前后Trace对比展示成果。最后总结了快速定位问题的方法与开发建议,助力开发者提升Web应用性能。
|
JSON 开发框架 自然语言处理
【HarmonyOS Next之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(三)
本文主要介绍了应用开发中的三大核心内容:生命周期管理、资源限定与访问以及多语言支持。在生命周期部分,详细说明了应用和页面的生命周期函数及其触发时机,帮助开发者更好地掌控应用状态变化。资源限定与访问章节,则聚焦于资源限定词的定义、命名规则及匹配逻辑,并阐述了如何通过 `$r` 引用 JS 模块内的资源。最后,多语言支持部分讲解了如何通过 JSON 文件定义多语言资源,使用 `$t` 和 `$tc` 方法实现简单格式化与单复数格式化,为全球化应用提供便利。
432 104