# 批量复制 War/Jar 文件

这个工具是操作 War/Jar 文件的,下面针对 War 文件进行介绍,Jar 文件也同样适用。

这个工具能做什么?

批量复制 War 文件,复制的过程中,可动态修改 War 文件中包含的文本文件(如数据库的连接信息)

# 基本介绍

# 项目地址

https://github.com/hxulin/batch-package (opens new window)

# 运行原理

解压待复制的 War 文件,修改指定的文本文件内容,再进行二次打包。

简单的说明图

# 环境要求

运行环境:JDK1.7 或更高版本

# 快速开始

  1. 下载项目中的 batch-package-1.0.RELEASE-dist.zip (opens new window) 文件,并解压

  2. 在解压目录中,运行以下命令:

    java -jar batch-package-1.0.jar
    

    windows系统也可以直接双击运行startup.bat

    此时在你的目录中会生成 _bak,_gen,_tmp三个目录,_gen目录中就存放着最终生成的文件

      以上是一个快速的测试用例。你可以查看配置文件 config.json 以及最终生成的文件,了解它的配置方法。_gen目录中测试生成的每一个 ROOT.war 是可以直接放到 Tomcat 中运行并访问的。

  3. 将你准备复制的 ROOT.war 文件放到解压目录中,替换测试的 ROOT.war

  4. 修改 config.json 文件中的配置

  5. 接着执行第 2 步就可以自定义生成了

# 核心配置

程序完成个性化的复制操作,需要在核心配置文件 config.json 中进行相关设置。config.json 的结构如下:

JSON配置文件结构图

下面对 JSON 配置的各个节点进行相关说明:

# warFileName 节点

配置待复制的 War 文件名,默认是 ROOT.war,可以修改成需要的。

# strategy 节点

生成策略的配置,该节点的配置是针对于 configuration 节点的,有以下四个字段可配置。

default: 默认策略,默认情况生成 configuration 中配置的所有项

include: 包含策略,指定生成时包含的项,多个项用 | 分隔

exclude: 排除策略,指定生成时排除的项,多个项用 | 分隔

active: 当前激活哪一个策略,可设置的值为 default、include、exclude

# configuration 节点

configuration 节点下可以配置多个对象,一个对象就对应着将要复制生成的一个 War 文件,每个对象下面又有两个子节点:generateFolder 和 items。

generateFolder 的值唯一,既表示复制后的 War 文件的存放目录,又是 strategy 节点用来配置生成策略的。

items 下的对象表示需要修改的文本文件,可以配置多个。items 的配置比较灵活,其中 configFileName 字段表示待修改的文件名(在 War 中的绝对路径)。其他字段都是自定义的,表示修改的行号,有多种灵活的写法。

修改第5行内容为AAA(修改单行)
{
    "5": "AAA",
    ...
}
第5-7行内容改为 AAA、BBB、CCC(修改多个连续的行)
{
    "5": "AAA",
    "6": "BBB",
    "7": "CCC",
    ...
}

或者
{
    "5-7": [
        "AAA", "BBB", "CCC"
    ],
    ...
}
第5-7行每一行都改为AAA(修改多个连续的行为同一个值)
{
    "5": "AAA",
    "6": "AAA",
    "7": "AAA",
    ...
}

或者
{
    "5-7": "AAA",
    ...
}

行号没有先后顺序,如:先配置第 7 行,再配置第 5 行也是可以的。

(完)