Jenkins:基于linux构建ivy项目

Posted 無名之徒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

  

 

  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 的 Ant +Ivy 项目中构建错误

Jenkins:Ivy build 随机触发其他项目

Jenkins Ivy 插件:寻找错误的 ivy.xml 文件

为啥即使没有 SVN 更改,Jenkins 也会触发 IVY 构建?

避免 Jenkins 不必要的 IVY 快照发布

Jenkins:是不是可以使用 Jenkinsfile 创建常春藤工作? (管道即代码)