说明
目前的项目需要提交至Jenkins,因此需要做两个操作
- 编译java项目成为一个可安装的exe文件
- 编译Ant脚本实现Jenkins编译
这里主要记录使用ant脚本编译的事情
下载需要的软件
我这次需要的软件主要有以下几个:
- Apache Ant
- NSIS
- NSIS插件nsisant
软件可以在官网上自行下载。
开始
1. 安装配置环境
安装NSIS和Apache Ant,并配置对应的环境变量(过程不再赘述)
2. 编译Ant脚本
Test-installer-build.xml
<project name="Test-installer-build" default="build.main" basedir=".">
<description>
**************************************
</description>
<!-- ***************** Properties ***************** -->
<property file="installer.properties"/>
<!-- *************** main ************************-->
<target name="build.main">
<antcall target="build.init" />
<antcall target="build.clear" />
<antcall target="build.mkdir" />
<antcall target="build.installer" />
<antcall target="installer.staging" />
<antcall target="installer.zip" />
</target>
<!-- ***************** Initialize build Timestamp ***************** -->
<target name="build.init">
<tstamp>
<format property="build.time" pattern="hh:mm:ss"/>
<format property="build.date" pattern="yyyyMMddHHmmss"/>
<format property="build.datetime" pattern="MMMM-d-yyyy HHmm"/>
</tstamp>
</target>
<!-- ***************** Initialize build Timestamp ***************** -->
<target name="build.clear" depends="build.init">
<delete dir="${build.deployment.dir}" includeemptydirs="true"/>
</target>
<!-- ***************** Initialize build Timestamp ***************** -->
<target name="build.mkdir" depends="build.init, build.clear">
<mkdir dir="${build.deployment.dir}"> </mkdir>
</target>
<target name="build.installer" depends="build.init">
<taskdef name="nsis" classname="com.danielreese.nsisant.Task">
<classpath location="${Test.installer.dir}/nsis/nsisant-1.3.jar" />
</taskdef>
<nsis script="${Test.installer.dir}/Test.nsi" />
</target>
<!-- Create the Installer Staging -->
<target name="installer.staging" depends="build.init">
<mkdir dir="${installer.staging.dir}/${build.datetime}"/>
<copy todir="${installer.staging.dir}/${build.datetime}">
<fileset dir="${Test.dir}/deploy">
<include name="Setup.exe"/>
</fileset>
</copy>
</target>
<!-- ZIP up the Installer -->
<target name="installer.zip" depends="installer.staging">
<zip destfile="${installer.staging.dir}/${installer.name}_${installer.version}_${build.datetime}.zip"
basedir="${installer.staging.dir}/${build.datetime}"/>
</target>
</project>
installer.properties
## {basedir} start from the folder where xml is located ##
root.dir=${basedir}/../../../../
test.dir=${root.dir}/Test
test.installer.dir=${test.dir}/deploy
installer.staging.dir=${build.deployment.dir}/Test-Installer
installer.name=Test
installer.version=Test-2.4.1
build.deployment.dir = ${root.dir}/build
关键配置说明
<target name="build.installer" depends="build.init">
<taskdef name="nsis" classname="com.danielreese.nsisant.Task">
<classpath location="${Test.installer.dir}/nsis/nsisant-1.3.jar" />
</taskdef>
<nsis script="${Test.installer.dir}/Test.nsi" />
</target>
在这里,nsisant-1.3.jar可以放置在任何路径下,只要配置的时候location可以找到即可。
Test.nsi同理。
建议配置的时候放在一起,方便后续人员维护。
3.配置其他文件
3.1 拷贝NSIS
安装NSIS后,将NSIS的安装文件copy至java工程中。
建议全部copy(只有7M左右),使用ant编译的时候需要使用/bin/makensis.exe,同时需要makensis.exe本身的一些配置文件。另外,本地验证Test.nsi是否存在错误可以直接使用NSIS.exe。
3.2 配置文件路径
需要将已经编译好的文件Test-installer-build.xml和installer.properties放置在/bin下面。
也可以自行修改配置,将这两个文件放置在别的路径下(需要修改并重新编译nsisant-1.3.jar,感兴趣的同学可以尝试一下。)
3.3 本地编译
建议在上环境之前先本地编译,如果有错误可以及时修改
编译命令如下(需要根据自己的情况适当修改):
##{Ant_Home}/bin/ant.bat -file {ant_script} {ant_main}
..\..\..\..\Platform\tools\apache-ant-1.6.2\bin\ant.bat -file Test-installer-build.xml build.main
4. 配置环境
本地测试成功,就可以上环境了。这一步大家根据自身的配置在环境上配置就可以了。