Java:使用Ant可以打包出可以通过build.xml直接运行的jar包,但为啥引入了第三方的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java:使用Ant可以打包出可以通过build.xml直接运行的jar包,但为啥引入了第三方的相关的知识,希望对你有一定的参考价值。

Java:使用Ant可以打包出可以通过build.xml直接运行的jar包,但为什么引入了第三方的jar包就不行了呢

参考技术A LZ 你需要把你引用的第三方包依赖包放在ANT安装目录的lib目录下,要不是弄不进来的 参考技术B 第三方包没特殊设,是不会打到一起去的本回答被提问者采纳 参考技术C 好难的样子

Ant安装与配置&build.xml文件说明

Apache Ant介绍

Apache Ant,是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。

优点:

  • 使用java开发,并用xml存储build信息,因此是跨平台的。
  • 程序员可以自己扩展Ant。程序员可以自己写java程序来扩展Ant,创建自己的tasks。

特点:

  •  Ant使用XML来存储build信息,在xml文件里有很多task的定义,默认使用的文件是build.xml
  • Ant可以通过<exec>标签来实现调用shell
  •  

 

一、Windows下安装Ant

1、在ant的官网下载zip版本的压缩包

官网: http://ant.apache.org/bindownload.cgi

下载apache-ant-1.10.10-bin.zip,解压到本地盘

 

2、环境变量配置

1)添加一个新的系统变量ANT_HOME,指定为ant的安装位置D:\\apache-ant-1.10.10

 

2)在CLASSPATH里指定ant的lib目录

 

3)在PATH里指定ant的bin目录

 

4)检查Ant的配置

执行命令:

ant -version

 

5)编写build.xml文件

功能:将文件D:\\jacoco\\test.txt拷贝到D:\\jacoco\\test目录下,如果存在同名文件,覆盖;basedir为.表示的是当前目录

 

build.xml文件,放在D:\\jacoco目录下,在D:\\jacoco目录下执行ant命令(build.xml文件自动被识别)

<?xml version="1.0" encoding="GBK"?>
<project name="测试脚本" default="copyfile" basedir=".">
	<target name="copyfile">
		<copy file="D:\\jacoco\\test.txt" todir="D:\\jacoco\\test" overwrite="true"/>
	</target>
</project>

 执行结果:文件拷贝到对应目录

 

二、CentOS下安装Ant

预留位置

 

三、build.xml文件说明

创建FirstBuild.xml文件

 

1、<project>元素

name属性:标识工程名

basedir:指示根目录

default:标识默认执行的target,如果运行ant时不指定属性,Ant将执行这个target(target的name为copyfile的任务);

<project name="MyFirstAntProject" basedir="." default="copyfile">

 

2、<property>元素

定义了两个全局属性,分别是dir.name和file.name

这些属性是可选的,但使用属性会更方便,尤其是便于维护,一种更有效的方式是将这些属性放到一个专门文件里,从而使这个xml文件更加灵活,易于重用。

<property name="dir.name" value="$basedir/mydir"/>
<property name="file.name" value="file1.txt"/>

 

3、要执行的<targets>元素

定义3个target任务,在copyfile任务运行前,先执行makedirectory任务;--denpends属性配置前置target任务

<target name="makedirectory" description="Create directory mydir">
    <mkdir dir="$dir.name"/>
</target>
<target name="copyfile" depends="makedirectory" description="Copy files">
    <copy file="$file.name" todir="$dir.name"/>
</target>
<target name="clean" description="Clean up task">
    <delete dir="$dir.name"/>
</target>

 

4、第一次运行FirstBuild.xml文件:ant -buildfile <filename> <target-name>

运行命令格式:没有使用-buildfile参数,那么Ant将默认使用build.xml,如果没有build.xml,那么Ant将报错;

ant -buildfile <filename> <target-name>

 

FirstBuild.xml文件内容:先创建目录,再将文件拷贝到创建的目录中

<?xml version="1.0" encoding="UTF-8" ?>
<project name="MyFirstAntProject" basedir="." default="copyfile">
    <property name="dir.name" value="$basedir/mydir"/>
    <property name="file.name" value="file1.txt"/>

    <target name="makedirectory" description="Create directory mydir">
        <mkdir dir="$dir.name"/>
    </target>
    <target name="copyfile" depends="makedirectory" description="Copy files">
        <copy file="$file.name" todir="$dir.name"/>
    </target>
    <target name="clean" description="Clean up task">
        <delete dir="$dir.name"/>
    </target>
</project>

运行命令前文件目录截图:

 

运行命令:

ant -buildfile FirstBuild.xml

 

运行命令后文件目录截图:自动创建了mydir目录,再将file1.txt拷贝到mydir目录中

 

在文件中定义的property可以被Ant的参数所覆盖,如下面使用yourdir取代mydir:

ant运行的命令:

ant -buildfile FirstBuild.xml -Ddir.name=yourdir

 

运行后结果:自动创建了yourdir目录,再将file1.txt拷贝到yourdir目录中

 

一般在build.xml中都会有clean这个target,其作用有些像卸载软件程序:

运行命令:删除mydir目录

ant -buildfile FirstBuild.xml clean

运行结果:mydir目录被删除了 

 

运行命令:删除yourdir目录

ant -buildfile FirstBuild.xml clean -Ddir.name=yourdir

 

 

 

四、通过ant方式使用Jacoco远程统计代码覆盖率

查看文章:https://blog.csdn.net/nikeylee/article/details/117354875

 

以上是关于Java:使用Ant可以打包出可以通过build.xml直接运行的jar包,但为啥引入了第三方的的主要内容,如果未能解决你的问题,请参考以下文章

java如何打包

ant的打包工具

用java或C#调用命令行对android工程进行编译、打包和签名,急求!!

用Ant给Unity3D导出Eclipse工程打包APK

怎么用ant 打jar包和war文件

Ant默认配置文件不是build.xml该如何编写命令进行编译打包