项目打包版本号维护

项目打包是持续集成最基本的一个环节,当前主流的是maven,还有比较老点的ant,还有很多其他的打包工具。

打包版本号都是通过一个buildnumber.properties文件维护,打包工具的插件自动维护这个文件。

#Build Number for ANT. Do not edit!
#Thu Jul 21 20:09:18 CST 2016
name_project=>e-3pl
build.number=1002
groupId=eal
build.date=2016-07-21 20\:09\:17
artifactId=eal-3pl
buildnum.properties

一、maven打包维护版本号

1、使用maven-antrun-plugin插件

<plugin>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>1.8</version>
                <executions>
                    <execution>
                        <id>createVersion</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <configuration>
                            <target>
                                <property file="${basedir}/buildnum.properties" />
                                <propertyfile file="${basedir}/buildnum.properties">
                                    <entry key="build.date" type="date" value="now"
                                        pattern="yyyy-MM-dd HH:mm:ss" />
                                </propertyfile>
                                <copy todir="${project.build.directory}/dist/${build.number}">
                                    <fileset dir="${project.build.directory}">
                                        <include name="e-3pl.war" />
                                    </fileset>
                                </copy>
                                <copy file="${basedir}/buildnum.properties" todir="${project.build.directory}/dist" />
                                <buildnumber file="${basedir}/buildnum.properties" />
                            </target>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
View Code

 

 

二、使用ant打包

ant的build.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!-- 定义一个工程,默认任务为warFile。 -->
<project name="yxw" default="number-1" basedir=".">
    <property name="project.build.directory" value="target1"></property>
    
    <!-- 定义属性,打成war包的名称。 -->
    <property name="warFileName" value="yxw.war"></property>
    
    <!-- 定义路径,编译java文件时用到的jar包。 -->
    <path id="project.lib">
        <fileset dir="${basedir}/WebRoot/WEB-INF/lib">
            <include name="**/*.jar"/>
        </fileset>
    </path>
    
    <!-- 定义任务,清空任务:清空原有的class文件,创建新的build路径。 -->
    <target name="clean">
        <delete dir="${basedir}/build" />
        <mkdir dir="${basedir}/build" />
        <delete dir="${basedir}/target1" />
        <mkdir dir="${basedir}/target1" />
    </target>
    
    <!-- 定义任务,编译java文件夹中的java文件,编译后的class文件放到创建的文件夹下。 -->
    <target name="compile" depends="clean">
        <javac fork="true" executable="/root/usr/local/cip_3.0/work/.jenkins/tools/hudson.model.JDK/jdk_1.7/bin/javac" srcdir="${basedir}/src" excludes="${basedir}/test/*.java" destdir="${basedir}/build" includeantruntime="false">
            <classpath refid="project.lib">
            </classpath>
        </javac>
    </target>
    
    <!-- 定义默认任务,将class文件集合成jar包。 -->
    <target name="warFile" depends="compile">
        <buildnumber file="${basedir}/buildnum.properties" />
        <echo message="${build.number}"/>
        <propertyfile file="${basedir}/buildnum.properties">
            <entry key="build.date" type="date" value="now"
            pattern="yyyyMMddHHmmss" />
        </propertyfile>
        <copy todir="${project.build.directory}/dist/${build.number}">
            <fileset dir="${project.build.directory}">
                <include name="yxw.war" />
            </fileset>
        </copy>
        <!--<copy file="${basedir}/buildnum.properties" todir="${project.build.directory}/dist" />-->
        
        
        
        <!-- 删除原有war包。 -->
        <delete dir="${basedir}/target1/dist" />
        <mkdir dir="${basedir}/target1/dist/${build.number}" />
        <!-- 建立新war包。 -->
        <war destfile="${basedir}/target1/dist/${build.number}/${warFileName}" webxml="${basedir}/WebRoot/WEB-INF/web.xml">
            <!-- 将非jar和非class文件拷贝到war包的对应路径下。 -->
            <fileset dir="${basedir}/WebRoot">
                <include name="**/**.*" />            
                <exclude name="**/*.jar"/>
                <exclude name="**/*.class"/>
            </fileset>            
            <!-- 将jar和class文件拷贝到war包的对应路径下。 -->
            <lib dir="${basedir}/WebRoot/WEB-INF/lib" >
                <exclude name="**/jsp-api.jar"/>
            </lib>
            <classes dir="${basedir}/build" />
            <!--<classes dir="${basedir}/WebRoot/WEB-INF/resources" />
            <classes dir="${basedir}/WebRoot/WEB-INF/struts" />-->
        </war>
        <copy file="${basedir}/buildnum.properties" todir="${project.build.directory}/dist" />
        
    </target>
    
    <target name="number-1" depends="warFile">
        <propertyfile file="${project.build.directory}/dist/buildnum.properties">
            <entry key="build.number" type="int" value="${build.number}-1"/>
        </propertyfile>
        <echo message="${build.number}"/>
    </target>
</project>
build.xml

 

posted @ 2016-07-21 20:21  controlV  阅读(1319)  评论(0编辑  收藏  举报