bae java上传图片_干货分享:gradle+svn轻松搞定BAE java代码上传

背景

在BAE基础版和专业版上,java应用通过war包文件部署的时候,总会遇到一些小麻烦:

BAE专业版的svn/git有单文件40M的限制,所以在专业版的svn/git中上传超过40M的war包(很多war包都会超过40M)是不可行的

BAE基础版的svn/git,以及BAE专业版的打包上传,虽然没有单文件大小限制(BAE基础版的svn/git有所有文件加起来不能超过100M的限制),但是每次有任何改动,都需要上传整个war包,导致每次上传耗时很长

解决的办法很简单:将war包中的文件,解压到BAE专业版或基础版的svn/git中的ROOT目录下(tomcat为ROOT目录,jetty为root目录),再上传。

这样,既能避免了BAE专业版svn/git单文件40M的限制(war包中解压出来的文件一般不超过40M),也能避免每次都要上传整个war包的问题(只需要上传war包中有变化的文件,像依赖的jar包文件一般都是不会发生变化的)。

本文主要介绍,如何通过构建工具gradle,实现打war包、解压war包、上传svn的自动化流程。

注:本文并不包含gradle的使用教程,如果你并不熟悉gradle,建议阅读以下gradle入门系列文章:

方案

要实现打war包、解压war包、上传svn的自动化流程,只需要在gradle的构建脚本build.gradle中增加一段脚本,并执行gradle publish命令即可。

首先,在build.gradle中增加以下内容:

// 使用war插件打war包

apply plugin: 'war'

// svnUrl为BAE基础版或专业版的svn地址,可在控制台复制获得

def svnUrl = 'https://svn.bce.baidu.com/.../'

task updateSvn << {

if (file('svn').exists()) {

exec {

workingDir 'svn'

commandLine 'svn', 'update'

}

} else {

exec {

commandLine 'svn', 'checkout', svnUrl, 'svn'

}

}

}

task cleanSvn(dependsOn: ['updateSvn']) << {

file('svn').listFiles().findAll { it.name != '.svn' }.each {

delete it

}

}

task unzipWar(type: Copy, dependsOn: ['cleanSvn', 'war']) {

into 'svn/ROOT'

from zipTree(tasks.war.archivePath)

}

task publish(dependsOn: unzipWar) << {

def stdout = new ByteArrayOutputStream()

exec {

workingDir 'svn'

commandLine 'svn', 'status'

standardOutput = stdout

}

def status = stdout.toString().readLines()

status.each {

def filename = it[it.indexOf(' ')..-1].trim()

if (it.startsWith('?')) {

exec {

workingDir 'svn'

commandLine 'svn', 'add', filename

}

} else if (it.startsWith('!')) {

exec {

workingDir 'svn'

commandLine 'svn', 'rm', filename

}

}

}

exec {

workingDir 'svn'

commandLine 'svn', 'commit', '-m', System.getProperty('message')

}

}

需要上传时,只需要在命令行中执行以下指令(其中“{svn-ci-message}”为svn的commit信息):

$ gradle publish –Dmessage=”{svn-ci-message}”

工作原理

我们通过下图来看看上面的构建脚本是如何执行的:

gradle-tasks.png

updateSvn:如果项目目录下没有svn目录,则通过svn checkout命令,将BAE的svn库中的内容下载下来;如果有svn目录,则通过svn update命令,将该目录中的文件更新到最新版本

cleanSvn:将svn目录中,除了.svn(存放svn的元数据)外的文件和目录都删除掉。这一步是为了保证war包中已删除的文件,在svn中也能被删除

war:由gradle提供的打war包的命令

unzipWar:将步骤3打出的war包,解压到svn/ROOT目录下

publish:这个步骤又分为3步:

通过svn status目录,列出svn目录下的文件变化

对于新增的文件调用svn add命令;对于已删除的文件调用svn rm命令

调用svn commit命令,将变化的部分上传到svn

总结

