天天看点

Jenkins:基于linux构建ivy项目

Jenkins:基于linux构建ivy项目并发布到resin (二)

基于以上《Jenkins:VMware虚拟机Linux系统的详细安装和使用教程(一)》的配置再进行对ivy项目构建:

  1. 启动tomcat:sh startup.sh ,在浏览器访问jenkins:https://linuxIP/jenkins
  2. 点击:“系统管理”-“插件管理”,安装插件:ivy Plugin和ant Plugiin,安装成功重启
  3. Linux安装ivy:wget 下载apache-ivy-2.4.0-bin.tar.gz(版本随意),解压放在/usr/ivy/apache-ivy-2.4.0,配置环境变量
  4. 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

  

Jenkins:基于linux构建ivy项目

  5.linux安装resin:解压

  6./在jenkins界面配置ant:“系统管理”-“全局工具配置”:如图,ANT_HOME填写ant在linux的安 装目录,就是上一步的目录,会报错,不必理会,直接保存。

   

Jenkins:基于linux构建ivy项目

   5.添加ivy的svn的Credentials:jenkins界面-“Credentials”-“System”, 如下图,Username、 Password为ivy项目svn的账号和密码。

Jenkins:基于linux构建ivy项目

  6.在jenkins新建一个item:

Jenkins:基于linux构建ivy项目

  7.配置如图:

Jenkins:基于linux构建ivy项目

  Credentials就直接选择已经创建的credentials:

Jenkins:基于linux构建ivy项目
Jenkins:基于linux构建ivy项目
Jenkins:基于linux构建ivy项目

   8.完成,保存。

  9.在jenkins进行build,首先会把所有文件check out 到/root/.jenkins/workspace/ivyPro,然后会根据项目中的build.xml进行打包

     

Jenkins:基于linux构建ivy项目

  对项目进行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成功的界面:

Jenkins:基于linux构建ivy项目

    

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