`
rainytooo
  • 浏览: 39044 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

抛弃ant maven用bash来build 项目

    博客分类:
  • dev
阅读更多

受够了ant和maven

决定自己写脚本 一边写一边改吧  这个已经可以 编译 和拷贝资源文件了

build了一个29个包  123个java文件 用了3秒

下一步就是打包 发布 上传 版本库等等

#!/bin/bash

## java project builder tools
## create date 2009-04-02
## version 0.0.1

### define the source dir
java_file_sources_dir=src
out_put_dir=bin
lib_directory=lib


###define the JAVA_HOME and PATH CLASSPATH if you needed
#JAVA_HOME=/usr/lib/java/jdk1.6.0_11
#PATH=$JAVA_HOME/bin:$PATH
export LANG=zh_CN.UTF-8

CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:"$out_put_dir/":"$java_file_sources_dir"



for jar in `ls $lib_directory/*.jar`
    do
        CLASSPATH="$CLASSPATH:""$jar"
    done
echo -e '\E[31;48m'"\033[1m ****************************        build xmhi backgroud project start        **************************** \033[0m"
echo -e '\E[32;48m'"\033[1m JAVA_HOME : \033[0m" $JAVA_HOME
echo -e '\E[32;48m'"\E[1m CLASSPATH : \E[0m" $CLASSPATH
echo -e '\E[32;48m'"\E[1m PATH : \E[0m" $PATH

clear_bin()
{
    echo -e '\E[33;48m'"\033[1m start to clear project ...... \033[0m"
    if [ -e $out_put_dir ] ; then
        rm -rf "$out_put_dir"
        mkdir "$out_put_dir"
    else
        mkdir "$out_put_dir"
    fi	
}


## compile all the java source in the source dirctory to the output directory you defined 
compile_source()
{   
    # init a array for the all java source folder
    declare -a java_source_folder_array
    folder_number=0 
    for java_source_name in ` find $java_file_sources_dir/ -type f -name  '*.java' `
        do
            java_sources_names=${java_source_name%/*.java}
            has_it_flag=0
            for i in ${#java_source_folder_array[@]}
	        do
                   if [ "${java_source_folder_array[$i]}" = "$java_sources_names" ] ; then
                       has_it_flag=1
                   elif [ "$java_sources_names" = "$java_file_sources_dir/" ] ; then
                       has_it_flag=1
                   fi
	        done
            if [ "$has_it_flag" = 0 ] ; then 
                let "folder_number+=1"
                java_source_folder_array[$folder_number]="$java_sources_names"        
            fi
	    #javac -encoding "UTF-8" -d $out_put_dir "$java_sources_names"
        done
    echo -e '\E[33;48m'"\033[1m start to compile java source ...... \033[0m"
    #echo "total source folder number  :"  "${#java_source_folder_array[@]}"
    #echo "total source folders :"  "${java_source_folder_array[@]}"
    echo "total package number : " "$[folder_number]"
    java_source_files=""
    for (( a=1 ; a <= $[folder_number] ; a++ ))
        do
             java_source_files="$java_source_files ""${java_source_folder_array[$a]}""/*.java"
             #javac -encoding "UTF-8" -nowarn -d $out_put_dir  $java_source_files
        done
    echo "java source files name : "  "$java_source_files"
    echo "total java source count :" ` find $java_file_sources_dir/ -name *.java |wc -l `
    javac -encoding "UTF-8" -nowarn -d $out_put_dir  $java_source_files
    echo "total class file  count :" ` find $out_put_dir/ -name *.class |wc -l `
}






## copy the resource not include java source
copy_resources_files()
{   echo -e '\E[33;48m'"\033[1m start to copy resource file ...... \033[0m"
    for resources_file_name in `find $java_file_sources_dir/  \( -type f  -name '**.java*' -o -type d -o -path  '*.svn*' \)  -o -print`
        do
            #get the file name not include the resource path name
            resource_file_name_nsp=${resources_file_name#"$java_file_sources_dir/"}
	    echo $resource_file_name_nsp
            #copy the resource file to the output directory
	    cp -fu $resources_file_name "$out_put_dir""/$resource_file_name_nsp"
        done
}



start()
{
    if [ -z $1  ] ; then
        clear_bin
        compile_source
        copy_resources_files
    fi
            
}



time start

echo -e '\E[31;48m'"\033[1m ****************************        build xmhi backgroud project end        **************************** \033[0m"
2
0
分享到:
评论

相关推荐

    ANT-build-xml文件详解

    总结,ANT-build.xml文件是Ant构建工具的核心,通过XML配置来描述项目构建的整个流程,包括源码编译、资源复制、测试执行、打包发布等步骤。理解并熟练掌握ANT-build.xml的编写,能够极大地提升Java项目的构建效率和...

    ant工具使用.zip

    在实际使用Ant时,我们首先需要在项目根目录下创建`build.xml`文件,并定义所需的任务和目标。例如,一个简单的构建文件可能包含以下内容: ```xml &lt;project name="MyProject" default="build" basedir="."&gt; ...

    Ant工具使用(教程)

    Ant的构建过程由一系列称为"任务"的模块组成,这些任务通过XML格式的build文件来定义。XML文件中包含了构建步骤的描述,使得项目构建过程可以被清晰地记录和重复执行。 ### 二、Ant的安装 1. **下载**:访问Apache...

    最新版linux apache-ant-1.9.15-bin.tar.gz

    Ant广泛应用于Java项目,尤其是与Maven和Gradle等现代构建工具一起使用,以满足不同项目的构建需求。虽然Maven和Gradle现在更流行,但Ant由于其灵活性和自定义性,仍然在许多项目中占有一席之地。 在实际开发中,...

    linux版_ant

    此外,Ant可以与其他工具(如Maven、Gradle)集成,以适应更复杂的项目需求。 总之,Linux版的Apache Ant是Java开发不可或缺的一部分,它简化了构建过程,促进了团队协作,并为自动化工作流提供了强大支持。通过...

    ant工具使用

    Ant使用XML来描述构建过程,包括编译、打包、测试、部署等步骤,使得项目构建过程规范化和可配置化。 一、Ant的基本概念与结构 1. 构建文件:Ant的核心是构建文件(build.xml),它定义了项目的构建规则和任务。...

    apache-ant-1.9.12.tar.gz

    Ant是Apache软件基金会的一个项目,它遵循XML格式来定义构建文件,这使得构建脚本跨平台兼容,易于理解和维护。 Apache Ant的核心概念是任务(Tasks),这些任务是执行特定构建操作的可重用单元,比如编译源代码、...

    Ant详细配置总结

    它的核心优势在于其高度的可定制性和灵活性,使得开发者能够通过简单的XML配置文件(通常命名为`build.xml`)来实现整个项目的构建流程。 **Ant的特点:** 1. **跨平台性**:由于Ant是基于Java编写的,因此可以在...

    ant的使用过程以及jar的运行

    Apache Ant是一个开源的Java构建工具,它通过XML格式的构建文件来定义项目构建任务,极大地简化了Java项目的编译、测试和部署工作。本文将深入探讨Ant的使用过程,并结合JAR包的运行,为读者提供一个完整的实践指南...

    apache-ant-1.9.6安装包

    Apache Ant 是一个广泛使用的Java构建工具,它遵循“软件构建”的概念,允许开发者通过XML配置文件定义任务来自动化构建过程,如编译、打包、测试和部署应用。Apache Ant 1.9.6 是该工具的一个版本,包含了对之前...

    apache-ant-1.9.3-bin.tar.gz

    在实际开发中,Ant常与其他工具结合使用,如Maven或Gradle,它们各自有各自的优点和适用场景。Ant因其灵活性和强大的定制能力,尤其适合那些对构建过程有特殊需求的项目。不过,对于大部分项目来说,Maven或Gradle的...

    Ant 打可运行的jar

    在Java开发中,Ant是一个非常重要的构建工具,它基于XML来定义项目构建过程,包括编译、测试、打包等任务。本篇文章将详细介绍如何使用Ant来创建一个可运行的JAR文件,使得我们能够直接通过命令行运行这个JAR。 ...

    ant 安装资料 适用于linux

    在Linux中,Ant常与其他Java工具(如Maven和Gradle)一起使用,提供项目构建的灵活性。它支持多种任务,比如Java源码的编译、JAR文件的打包、测试的执行以及部署到服务器等。Ant的XML配置文件(build.xml)是其核心...

    apache-ant

    使用Apache Ant进行项目构建时,通常会自定义build.xml文件来适应项目的特定需求。例如,你可以定义如下目标: - `compile`:编译源代码。 - `jar`:将编译后的类打包成JAR文件。 - `test`:运行项目中的单元测试。 ...

    ant编译

    ### ant编译详解 在软件开发领域,自动化构建工具对于提高开发...虽然随着现代构建工具如Maven和Gradle的兴起,Ant的应用场景有所减少,但对于理解构建过程的基础原理以及维护老项目来说,掌握Ant仍然是非常有价值的。

    Kettle源码编译流程说明

    - 执行`ant build`和`ant publish-local`来分别构建和发布模块。 - 对于插件的构建,也可以采用类似的方式: - 进入特定插件的目录,如`xml-input-stream`。 - 执行`ant build`和`ant publish-local`来构建和...

    eclipse 打包 jar 碰到的问题(包含第三方包)

    如果项目使用Ant或Maven进行构建,这两个工具都有内置的方式将依赖库和项目一起打包。在Ant中,可以使用`&lt;jar&gt;`任务配合`&lt;fileset&gt;`来包含lib目录下的所有jar;在Maven中,可以使用`maven-assembly-plugin`或`maven...

    BuildScripts.zip

    2. **自动化工具**:常见的构建工具有Maven、Gradle、Ant等,它们提供了强大的自动化功能,能够管理依赖、编译源码、运行测试和打包应用。理解并熟练使用这些工具是构建脚本编写的基础。 3. **版本控制**:子文件名...

    最常用的几种Java打包方式总结

    对于小型项目,直接使用JAR命令或者Ant可能是最简单快捷的选择;而对于大型项目,采用Maven或Gradle则能够更好地管理和自动化整个构建过程。 选择合适的打包工具不仅能够提高开发效率,还能确保项目的稳定性和可...

Global site tag (gtag.js) - Google Analytics