本文介绍了通过解压war包并上传到svn/git的办法,避免了BAE专业版svn/git单文件40M的限制,以及每次都要上传整个war包的问题。本文还提供了一个gradle的构建脚本,上传代码时只需要执行gradle publish命令,就能实现打war包、解压war包、上传svn的自动化流程。

来源:

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

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

相关文章

java缺省包详解_Java在其它包中无法引用缺省包中的类

1、现象1.1 问题场景最近&#xff0c;在写测试代码时&#xff0c;将一个类(这里暂且称为ClassA)放在在缺省包中&#xff0c;也就是说&#xff0c;直接放在了src目录下&#xff0c;没有创建包。然后&#xff0c;将这个类打入了jar文件&#xff0c;提供给另外的工程(这里称为Proj…

myeclipse开发代码颜色搭配保护视力

废话不多说&#xff0c;这个东西主要是为了保护视力的&#xff0c;另外我也挺喜欢上边的颜色搭配的&#xff0c;今天特拿出来分享。直接上图 转载于:https://www.cnblogs.com/suncoolcat/p/3293895.html

linux下qt5静态编译器_笔记-linux下Qt5.3.2 静态编译

这里主要讲linux下的编译&#xff0c;windows下面比较简单依赖sudo apt-get install"^libxcb.*"libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev编译选项configure -confirm-license -opensource -static -release -no-qml-debug -qt-freetype -qt-xcb -n…

css--block formatting context

block formatting context(块级格式化上下文) 如何产生BFC&#xff1a;当一个HTML元素满足下面条件的任何一点&#xff0c;都可以产生Block Formatting Context&#xff1a; float的值不为none。overflow的值不为visible。display的值为table-cell, table-caption, inline-bloc…

java自定义注解_Java自定义注解

Java 注解(Annotation)又称 Java 标注&#xff0c;是 JDK5.0 引入的一种注释机制。Java 语言中的类、方法、变量、参数和包等都可以被标注。和 Javadoc 不同&#xff0c;Java 标注可以通过反射获取标注内容。在编译器生成类文件时&#xff0c;标注可以被嵌入到字节码中。Java 虚…

ios内购二次认证服务器代码

<?php// 获取认证结果的状态值 function get_status($arr) {while(list($key, $value) each($arr)) {if ($key "status") {return $value;}}return 10000; }// 认证 function verify($check_data, $is_sandbox 0) {$url "https://buy.itunes.apple.com/…

Java字符串压缩存储_java字符串压缩 - jeff1989的个人页面 - OSCHINA - 中文开源技术交流社区...

最近在做电信的一个用户套餐使用积量查询的接口&#xff0c;查询出的结构是一大段字符串。为了减小网络传输&#xff0c;故将字符串采用jdk自带的gzip和zip方法进行压缩。并用apache common 的base64进行压缩字符串的转码。base64的转码需要导入apache的codec包&#xff0c;不要…

android内存及内存溢出分析

一、 Android的内存机制 Android的程序由Java语言编写&#xff0c;所以Android的内存管理与Java的内存管理相似。程序员通过new为对象分配内存&#xff0c;所有对象在java堆内分配空间&#xff1b;然而对象的释放是由垃圾回收器来完成的。C&#xff0f;C中的内存机制是“谁污染…

java 通用方法_java 通用方法 代码

Class.forName("com.mysql.jdbc.Driver");String url"jdbc:mysql://localhost/bbs?userroot& passwordroot";Connection connDriverManager.getConnection(url);conn.setAutoCommit(false);String sql"insert into article values(null,?,?,no…

【原】UIView实现点击着重效果的解决方案

我们知道&#xff0c;在IOS中UIButton UIControl都有一个默认的选中效果&#xff0c;即点中后会图标会变暗&#xff0c;移开后又恢复正常。如何让UIView UIImageView等这些普通的view也实现同样的效果呢&#xff1f; 最近的一个项目里面&#xff0c;需要实现一个类似iPad/iPhon…

java oom产生原因_什么是OutOfMemoryError以及查找Java中OOM根本原因的步骤?

