一分钟开始持续集成之旅系列之:Java + GWT
作者:CODING - 朱增辉
前言
Google Web Toolkit(GWT)是一个开源、免费的 Web 开发框架,通过该框架,您可以使用 Java 构建复杂、高性能的 JavaScript 应用程序。
持续集成指的是,频繁地(一天多次)将代码集成到主干。它的好处主要有两个:(1)快速发现错误。(2)防止分支大幅偏离主干。持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。 —— 阮一峰
本文的示例会创建一个简单的 GWT 应用,并利用 CODING 平台持续集成能力实现自动构建、测试和发布。
准备环境
安装必要的工具,包括 Java、Maven 和 GWT SDK等。这里以 MacOS 为例说明,其他系统请自行搜索。
安装 JDK
GWT 要求 JDK 1.6 或以上版本,在 console 中执行命令 java -version 检查是否已安装,输出如下图类似内容,即表示已安装。

如果没有安装,可通过 Homebrew 工具安装,命令如下
brew tap adoptopenjdk/openjdk
brew cask install adoptopenjdk8
其他平台请按照官方指导安装。
安装 Maven
通过命令 mvn -v 检查 Maven 版本,输出类似下图即表示已安装

如果没有安装,可通过 Homebrew 工具安装,命令如下
brew instll maven
其他平台请按照官方指导安装
安装 GWT SDK
可以通过 Homebrew 工具或者下载 GWT SDK 压缩包安装。写作本文时,GWT 最新稳定版本是 2.8.2。
(1)Homebrew 安装
brew install gwt
默认安装路径为

(2)下载压缩包安装
为方便大家下载,已将官网 GWT SDK 2.8.2 版本压缩包上传到 CODING 制品库,可通过如下方式下载
curl -L "https://coding-public-generic.pkg.coding.net/demo-gwt/generic/gwt.zip?version=2.8.2" -o gwt-2.8.2.zip
下载后的压缩包解压到任意目录(如 /home/user/gwt-2.8.2),并配置到 PATH 环境变量,如下所示
PATH=$PATH:/home/user/gwt-2.8.2/
export PATH
以上任一方式安装后,可执行如下命令测试是否安装成功
webAppCreator
输出如下

Intellij IDEA 开启 GWT 支持
IDEA 默认支持创建 GWT 应用,本文使用命令行工具创建项目,不依赖具体 IDE,通过 IDE 创建 GWT 应用的方式可参见 Intellij IDEA 相关介绍。
步骤一 创建 GWT 应用
使用命令行工具创建 GWT Maven 项目
webAppCreator -out hello -templates maven,sample,readme com.demo.gwt.HelloWorld

在 IDEA 中打开上面创建的项目,依次点击:
File --> Open --> hello(项目名)

打开后可以看到项目目录结构:

步骤二 运行 GWT 应用
GWT 项目文件主要由四部分组成(见下表),可以根据自己的需要修改,为避免增加复杂度,这里不做修改。
| 内容 | 说明 | 位置 |
|---|---|---|
| 模块描述符 | 用于配置 GWT 应用,XML 格式 | src/main/java/com/demo/gwt/HelloWorld.gwt.xml |
| 公共资源 | GWT 模块引用的文件,如 HTML 页面、CSS 样式或图像 | src/main/webapp |
| 客户端代码 | 实现应用程序业务逻辑的 Java 代码,GWT 编译器将其转换为 JavaScript,最终在浏览器中运行 | src/main/java/com/demo/gwt/client |
| 服务端代码 | 可选的,如果应用不需要服务端处理,不用提供 | src/main/java/com/demo/gwt/server |
在 IDEA 菜单栏中选择编辑配置,打开运行配置弹窗,添加 GWT 配置。修改配置名,选择 HelloWorld 模块,然后点击 OK 保存配置并退出弹窗。

选择上面创建的 GWT 运行配置,单击运行,IDEA 会自动打开浏览器,运行应用。

