`
renjie120
  • 浏览: 237911 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
D11bba82-ec4a-3d31-a3c0-c51130c62f1c
Java应用集锦
浏览量:22941
社区版块
存档分类
最新评论

ANT学习心得【第一部分】

    博客分类:
  • ant
阅读更多

 

 

两周发一篇技术贴,总结一下这两周学习的成果。这是第二贴。

 

最近开始学习ant部署的教程,了解了一点点皮毛,做了一些总结。

先发第一部分,附件是相关的联系的源码文件。

第二部分再总结一下ant如何和tomcat结合部署一个web工程,如何和junit结合进行单元测试。

我是ant初学者,欢迎高手指点... 

. 环境变量配置

  下载地址: http://ant.apache.org/bindownload.cgi

  下载之后,配置 ANT_HOME       (E:\ 火狐下载 \apache-ant-1.8.2-bin\apache-ant-1.8.2)

           添加 PATH   %ANT_HOME%\bin;

  为了方便测试,还添加了 junit jar 包到 ant 的下面的 lib 下面。

                      修改环境变量 class_path :添加 %ANT_HOME%\lib\junit-4.9b2.jar;

 

  测试安装 ant 是否成功,在 cmd 下面输入命令: ant 出现:

      build failed   等字样,就说明成功了。因为缺少build.xml

  就可以了。

                       

ANT 基础使用

2.1HelloWorld

2.1 建立一个 src 文件夹,放一个简单的 HelloWorld.java

package test;

public class HelloWorld

{        public static void main(String[] a){

           System.out.println(" 你好的啊 ");

}

}

 

2.2 src 目录同级写一个 build.xml:

<?xml version="1.0" encoding="UTF-8"?>

<!-- 编译的名字 -->

<project name="HelloWorld" default="run" basedir=".">

<!-- 下面定义了三个变量,后面将引用。 -->

<property name="src" value="src"/>

<property name="dest" value="classes"/>

<property name="hello_jar" value="hello1.jar"/>

<!-- init 步骤 : 创建一个 dest 目录 -->

<target name="init">

        <mkdir dir="${dest}"/>

</target>

 

<!-- 编译 -->

<target name="compile" depends="init">

        <javac srcdir="${src}" destdir="${dest}"/>

</target>

 

<!-- 生成 jar -->

<target name="build" depends="compile">

        <jar jarfile="${hello_jar}" basedir="${dest}"/>

</target>

 

<!-- 运行 -->

<target name="run" depends="build">

        <java classname="test.HelloWorld" classpath="${hello_jar}"/>

</target>

 

<!-- 清空 -->

<target name="clean">

        <delete dir="${dest}"/>

        <delete file="${hello_jar}"/>

</target>

 

<!-- 重新编译执行 -->

<target name="rerun" depends="clean,run">

        <ant target="clean"/>

        <ant target="run"/>

</target>

</project>

 

 

注意:下面的 name 里面的值都可以自定义!!

            target 就是表示 ant 可以执行的操作名称!!

            在第一行配置文件里面, default="run" 表示默认执行就是 target=run 的操作。即,如果只输入 ant ,实际效果等于 ant run

 

引用 properties 属性

  可以在 properties 文件中定义属性内容,然后用一个公用的 xml ,去调用这些属性文件的值就可以了,只需要改写属性内容的值。

       定义一个属性文件: all.properties ,内容如下,每个 src 文件夹里面都含有 build.xml 以及 java 所在的源码文件夹

src1=D:\\ant test\\2build_some_srcs\\src1

src2=D:\\ant test\\2build_some_srcs\\src2

src3=D:\\ant test\\2build_some_srcs\\src3

 

然后在同级定义一个 build.xml

<?xml version="1.0" encoding="UTF-8"?>

<project name="main" default="build" basedir=".">

<property file="all.properties"/>

<property name="bin" value="${basedir}\bin"/>

<target name="init">

        <mkdir dir="${bin}"/>

</target>

 

<!-- build 的时候,把各个子文件夹里面的 jar 都拷贝到 bin 里面去! -->

<target name="build" depends="init,subuild">

        <copy todir="${bin}">

                <fileset dir="${src1}">

<!-- 这里可以添加多种文件的类型。如果几个不同的 src 目录里面有同名的文件,后面的就覆盖了 -->

                        <include name="*.jar"/>

                        <include name="*.xml"/>

                </fileset>

                <fileset dir="${src2}">

                        <include name="*.jar"/> 

                </fileset>

                <fileset dir="${src3}">

                        <include name="*.jar"/>

                </fileset>

        </copy>

</target>

 

<target name="subuild" >

         <ant dir="${src1}" target="build"/>

          <ant dir="${src2}" target="build"/>

           <ant dir="${src3}" target="build"/>

</target>

 

<!-- 下面通过递归调用了各个 src 里面的 ant run 命令! -->

<target name="run" >

         <ant dir="${src1}" target="run"/>

          <ant dir="${src2}" target="run"/>

           <ant dir="${src3}" target="run"/>

</target>

 

<target name="clean">

        <ant dir="${src1}" target="clean"/>

          <ant dir="${src2}" target="clean"/>

           <ant dir="${src3}" target="clean"/>

</target>

 

<target name="rebuild" depends="build,clean">

        <ant target="clean"/>

        <ant target="build"/>

</target>

</project>

 

include 配置文件

     可以把一些公用的配置放到一个 xml 中,其他分的配置文件在引用这个文件

定义一个 include.xml:

<!-- 定义了一些属性,以及还有一个动作叫做 test ,实际是调用的 run -->

<?xml version="1.0" encoding="UTF-8"?>

<property name="src" value="src"/>

<property name="dest" value="classes"/>

<target name="test">

        <ant target="run"/>

</target>

 

然后在要引用上面配置文件的主文件中:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE project[

<!ENTITY share-variable SYSTEM "file:../include.xml">

]>

<project name="HelloWorld" default="run" basedir=".">

&share-variable;                 <!-- 这里的东西不要忘记了! -->

<property name="hello_jar" value="hello1.jar"/>

<target name="init">

        <mkdir dir="${dest}"/>

</target>

<target name="compile" depends="init">

        <javac srcdir="${src}" destdir="${dest}"/>

</target>

 

<target name="build" depends="compile">

         <jar jarfile="${hello_jar}" basedir="${dest}"/>

</target>

 

<target name="run" depends="build">

        <java classname="test.HelloWorld1" classpath="${hello_jar}"/>

</target>

</project>

 

然后可以使用 ant test 进行执行了(调用的 run 方法)

 

生成 jar

<?xml version="1.0" encoding="GBK"?>

<project name="HelloWorld" default="run" basedir=".">

<property file="all.properties"/> <!-- 引用一个属性文件 -->

<target name="clean">

        <delete dir="${build.jar}"/>

</target>

 

<!-- 将源文件编译之后的 class 文件放到 classes.dir 下面 -->

<target name="compile">

        <mkdir dir="${classes.dir}"/>

        <javac srcdir="${src}" destdir="${classes.dir}"/>

</target>

 

<!-- class jar 包,并制定执行的主文件是 main-class, 然后把 jar

   放到 jar.dir 里面 , 命名为 myfirst.jar-->

<target name="jar" depends="compile">

        <mkdir dir="${jar.dir}"/>

        <jar destfile="${jar.dir}/myfirst.jar"

                basedir="${classes.dir}">

                <manifest>

                        <attribute name="Main-Class" value="${main-class}"/>

                </manifest>

        </jar>

</target>

 

<!-- 执行生成的 jar 包,注意下面的 fork 属性为 true 表示引用非 java_Home 指定

        位置的 jar -->

<target name="run" depends="jar">

        <java jar="${jar.dir}/myfirst.jar" fork="true"/> 

</target>

 

<target name="clean-build" depends="clean,jar"/>

 

<target name="main" depends="clean,run"/>

</project>

 

调用其他 jar

经常需要在代码中引用其他的 jar 包,例如常用的 log4j 等。

<?xml version="1.0" encoding="GBK"?>

<project name="HelloWorld" default="run" basedir=".">

<property file="all.properties"/>

<target name="clean">

        <delete dir="${build.jar}"/>

</target>

 

<!-- 表示引入的路径里面的全部的 jar -->

<path id="classpath">

        <fileset dir="${lib.dir}" includes="**/*.jar"/>

</path>

 

<!-- 将源文件编译之后的 class 文件放到 classes.dir 下面

   同时引用了 classpath 里面包含的 jar 文件 -->

<target name="compile">

        <mkdir dir="${classes.dir}"/>

        <javac srcdir="${src}" destdir="${classes.dir}"

                classpathref="classpath"/>

</target>

 

<target name="jar" depends="compile">

        <mkdir dir="${jar.dir}"/>

        <jar destfile="${jar.dir}/myfirst.jar"

                basedir="${classes.dir}">

                <manifest>

                        <attribute name="Main-Class" value="${main-class}"/>

                </manifest>

        </jar>

</target>

 

<!-- 执行生成的 jar 包,注意下面的 fork 属性为 true 表示引用非 java_Home 指定

        位置的 jar -->

<target name="run" depends="jar">

        <java classname="${main-class}" fork="true"> 

                <classpath>

                        <path refid="classpath"/>

                        <path location="${jar.dir}/myfirst.jar"/>

                </classpath>

        </java>

</target>

 

<target name="clean-build" depends="clean,jar"/>

 

<target name="main" depends="clean,run"/>

<!--

<path id="classpath">

        <fileset dir="lib" includes="**/*.jar"/>       

</path>

 

<target name="run" depends="jar">

        <java fork="true" classname="">

                <classpath>

                        <path refid="classpath"/>

                        <path location="${jar.dir}/apache-ant.jar" />

                </classpath>

         </java>

</target>

-->

</project>

 

连接数据库

可以通过 ant 直接连接数据库,进行数据库的操作。

 

<!-- 直接使用命令 ant testsql 就可以对数据库进行操作了! -->

<!-- 将访问数据库的驱动放到 ant 目录下面,为什么不像上面的 F 里面说的配置 classpath 呢?

   我认为是因为那个 F 是在代码里面调用了这个 jar 包,而这里是直接在 ant 里面调用的 sql 驱动,直接就连数据库了!! . -->

<target name="testsql">

         <sql driver="com.mysql.jdbc.Driver"

                url="jdbc:mysql://localhost:3306/lsqgbk2"

                userid="root"

                password="admin">

        insert into china_area values(11,22,33)

        </sql>

</target>

 

更多的 ant task

或者叫做 core task

<!-- 拷贝目录下面的指定文件类型,排除另外的一些类型 -->

<target name="copy2" depends="clean,init">

<copydir src="${src2}" dest="${dest}" includes="*.doc" excludes="*.pdf"/>

</target>

分享到:
评论

相关推荐

    Maven学习心得.doc

    《Maven学习心得》 Maven,作为Apache推出的一款强大的构建和工程管理工具,与ANT相比,具有显著的优势。本文将深入探讨Maven的核心特点、优势以及存在的问题,以供学习参考。 首先,Maven的一大亮点在于其对第三...

    J2EE JNDI配置原理详解 JBOSS安装配置 Maven入门 Ant使用入门

    1.1 Apache Tomcat各版本 1.2 Apache Tomcat Versions ...1.20 Jboss下的第一个EJB程序 1.21 JNDI 1.22 JNDI配置原理详解 1.23 JSF+Seam框架学习心得 1.24 java jdbc驱动的四种类型 1.25 resource-ref元素

    J2EE实训教程

    - **编写Servlet代码:** 实训中将动手编写第一个Servlet,了解Servlet的基本编写方式。 - **使用Ant部署Web项目到Tomcat:** Ant是一个Java编写的构建工具,实训中将学习如何使用Ant自动部署Web项目到Tomcat...

    Eclipse插件开发(英文版) Eclipse plug-ins

    《Eclipse插件开发》第三版是一本经典的教程书籍,为开发者提供了深入学习Eclipse插件开发的技术指南。 #### 二、目标读者群体 本书主要面向以下几类人群: - **专业开发者**:已经从事Eclipse插件开发的工程师或...

    Vuejs相关的资源集合AwesomeVuejs

    1. **官方文档与教程**:Vue.js的官方文档详细且易懂,是学习的基础。此外,还有许多在线教程和课程,如Vue Mastery、Egghead.io等,适合不同水平的开发者。 2. **库和插件**:Vue生态系统中有很多优秀的第三方库和...

    技术交流社交小程序源码.zip

    8. **组件库**:为了提高开发效率,开发者可能会引入第三方组件库,如Ant Design Vue for WX。 9. **国际化**:对于多语言支持,可能会有i18n配置和翻译文件。 10. **测试**:可能包含单元测试或集成测试用例,...

    Hibernate开发指南(原版书)

    - **构建Hibernate基础代码**:了解如何通过Hibernate工具自动生成与数据库表对应的Java实体类,这是实现ORM(对象关系映射)的第一步。通过这一过程,开发者可以快速建立数据库与Java对象之间的联系,简化数据访问...

    ReactFirst:第一个React项目

    安装依赖 npm i npm i roadhog -g 启动 json-server npm run server ...项目是学习了一韬的React实验室的[React全家桶入门],在此学到了很多关于react的的基础知识,引入了Ant Design,同时还学怎么用json server

    spring-boot使用指南

    #### 第一步骤 开始使用 Spring Boot 前,需要了解其基本概念和特点,为后续开发打下基础。Spring Boot 的主要优势在于其“开箱即用”的特性,它能够自动配置许多常见的设置,并且减少了大量样板代码的需求。 #### ...

    Install4j制作exe

    这通常是将Java项目打包成可执行文件的第一步,因为Install4j通常需要一个可运行的jar作为输入。 综合以上信息,这篇博客和提供的文档组合,应该为读者提供了一个从编写源代码到使用Install4j生成.exe文件的完整...

    夏昕-Hibernate+开发指南.pdf

    - **第一段代码**:通过示例演示Hibernate的基本使用。 - **Hibernate基础语义**:包括Configuration、SessionFactory、Session等概念及其使用方法。 - **Hibernate高级特性**:涵盖了XDoclet与Hibernate映射、...

    [隐匿撕源码] 从ReentrantLock剖析AQS

    鼠年新的工作日开始了,新的一年新的工作学习,第一个工作日给自己定一些要求吧。 想写一个系列【隐匿撕源码】 剖析各种经典框架,工具,JDK的源码提升自己,同时给大家分享一些心得。这篇文章就作为开端,干就完事...

    Fermentation.app:Android和ios应用程序可跟踪发酵,掌握您的食谱并与世界分享

    3. 社区分享:Fermentation.app构建了一个互动社区,用户可以分享自己的发酵成果,交流心得,提问和解答问题,促进了全球发酵爱好者的交流与学习。 二、JavaScript技术实现 作为主要开发语言,JavaScript在...

    OSGI实战

    - **背景**: 作者自工作以来一直关注插件体系结构,从早期接触ant、maven等工具开始,逐渐认识到模块化的重要性。 - **目标**: 通过本书籍,作者旨在分享其在OSGI领域的实践经验,特别是使用Equinox框架的心得体会。...

Global site tag (gtag.js) - Google Analytics