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包。