该OutOfMemoryError异常被抛出JVM&#xff0c;当JVM没有足够的可用内存&#xff0c;来分配。OutOfMemoryError在Exception类层次结构中属于Error类别。产生OutOfMemoryError我们将分配大量内存&#xff0c;这将耗尽堆内存的存储空间。我们将继续分配内存并达到目标&#xff0c;…

jquery在选择器中使用变量及innerText问题(转载)

转自&#xff1a;http://blog.csdn.net/shineall/article/details/7275449 最近在研究一个投票的小程序&#xff0c;写到获取每个作品的投票按钮及显示票数div的id时&#xff0c;遇到了点问题。 其中gid是一个变量&#xff0c;作为作品的唯一标识。 用dom动态更新当前票数写法如…

vs2010快捷键大全

CtrlE,D ----格式化全部代码 CtrlE,F ----格式化选中的代码 CTRL SHIFT B生成解决方案 CTRL F7生成编译 CTRL O打开文件 CTRL SHIFT O打开项目 CTRL SHIFT C显示类视图窗口 F4显示属性窗口 SHIFT F4显示项目属性窗口 CTRL SHIFT E显示资源视图 F12转到定义 CTRL F1…

猜字小游戏java方法体_java实现猜字小游戏

闲来无事&#xff0c;实现一个猜数字的小游戏&#xff0c;目的是巩固自己的基础知识&#xff0c;培养敲代码的乐趣。首先在项目中所创建的类中导包(视频教程推荐&#xff1a;java课程)import java.util.Scanner;//一个简单的文本扫描器&#xff0c;可以使用正则表达式解析原始类…

java 某天为当年第几周_JAVA 日期 一个时间段总共几周,每一天星期几

/*** 查询一个时间段的总周数和查询当前时间是第几周*paramstart*paramend*return*/private int[] selectWeekNum(Date start,Date end,int week,intflag){java.util.Calendar nowjava.util.Calendar.getInstance();java.util.Calendar c_totaljava.util.Calendar.getInstance(…

Aixs2发布webservice服务

http://www.blogjava.net/pzxsheng/archive/2012/12/21/393319.html 开发前准备&#xff1a; 1、Eclipse Java EE IDE&#xff08;Juno Service Release 1&#xff09;&#xff0c;这个必须是for J2EE 的IDE&#xff0c;因为发布webservice的插件所需。 下载地址&…

快照java开源_maven快照版本和发布版本

在使用maven过程中&#xff0c;我们在开发阶段经常性的会有很多公共库处于不稳定状态&#xff0c;随时需要修改并发布&#xff0c;可能一天就要发布一次&#xff0c;遇到bug时&#xff0c;甚至一天要发布N次。我们知道&#xff0c;maven的依赖管理是基于版本管理的&#xff0c;…

magento -- 修改文件来手动控制编译的开启和关闭

之前遇到一个情况&#xff0c;在编译开启的状态下安装了一个新插件&#xff0c;结果前后 台都不能访问了&#xff0c;这时想去找找是哪里在控制编译的开启和关闭&#xff0c;先把编译关了来保证系统不报错。按照一般的习惯后台数据或配置都是存在于数据库&#xff0c;但找遍数据…

鲶鱼java代码_实验一、求阶乘及计算数学常数E

一、实验目的1、掌握三种流程控制语法&#xff0c;并熟练应用2、了解Java的异常处理机制&#xff0c;会编写相应程序3、掌握方法重载的含义&#xff0c;并熟练应用二、实验内容&#xff1a;1、编写程序&#xff0c;计算n的阶乘(n&#xff01;)&#xff0c;n&#xff01;&#x…

Linux Shell 002-基础知识

Linux Shell 002-基础知识 本节关键字&#xff1a;Linux、Bash Shell、基础知识、Bash特性 相关指令&#xff1a;bash、rm、cp、touch、date 基础知识 什么是Shell脚本 简单概括&#xff1a;将需要执行的命令保存到文本中&#xff0c;按照顺序执行。 准备描述&#xff1a;sh…