步骤三 利用持续集成进行自动构建、测试、发布
(1)本地初始化 git 仓库
在项目根目录执行 git 初始化命令
git init

(2)准备 CODING 项目
在 CODING 平台创建项目,选择 DevOps 模板。

在填写项目基本信息页面,为了使用本地 git 仓库,这里不勾选 启用 README.md 文件初始化项目。

上面创建的 CODING 项目没有初始化代码仓库,可以按照指引按照自己的需要进行初始化,这里选择使用命令行推送已存在的仓库。

根据指引将本地代码仓库推送到 CODING 平台。

在 构建 页面创建新的构建计划,为方便管理构建计划,这里选择使用代码仓库中的 Jenkinsfile。

点击使用模板,可根据自己需要选择合适模板,这里选择 简易模板。

保存构建计划后,系统会自动将构建模板对应的 Jenkinsfile 推送到仓库,默认为 master 分支。
本地执行 git pull 命令拉取代码,修改 Jenkinsfile 文件。我们希望平台可以自动构建、测试,最后发布到制品库,修改后的内容如下所示
def ARTIFACT_ID = ""
def VERSION = ""
pipeline {
agent any
stages {
stage('检出') {
steps {
checkout([
$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]],
userRemoteConfigs: [[
url: env.GIT_REPO_URL,
credentialsId: env.CREDENTIALS_ID
]]
])
script {
def pom = readMavenPom()
ARTIFACT_ID = pom.getArtifactId()
VERSION = pom.getVersion()
}
}
}
stage('构建') {
steps {
sh 'mvn package'
archiveArtifacts(artifacts: "target/${ARTIFACT_ID}-${VERSION}.war", fingerprint: true)
}
}
stage('测试') {
steps {
sh 'mvn gwt:test'
}
}
stage('发布到 generic 制品库') {
steps {
codingArtifactsGeneric(
files: "${ARTIFACT_ID}-${VERSION}.war",
repoName: "${env.GENERIC_REPO_NAME}",
version: "${VERSION}",
workspace: "/root/workspace/target"
)
}
}
}
}
修改后提交并推送到远程仓库,在 构建 页面点击 立即构建 按钮即可触发构建,也可按需要配置自动构建触发规则,详情见 CODING 帮助文档。构建完成后会收到通知,可以点开构建详情查看详细日志。

打开 制品库 页面可以看到自动发布的文件。

