项目打包版本号维护

项目打包是持续集成最基本的一个环节,当前主流的是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>

二、使用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

时间: 2024-10-22 09:17:54

项目打包版本号维护的相关文章

项目更改版本号之后打包失败 resolution will not be reattempted until the update interval of nexus has elapsed or updates are forced

在修改项目的版本号之后,如pom.xml中<version>1.2.0-SNAPSHOT</version>替换为<version>1.0.0-RELEASE</version>后,执行打包报错如下: ·················resolution will not be reattempted until the update interval of nexus has elapsed or updates are forced -> [He

IBM规则引擎(ODM)入门系列二(2):规则项目打包、发布及服务端测试

上一篇博文介绍了如何搭建安装res服务,这次一起来看看如何在Rule Designer中创建RuleApp并将其发布到Res服务上. 打开Rule Designer,查看一下我们的规则项目: 以PersonRule规则项目为例,如上图中,在“规则项目图”视图中,点击“创建RuleApp项目”: 输入项目名“PersonRuleApp”,点击下一步: 因为点击的是PersonRule规则集项目的“创建RuleApp”导航链接,所以这里选择规则集项目默认为“PersonRule”,点击完成. 此时在

Grunt-Kmc基于KISSY项目打包

1. Grunt-Kmc 是基于nodejs开发的,所以未安装nodeJS,先需要安装nodejs.安装步骤如下:        1. 下载安装文件,下载地址:http://www.nodejs.org/download/ 如下: 根据操作系统的多少位 下载那个版本.下载完成后,双击: 执行相应的安装,完成后,在终端命令下,做如下操作: Node 和 npm的版本号,说明都已经安装成功了(注:新版本的node安装文件已经包含了npm,所以现在只需要安装这个node版本的文件就ok). 2. Gr

图解使用VS的安装项目打包程序

背景 这段时间一直在做客户端程序的打包程序,遇到各种坑.因为以前没有任何这方面的经验,历经各种折腾,费尽九牛二虎之力总算是完成了. 虽然没有太多技术含量,但是因为挺繁琐的,所以还是在此记录一下. 由于篇幅原因,先介绍第一阶段:直接使用VS自带的安装项目打包程序. 后面会陆续介绍:自定义安装界面(不适用windows默认风格),使用NSIS脚本制作打包程序. 1.   建立安装项目工程 1.1. 创建工程 首先在 VS中打开你将要打包的项目.我的案例中,我的工程名叫System. 右击解决方案 -

异常及日志使用与项目打包

你会捕捉异常吗? 异常简要信息(仅有出错原因): Exception.getMessage()    或   Exception.toString () 异常详细信息(有具体出错的行号): Exception.printStackTrace()方法 Exception.getStackTrace()方法返回一个StackTraceElement对象的集合 1 /** 2 * 获取详细的异常信息的工具方法 3 */ 4 public static String getTrace(Throwable

java项目打包成exe文件

前言: 我们都知道Java可以将二进制程序打包成可执行jar文件,双击这个jar和双击exe效果是一样一样的,但感觉还是不同.其实将java程序打包成exe也需要这个可执行jar文件. 准备: eclipse.exe4j(网上有软件和帐号下载) 第一步,将java项目打包成可执行jar文件,首先看一下我的java project结构,Main.java是程序入口类,里面有main函数,config目录是些配置文件,lib是用到的第三方类库 开始打包,Simulate(Java项目)-鼠标右键-E

C#项目打包后安装的桌面快捷方式图标怎么设置成自己想要的图标

#项目打包后安装的桌面快捷方式图标怎么设置成自己想要的图标 2012-08-25 09:11匿名 | 浏览 3286 次 C#编程 C#项目用vs2005自带的工具打包后安装的桌面快捷方式图标怎么设置成自己想要的图标,就想QQ安装之后在桌面的快捷方式一样 2012-08-25 09:21网友采纳 在创建快捷方式的时候是可以指定图标的啊.当然你最好把那图标文件(扩展名是ico)放在打包的文件夹中,不然你是不能指定的.

Eclipse将引用了第三方jar包的Java项目打包成jar文件的两种方法

方案一:用Eclipse自带的Export功能 步骤1:准备主清单文件 “MANIFEST.MF”, 由于是打包引用了第三方jar包的Java项目,故需要自定义配置文件MANIFEST.MF,在该项目下建立文件MANIFEST.MF,内容如下: Manifest-Version: 1.0 Class-Path: lib/commons-codec.jar lib/commons-httpclient-3.1.jar lib/commons-logging-1.1.jar lib/log4j-1.

iOS开发如何把项目打包为ipa文件

最近自己做的一个项目,由于app store发布流程比较复杂,且审核周期较长,客户希望提前能看到产品,所以我先给自己的项目打包成一个ipa文件(类似Android的apk安装包),然后发布在"蒲公英 平台",该平台会自动生成一个二维码方便用户扫码下载,体验还是不错的. 具体流程如下: 先点击如图按钮,选择Edit Scheme,同时运行设备一定要选择真机,不能选择模拟器. 选择了编辑按钮之后,选择运行模式为release模式. 选择完成之后,command+B编译一次,此时在Produ