說明
目前的項目需要提交至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. 配置環境
本地測試成功,就可以上環境了。這一步大家根據自身的配置在環境上配置就可以了。