总结
在本次教程中,我们创建了简单的 GWT 应用,熟悉了 GWT 项目结构及其命令行工具的使用,并且借助 CODING 平台提供的持续集成能力实现了应用的自动构建、测试和发布。CODING 提供的持续集成能力远比教程中展示的要强大,有兴趣的同学可以阅读官方文档详细了解,相信可以为您的工作提供帮助,创造更好的效益。
示例代码可以在 CODING 公开源代码仓库 获取。
一分钟开始持续集成之旅系列之:Java + GWT的更多相关文章
- 一分钟开始持续集成之旅系列之:C 语言 + Makefile
作者:CODING - 朱增辉 前言 make 工具非常强大,配合 makefile 文件可以实现软件的自动化构建,但是执行 make 命令依然需要经历手动输入执行.等待编译完成.将目标文件转移到合适 ...
- Jenkins持续集成企业实战系列之Jenkins插件下载及邮件配置-----05
注:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任. 最初接触Jenkins也是由于公司需求,根据公司需求Java代码项目升级的.(公司是 ...
- Jenkins持续集成企业实战系列之Jenkins手动构建-----04
注:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任. 最初接触Jenkins也是由于公司需求,根据公司需求Java代码项目升级的.(公司是 ...
- Jenkins持续集成企业实战系列之Jenkins配置演示-----03
注:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任. 最初接触Jenkins也是由于公司需求,根据公司需求Java代码项目升级的.(公司是 ...
- Jenkins持续集成企业实战系列之Jenkins持续集成简介及安装-----02
1. Jenkins持续集成简介 注:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任. 最初接触Jenkins也是由于公司需求, ...
- Jenkins持续集成企业实战系列之两种网站部署的流程-----01
注:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任. 最初接触Jenkins也是由于公司需求,根据公司需求Java代码项目升级的.(公司是 ...
- Linux环境:持续集成环境部署系列
之前的博客介绍了Linux环境下持续集成环境部署的一些内容,这篇博客将其整理一下,算做一个index,方便自己和大家查阅... 1.linux下安装JDK Jenkins是一个java开源的持续集成工 ...
- Jenkins与Git持续集成&&Linux上远程部署Java项目
一.环境搭建 1.安装所需软件 Jdk Maven Jenkins Tomcat Xshell git 以上软件去官网下载,比较简单,不一一描述了 2.安装所需的jenkins插件 Git plugi ...
- Jenkins持续集成 & .NET
最近受累于测试环境每次发布都很麻烦,而且我们有多个测试环境,因此专门抽时间做了Jenkins的配置和研究. 折腾了两天终于绿灯以后,先来个截图,BlueOcean UI还是很nice的. 环境搭建 找 ...
随机推荐
- NetCore项目实战篇08---Docker挂载mysql并连接.netCoreWeb
我们的项目之前在直接连接的mysql,今天我们将通过docker挂载mysql 并与我们开发的webapi项目连接. 1. 安装docker 下载地址: https://download.docker ...
- jQuery 获取页面宽高
无滚动条的情况下(页面宽高比可视区域小):$(document)和$(window)的width.height方法获取的值都是一样的,都是可视区域的宽高即$(document).width()==$( ...
- seacms_6.4.5 前台任意代码执行漏洞分析
环境搭建 1.下载安装包 下载地址: 链接:https://pan.baidu.com/s/1uw_VnxnvG4GGEae4TRsGGw 密码:cd48 2.常规安装 漏洞复现 poc1: http ...
- Rocket - debug - TLDebugModuleOuterAsync
https://mp.weixin.qq.com/s/PSeMVZjSjEFHJgCYZzfa9Q 简单介绍TLDebugModuleOuterAsync的实现. 1. dmi2tl dmi2tl是T ...
- python(3.x)自动化全栈开发100天集训计划(跟上进度,到一个新高度)——day1
Day1 目录: Python介绍 * 了解Python的特点.发展史 * 介绍Python广泛的应用领域和前景 第一个Python程序 * 掌握Python代码的2种执行方式 变量 ...
- Java实现 LeetCode 838 推多米诺(暴力模拟)
838. 推多米诺 一行中有 N 张多米诺骨牌,我们将每张多米诺骨牌垂直竖立. 在开始时,我们同时把一些多米诺骨牌向左或向右推. 每过一秒,倒向左边的多米诺骨牌会推动其左侧相邻的多米诺骨牌. 同样地, ...
- (Java实现) 子集和问题
回溯算法也叫试探法,它是一种系统地搜索问题的解的方法.回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试.用回溯算法解决问题的一般步骤为: 1.定义一个解空间,它包含问题的解 ...
- Java实现 LeetCode 239 滑动窗口最大值
239. 滑动窗口最大值 给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧.你只可以看到在滑动窗口内的 k 个数字.滑动窗口每次只向右移动一位. 返回滑动窗口中的最 ...
- 使用Python爬取网页的相关内容(图片,文字,链接等等)
代码解释的很详细了,有不明白的欢迎评论 ~~~滑稽 import requests from bs4 import BeautifulSoup # #获取图片 输入网址 req=requests.ge ...
- 第六届蓝桥杯JavaC组省赛真题
解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.隔行变色 隔行变色 Excel表的格子很多,为了避免把某行的数据和相邻行混淆,可以采用隔行变色的样式. 小明设计的样式为:第1行蓝色, ...