zoukankan      html  css  js  c++  java
  • 项目打包版本号维护

    项目打包是持续集成最基本的一个环节,当前主流的是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
  • 相关阅读:
    【MYSQL】某些有用的sql【持续更新中】
    【LDAP】什么时候需要使用LDAP?
    【LDAP】 objectClass 分类
    MySQL的锁机制
    spring的事务传播级别及场景
    @NotEmpty,@NotNull和@NotBlank的区别
    mysql的字段为bit时,插入数据报Data too long
    activeMQ启动报--找不到或无法加载主类
    【ListViewJson】【com.demo.app】【AppException】源码分析及其在工程中作用
    【ListViewJson】【com.demo.app】【AppConfig】源码分析及其在工程中作用
  • 原文地址:https://www.cnblogs.com/shuaiqing/p/5693043.html
Copyright © 2011-2022 走看看