基于svn的web项目增量包打包工具

svn增量


发表于 2017-04-28 22:45


用swing写的,支持jre6+,采用了 svnkit-1.8 ,由于我没有开发过swing程序,所以代码都是七拼八凑的:)

打包过程如下:

双击jar包,会出现如下界面:

QQ截图20170815224204.png

输入框 说明
开始日期 如果填写了开始日期,那么只会打包开始日期版本到最新版本内提交的文件
开始版本 如果填写了开始版本,那么打包该版本到最新版本之间提交的文件,版本优先级大于日期
svn用户名 如果指定了用户名,那么只会打包这个用户提交的文件
输出框 打包过程中的一些信息会输出在这里

日期接受的日期格式有:yyyy-MM-dd HH:mm:ss, yyyy-MM-dd HH:mm,yyyy-MM-dd HH, yyyy-MM-dd, yyyyMMdd, yyyy/MM/dd, yyyy/MM/dd HH:mm:ss, yyyy/MM/dd HH:mm,yyyy/MM/dd HH, yyyyMMdd HH:mm:ss, yyyyMMdd HH:mm, yyyyMMdd HH

如果没有配置过SVN地址,那么在打包之前,还需要配置SVN地址,此时点击SVN地址编辑器,会出现如下界面:

QQ截图20170815224353.png

此时点击新增,弹窗如下:

QQ截图20170815224442.png

输入框 说明
用户名 SVN用户
密码 SVN用户密码
地址库 SVN地址

打包器默认提供了一个Web打包器,web打包器需要如下属性使其工作:

输入框 说明
项目输出文件夹 打包完之后会将文件输出到这个文件夹
项目编译文件夹 存放classes文件的文件夹,一般是 \path\to\project\target\classes
主目录 一般是webapp或者webContent或者webRoot,一般看到这个名字就会想到是哪个文件夹
项目本地目录 项目本地主目录,必须处于svn控制之下
是否是maven项目 true or false

输入完上述信息之后点击保存按钮,点击打包按钮就可以开始打包了,如果指定条件下存在文件,会弹出:

QQ截图20170428214243.png

顶部输入框可以通过String.contains方法查询需要打包的文件,通过勾选框可以选择要打包的文件

点击确定按钮之后将正式打包,打包完毕之后可以选择是否打开打包后的输出文件夹。

ps

  • 它只支持一个人打包,打包之前应与其他人协商

源码和可执行jar包下载地址: https://gitlab.com/qianyuhao/svn-pack

其他打包方式的支持:在默认情况下,只支持一个Web项目的打包,如果需要支持其他项目的打包,比如普通java工程,可以继承 com.hl.npack.Packager 或者 com.hl.npack.BasePackager,一般需要实现如下两个方法:

	public abstract List<PackagerProperty> getPackageProperties();

	public abstract File write(Collection<SVNLogEntryPathWrapper> wrappers, WrappersWriteProcessNotify notify,
			Location location) throws WriteProcessException, Exception;

其中PackagerProperty是打包器必要的属性,和下图table中的内容对应:

QQ截图20170815225302.png

在保存完毕之后,PackagerProperty的属性和值会以properties文件保存在用户目录/svnpack/locations下,需要注意的是,properties文件会占用name,password,url,packagerId这四个key(分别用来存储svn用户名、svn密码、svn地址以及打包器ID), 因此 PackagerProperty 不能以上面四个key来作为属性key。

Location是SVN地址信息的封装,可以用来获取用户名、密码、地址库以及打包器ID、打包器属性等。
SVNLogEntryPathWrapper是SVN日志信息的一个封装。
WrappersWriteProcessNotify用于在打包过程中跟GUI进行进度上的交互(用于进度条的显示)

changelog:

  1. 修复了刚刚提交的文件无法被搜索打包的bug
  2. 修复了进度条错乱的bug
  3. 删除了结束日期以及结束版本
  4. 支持多个SVN地址
  5. 修复了svn地址双击无法弹出修改框的bug(2017-10-23)

搜索