未读代码 未读代码
首页
  • Java 18 新功能介绍
  • Java 17 新功能介绍
  • Java 16 新功能介绍
  • Java 15 新功能介绍
  • Java 14 新功能介绍
  • Java 8 新特性

    • Java 8 Lambda 表达式
    • Java 8 Stream 流式操作
    • Java 8 时间处理介绍
    • Java 8 Optional 介绍
  • Java 开发工具
Java 源码分析
Spring Boot 系列
  • Arthas 问题定位
  • JMH 基准测试
GitHub (opens new window)
首页
  • Java 18 新功能介绍
  • Java 17 新功能介绍
  • Java 16 新功能介绍
  • Java 15 新功能介绍
  • Java 14 新功能介绍
  • Java 8 新特性

    • Java 8 Lambda 表达式
    • Java 8 Stream 流式操作
    • Java 8 时间处理介绍
    • Java 8 Optional 介绍
  • Java 开发工具
Java 源码分析
Spring Boot 系列
  • Arthas 问题定位
  • JMH 基准测试
GitHub (opens new window)
  • Java 开发

  • Java 开发工具

    • Apache HttpClient 5 使用详细教程
    • Jackson 解析 JSON 详细教程
    • Guava - 拯救垃圾代码,写出优雅高效,效率提升N倍
    • 抛弃Eclipse,投入IDEA 的独孤求败江湖
    • Java 反编译工具的使用与对比分析
    • 如何使用 Lombok 进行优雅的编码
    • 使用MyBatis Generator自动生成Model、Dao、Mapper相关代码
    • 使用Apache Ant 进行Java web项目打包并部署至TOMCAT
      • Linux配置Tomcat的单机多实例
    • 消息中间件

    • Java 开发
    • Java 开发工具
    程序猿阿朗
    2017-11-01

    使用Apache Ant 进行Java web项目打包并部署至TOMCAT

    # Apache Ant介绍

    是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。由Apache软件基金会所提供。 优点:Ant是Apache软件基金会JAKARTA目录中的一个子项目,它有以下的优点。跨平台性。Ant是纯Java语言编写的,所以具有很好的跨平台性。操作简单。Ant是由一个内置任务和可选任务组成的。Ant运行时需要一个XML文件(构建文件)。 Ant通过调用target树,就可以执行各种task。每个task实现了特定接口对象。由于Ant构建文件 是XML格式的文件,所以很容易维护和书写,而且结构很清晰。由于Ant的跨平台性和操作简单的特点,它很容易集成到一些开发环 境中去。

    那么我们如何使用呢?这里用一个例子进行演示如何用ANT来编译一个Java web项目。

    # 下载Apache Ant

    直接到官方网站 (opens new window)下载, 或者直接:

    Windows版本 (opens new window)

    Linux版本 (opens new window)

    # 安装Apache Ant

    直接解压下载的压缩包,可以看到Ant的目录结构。

    Bin目录:Ant命令
    Lib目录:Ant所需要的jar包
    manual:用户参考文档

    # 配置Apache Ant

    1:首先需要安装了JDK,并且配置环境变量。
    2:配置ANT_HOME/bin目录即可。(自行配置)
    3:测试是否配置成功。 运行命令ant -version查看版本号,配置成功可以看到:

    C:\>ant -version
    Apache Ant(TM) version 1.9.9 compiled on February 2 2017
    C:\>
    
    1
    2
    3

    # Apache Ant编译准备

    这里用一个Java web项目为例。 看下JavaWeb项目整体目录结构。

    ├─.settings
    ├─src
    │  └─net
    │      └─codingme
    │          ├─controller
    │          ├─dao
    │          ├─mapping
    │          ├─po
    │          ├─service
    │          │  └─impl
    │          └─util
    └─WebContent
        ├─attached
        ├─css
        ├─fonts
        ├─js
        │  └─google-code-prettify
        ├─META-INF
        └─WEB-INF
            ├─lib
            └─view
                └─post
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22

    # 编写用于编译的build.xml

    enter image description here

    build.xml具体内容。 这里已经把注释已经写的非常清楚,具体内容如下。

    <?xml version="1.0" encoding="UTF-8"?>
    <project name="BlogV2"  default="run" basedir=".">
    	<!-- java源代码目录 -->
    	<property name="src.dir" location="src" />
    	<!-- 构建存放目录 -->
    	<property name="build.dir" location="build" />
    	<!-- class文件存放目录 -->
    	<property name="build.classes" location="${build.dir}/classes" />
    	<!-- 打包目录 -->
    	<property name="build.war" location="${build.dir}/war" />
    
    	<!-- tomcat根目录 -->
    	<property name="tomcat.home" location="D:\CodeProgram\tomcat7" />
    	<!-- tomcat项目存放-->
    	<property name="tomcat.WebContent" location="${tomcat.home}/webContent" />
    
    	<!-- war包名字 -->
    	<property name="war.name" value="BlogV2" />
    	<!-- web 根目录 -->
    	<property name="web.root" location="WebContent" />
    	<!-- web jar包所在 -->
    	<property name="web.lib" location="WebContent/WEB-INF/lib" />
    
    	<!-- 加载环境变量 -->
    	<property environment="env" />
    
    	<!-- 定义编译时的jar -->
    	<path id="compile.path">
    		<fileset dir="${web.lib}" includes="*.jar">
    		</fileset>
    		<fileset dir="${tomcat.home}/lib">
    			<include name="**/*.jar" />
    		</fileset>
    	</path>
    
    	<!-- 初始化需要的文件夹 -->
    	<target name="init" description="初始化">
    		<mkdir dir="${build.dir}" />
    		<mkdir dir="${build.classes}" />
    		<mkdir dir="${build.war}" />
    		<echo>初始化工作结束!</echo>
    	</target>
    	
    	<!-- 编译java文件为class -->
    	<target name="compile" depends="init" description="编译">
    		<javac destdir="build/classes" srcdir="src" includeantruntime="false" fork="true">
    			<compilerarg line="-encoding UTF-8 " />
    			<classpath refid="compile.path" />
    		</javac>
    		<echo>初始化工作结束!</echo>
    		<echo message="编译完成!" />
    	</target>
    	<!-- 把项目打包成war包存放在指定位置 -->
    	<target name="war" depends="compile" description="打包war文件">
    		<war destfile="${build.war}/${war.name}.war">
    			<fileset dir="${web.root}" includes="**/*.*" />
    			<lib dir="${web.lib}" />
    			<classes dir="${build.classes}" />
    		</war>
    		<echo>打包完成!</echo>
    	</target>
    	
    	<!-- 拷贝war包到tomcat发布目录 -->
    	<target name="deploy" depends="war" description="发布">
    		<copy todir="${tomcat.WebContent}">
    			<fileset dir="${build.war}" includes="*.war" />
    		</copy>
    		<echo>已发布到Tomcat!</echo>
    	</target>
    	
    	<target name="clean" description="清理">
    		<delete dir="${build.dir}" />
    		<delete dir="${tomcat.WebContent}/${web.name}"/>
    		<delete file="${tomcat.WebContent}/${web.name}.war"/>
    		<echo>清理完成!</echo>
    	</target>
    	
    </project>
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78

    # Build.xml文件的一些解释

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

    build.xml中的第一句话,没有实际的意义。

    <project name="BlogV2" default="run" basedir=".">  
    </project>  
    
    1
    2

    包含Ant的所有内容,name即名字,basedir即工作根目录,default即默认操作。

    <property name="src.dir" location="src" />    
    
    1

    类似于声明变量:即src.dir代表localtion里配置的目录。

    <target name="war" depends="compile" description="打包war文件">
    	<war destfile="${build.war}/${war.name}.war">
    		<fileset dir="${web.root}" includes="**/*.*" />
    		<lib dir="${web.lib}" />
    		<classes dir="${build.classes}" />
    	</war>
    	<echo>打包完成!</echo>
    </target>
    
    1
    2
    3
    4
    5
    6
    7
    8

    Ant每一件要做的事情我们都需要写 成target的形式,并给出一个名字name,depends="compile"表示在做这个target之前需要先执行compile,description即描述。 中间则是打包成war包的格式需要。

    参考上面的build.xml文件,我相信可以解决很多简单的编译问题。
    但是Ant的功能远远不止于此,其他参数可以参考官方文档 (opens new window)

    # Apache Ant编译开始

    在做了上面的准备工作之后,我们离成功只差一步之遥了。 命令切换到build.xml文件所在目录。 查看当前目录里build.xml里编写的功能 用命令 ant -p(在执行ant命令时默认会使用名字为build.xml的文件)

    C:\Users\83981\Desktop\Apache Ant\BlogV2>ant -p
    Buildfile: C:\Users\83981\Desktop\Apache Ant\BlogV2\build.xml
    Main targets:
     clean    清理
     compile  编译
     deploy   发布
     init     初始化
     war      打包war文件
    Default target: run
    	
    C:\Users\83981\Desktop\Apache Ant\BlogV2>
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

    Ant的常用操作: ant target_name 执行相应的操作。
    ant clean 清理文件夹。
    ant deploy 进行发布。

    C:\Users\83981\Desktop\Apache Ant\BlogV2>ant clean
    Buildfile: C:\Users\83981\Desktop\Apache Ant\BlogV2\build.xml
    
    clean:
         [echo] 清理完成!
    
    BUILD SUCCESSFUL
    Total time: 0 seconds
    
    C:\Users\83981\Desktop\Apache Ant\BlogV2>ant deploy
    Buildfile: C:\Users\83981\Desktop\Apache Ant\BlogV2\build.xml
    
    init:
        [mkdir] Created dir: C:\Users\83981\Desktop\Apache Ant\BlogV2\build
        [mkdir] Created dir: C:\Users\83981\Desktop\Apache Ant\BlogV2\build\classes
        [mkdir] Created dir: C:\Users\83981\Desktop\Apache Ant\BlogV2\build\war
         [echo] 初始化工作结束!
    
    compile:
        [javac] Compiling 30 source files to C:\Users\83981\Desktop\Apache Ant\BlogV2\build\classes
         [echo] 初始化工作结束!
         [echo] 编译完成!
    
    war:
          [war] Building war: C:\Users\83981\Desktop\Apache Ant\BlogV2\build\war\BlogV2.war
         [echo] 打包完成!
    
    deploy:
         [copy] Copying 1 file to D:\CodeProgram\tomcat7\webContent
         [echo] 已发布到Tomcat!
    
    BUILD SUCCESSFUL
    Total time: 6 seconds
    
    C:\Users\83981\Desktop\Apache Ant\BlogV2>
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35

    项目已经编译并打包成war格式拷贝至指定的tomcat目录 操作结束,关于Ant的其他命令可以执行ant -help进行查看。

    订阅

    文章持续更新,订阅可以关注「 程序猿阿朗 」公众号或者未读代码博客。

    文章作者: 程序猿阿朗
    文章链接:https://www.wdbyte.com/2017/11/develop/tool-apache-ant/
    版权声明:本网站当前文章采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 未读代码!
    #Tomcat#Ant#开发工具
    上次更新: 2022/12/05, 08:18:32
    使用MyBatis Generator自动生成Model、Dao、Mapper相关代码
    Linux配置Tomcat的单机多实例

    ← 使用MyBatis Generator自动生成Model、Dao、Mapper相关代码 Linux配置Tomcat的单机多实例→

    最近更新
    01
    如何搭建一个自己的音乐服务器
    12-04
    02
    JUnit 5 单元测试教程
    11-17
    03
    使用 StringUtils.split 的坑
    11-02
    更多文章>

    提示:评论前请刷新页面,否则评论的可能不是当前文章。

    Theme by Vdoing | Copyright © 2018-2022 程序猿阿朗 | MIT License | 皖ICP备20000567号-1
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式