Jenkins:基于linux构建ivy项目
Posted 無名之徒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jenkins:基于linux构建ivy项目相关的知识,希望对你有一定的参考价值。
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/*" />
</fileset>
</jar>
</target>
然后会在Users/xue/project/WebContent/WEB-INF/lib目录下有个ivyPro-jenkins-1.0.0.jar包。
以上是关于Jenkins:基于linux构建ivy项目的主要内容,如果未能解决你的问题,请参考以下文章
Jenkins Ivy 插件:寻找错误的 ivy.xml 文件