Jenkins:基于linux建構ivy項目并釋出到resin (二)
基于以上《Jenkins:VMware虛拟機Linux系統的詳細安裝和使用教程(一)》的配置再進行對ivy項目建構:
- 啟動tomcat:sh startup.sh ,在浏覽器通路jenkins:https://linuxIP/jenkins
- 點選:“系統管理”-“插件管理”,安裝插件:ivy Plugin和ant Plugiin,安裝成功重新開機
- Linux安裝ivy:wget 下載下傳apache-ivy-2.4.0-bin.tar.gz(版本随意),解壓放在/usr/ivy/apache-ivy-2.4.0,配置環境變量
- Linux安裝ant :apt-get install ant(安裝不成功,可能要先更新,指令:sudo dpkg --configure -a)
或者用yum install ant安裝,安裝成功之後找到ant的安裝目錄,指令:which ant ,我的運作目錄是/usr/bin/ant ,配置linux環 境變量,vi /ect/profile ,完成後驗證:ant -version

5.linux安裝resin:解壓
6./在jenkins界面配置ant:“系統管理”-“全局工具配置”:如圖,ANT_HOME填寫ant在linux的安 裝目錄,就是上一步的目錄,會報錯,不必理會,直接儲存。
5.添加ivy的svn的Credentials:jenkins界面-“Credentials”-“System”, 如下圖,Username、 Password為ivy項目svn的賬号和密碼。
6.在jenkins建立一個item:
7.配置如圖:
Credentials就直接選擇已經建立的credentials:
8.完成,儲存。
9.在jenkins進行build,首先會把所有檔案check out 到/root/.jenkins/workspace/ivyPro,然後會根據項目中的build.xml進行打包
對項目進行build, build的時候看控制台的資訊,不出什麼意外的話會報錯,原因是check out下來的build.xml不是針對本地而寫的,是以進入
linux:/root/.jenkins/workspace/項目名/build.xml ,對build.xml針對本地進行重寫。demo如下面:
build.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<project name="business" default="deleteWar" basedir="." xmlns:ivy="antlib:org.apache.ivy.ant">
<property name="build" value="${basedir}/build" />
<property name="src" value="${basedir}/src" />
<property name="WebContent" value="${basedir}/WebContent" />
<property name="webinf" value="${WebContent}/WEB-INF" />
<property name="weblib" value="${webinf}/lib" />
<property name="webclasses" value="${webinf}/classes" />
<property name="webConfig" value="${src}/config" />
<!--請将下面的路徑改為你本地的路徑-->
<property name="tomcat.home" value="/usr/tomcat/tomcat-80" />
<property name="jdk" value="/usr/java/jdk" />
<property name="resin" value="/usr/resin/resin" />
<property name="webserver" value="/usr/tomcat/tomcat-80/webapps" />
<property name="ivy.local.default.root" location="/root/.jenkins/workspace/IVY_LIB" />
<!--定義CLASSPACH,編譯時用到你外部加入的包-->
<path id="classpath">
<pathelement location="${src}" />
<fileset dir="${jdk}/lib" includes="***.jar" />
<fileset dir="${tomcat.home}/lib">
<include name="*.jar" />
</fileset>
<fileset dir="${weblib}" includes="***.jar" />
<fileset dir="${resin}/lib" includes="***.jar" />
</path>
<!--ivy的resolve-->
<target name="resolve">
<echo message="ivy的resolve" />
<!-- id=ivy.instance 配置本地倉庫,不設定預設為網絡上的倉庫-->
<ivy:settings id="ivy.instance" file="${ivy.local.default.root}/ivysettings.xml" />
<ivy:retrieve pattern="${weblib}/[artifact].[ext]" />
</target>
<!--清空檔案-->
<target name="clean" description="删除任務" depends="resolve">
<echo message="删除任務" />
<delete dir="${build}" />
<delete dir="${webclasses}" />
</target>
<!--建立一個臨時目錄-->
<target name="init" description="建立檔案夾" depends="clean">
<echo message="建立" />
<mkdir dir="${build}" />
<mkdir dir="${build}/WEB-INF/classes" />
<mkdir dir="${webclasses}" />
</target>
<!--建構配置檔案的目錄-->
<target name="config" description="複制配置檔案" depends="init">
<echo message="複制配置檔案" />
<copy todir="${build}/WEB-INF/classes">
<fileset dir="${src}">
<exclude name="com/**" />
</fileset>
</copy>
</target>
<!--編譯java檔案-->
<target name="compile" description="編譯檔案" depends="config">
<echo message="編譯檔案" />
<javac fork="true" executable="${jdk}/bin/javac" srcdir="${src}" destdir="${webclasses}">
<classpath refid="classpath" />
<compilerarg line="-encoding utf-8 " />
</javac>
</target>
<!--打成WAR包-->
<target name="generwar" depends="compile">
<echo message="打成WAR" />
<war destfile="${build}/${ant.project.name}.war" webxml="${webinf}/web.xml">
<!-- 将非jar和非class檔案拷貝到war包的對應路徑下。 -->
<fileset dir="${WebContent}">
<include name="**/**" />
<exclude name="**/*.jar"/>
<exclude name="**/*.class"/>
</fileset>
<!-- 将建構的配置檔案目錄拷貝,路徑對應 -->
<fileset dir="${build}">
<include name="WEB-INF/**" />
</fileset>
<!-- 加lib包 -->
<lib dir="${weblib}" />
<!-- 加編譯過的檔案 -->
<classes dir="${webclasses}" />
</war>
</target>
<!--把WAR放到一個指定目錄,這裡是直接布署到TOMCAT伺服器-->
<target name="fabu" depends="generwar" description="釋出">
<copy file="${build}/${ant.project.name}.war" todir="${webserver}">
</copy>
</target>
<!--把打好的WAR删除-->
<target name="deleteWar" depends="fabu" description="删除伺服器上的war">
<delete file="${build}/${ant.project.name}.war" />
</target>
</project>
9.build成功的界面:
build.xml,被其他項目打依賴包
build.xml格式如下:
<project name="Declares" default="${client.jar}" basedir=".">
<property name="build.dir" value="WebContent/WEB-INF/classes/" /> <!-- 項目需要打包的目錄 -->
<property name="dist.dir" value="/Users/xue/project/WebContent/WEB-INF/lib" /> <!-- 打包到哪裡 -->
<property name="client.jar" value="ivyPro-jenkins-1.0.0.jar" /> <!-- 包的名稱 -->
<target name="prepare">
<mkdir dir="${dist.dir}" />
<delete>
<fileset dir="${dist.dir}">
<include name="${dist.jar}" />
</fileset>
</delete>
</target>
<target name="${client.jar}" depends="prepare">
<jar jarfile="${dist.dir}/${client.jar}">
<fileset dir="${build.dir}">
<!-- 要打包的地方,格式如下,如果目錄下面還有目錄,後面加多個* -->
<include name="com/pakege/hello/bean/*" />
<include name="com/pakege/hello/config/*" />
</jar>
然後會在Users/xue/project/WebContent/WEB-INF/lib目錄下有個ivyPro-jenkins-1.0.0.jar包。