热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Ant工具学习

今天在使用eclipse集成了的Ant工具build时,发生错误:BUILDFAILEDworkspacexxxbuild.xml:49:Cannot

今天在使用eclipse集成了的Ant工具build时,发生错误:

BUILD FAILED
/workspace/xxx/build.xml:49: Cannot find /workspace/xxx/C:/android-sdk-windows/tools/ant/build.xml imported from /workspace/xxx/build.xml

因为以前没怎么用过这,也不知道到底错在哪里了;查看了下工程的build.xml文件,感觉没有错阿,自己sdk/tools/ant下也存在build.xml文件阿;

后来才在自己的工程下的project.properties文件下发现了错误所在;原来是我sdk的路径写错了。。。


既然开始使用ant了,我就想着先了解学习学习下这个工具吧!


1. 什么是Ant

Ant是一个基于Java的生成工具;在软件开发中用来将源代码和其他输入文件生成可执行文件;实现项目的自动构建和部署,确保每次的生成版本一致。


2. Ant的安装

一般Eclipse,MyEclipse等都已经给我们预先集成好了Ant,不需要我们生动安装;

当然你也可以选择自己安装;一般就是自己去下载个Apache Ant, 解压,然后添加系统环境变量:ANT_HOME,该变量指向Ant解压后的根目录;

为了能让系统自动找到Ant 需要在系统环境变量path中添加Antbin目录;

完成后在命令行输入Ant就可以用啦~


3. Ant的关键元素

Ant的构建是基于XML编写的,默认名称为build.xml;

构建文件包括元素,以及其中嵌套的 元素。

1)project元素

project元素是Ant构建文件的根元素,每个构建文件至少包含一个project元素;在每个project元素下可包含多个target元素

接下来看看project元素的各个属性:

name:用于指定project的名称

default:用于指定执行project默认执行时所执行的target名称

basedir:用于指定基路经的位置;该属性可以被basedir property覆盖。当覆盖时,该属性被忽略。如果属性和basedir property都没有设定,就使用buildfile文件的父目录。

2)target元素

它为Ant的基本执行单元,可以包含一个或多个具体任务;多个target可以存在相互依赖关系

接下来看看target元素的各个属性:

name:指定target元素的名称,这个属性在一个project元素中是唯一的

depends:用于描述target之间的依赖关系;若与多个target存在依赖关系时以“,”间隔;Ant会依据depends中target出现的先后顺序进行执行,被依赖的target先执行

if:用于验证指定的属性是否存在,若不存在,所在的target将不会被执行

unless:与if功能恰好相反,也用于验证指定的属性是否存在,若不存在,则target会被执行

description:对target功能的简单描述和说明

3)property元素

该元素可看作参量或者参数的定义,project的属性可以通过property元素来设定,也可在Ant之外设定。若要在外部引入某文件,例如build.properties文件,可以通过如下内容将其引入:

property元素可用作task的属性值。在task中是通过将属性名放在“${”和“}”之间,并放在task属性值的位置来实现的。

Ant提供了一些内置的属性,它能得到的系统属性的列表与Java文档中System.getPropertis()方法得到的属性一致,这些系统属性可参考sun网站的说明。

同时,Ant还提供了一些它自己的内置属性,如下:

basedir:project基目录的绝对路径,该属性在讲解project元素时有详细说明,不再赘述;

ant.file:buildfile的绝对路径,如上面的各例子中,ant.file的值为E:"build.xml;

ant.version:Ant的版本,在本文中,值为1.7.0;

ant.project.name:当前指定的project的名字,即前文说到的projectname属性的值;

       ant.java.version
:Ant
检测到的JDK
的版本


4. Java相关


1)Javac

编译java原代码

例子

1.

destdir="{build}"

classpath="xyz.jar"

debug="on"

/>

编译{src}目录及其子目录下的所有。Java文件,。Class文件将放在{build}指定的目录下,classpath表示需要用到的类文件或者目录,debug设置为on表示输出debug信息

2)destdir="{build}"

includes="mypackage/p1/**,mypackage/p2/**"

excludes="mypackage/p1/testpackage/**"

classpath="xyz.jar"

debug="on"

/>

编译{src}和{src2}目录及其子目录下的所有。Java文件,但是package/p1/**,mypackage/p2/**将被编译,而mypackage/p1/testpackage/**将不会被编译。Class文件将放在{build}指定的目录下,classpath表示需要用到的类文件或者目录,debug设置为on表示输出debug信息


3)

 

destdir="{src}"

classpath="{classpath}"

debug="on"

/>

路径是在property中定义的

4)打包相关

jar

将一组文件打包

例子:

1.

将{build}/classes下面的所有文件打包到{dist}/lib/app.jar中

2.

basedir="{build}/classes"

includes="mypackage/test/**"

excludes="**/Test.class"

/>

将{build}/classes下面的所有文件打包到{dist}/lib/app.jar中,但是包括mypackage/test/所有文件不包括所有的Test.class

3.

basedir="{build}/classes"

includes="mypackage/test/**"

excludes="**/Test.class"

manifest="my.mf"

/>

manifest属性指定自己的META-INF/MANIFEST.MF文件,而不是由系统生成


##

我eclipse运行提示错误:

Dx 1 error; aborting
Conversion to Dalvik format failed with error 1

UNEXPECTED TOP-LEVEL EXCEPTION:
java.lang.RuntimeException: Exception parsing classes

看提示详情是某文件的路径不匹配。。但是我有好多jar文件,根本不知道那个class在哪个里面。。。。

然后捣腾了一下午还没有解决。。。好忧桑



推荐阅读
  • 开发笔记:spring boot项目打成war包部署到服务器的步骤与注意事项
    本文介绍了将spring boot项目打成war包并部署到服务器的步骤与注意事项。通过本文的学习,读者可以了解到如何将spring boot项目打包成war包,并成功地部署到服务器上。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • 本文讨论了如何使用Web.Config进行自定义配置节的配置转换。作者提到,他将msbuild设置为详细模式,但转换却忽略了带有替换转换的自定义部分的存在。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • Android日历提醒软件开源项目分享及使用教程
    本文介绍了一款名为Android日历提醒软件的开源项目,作者分享了该项目的代码和使用教程,并提供了GitHub项目地址。文章详细介绍了该软件的主界面风格、日程信息的分类查看功能,以及添加日程提醒和查看详情的界面。同时,作者还提醒了读者在使用过程中可能遇到的Android6.0权限问题,并提供了解决方法。 ... [详细]
  • 本文介绍了在sqoop1.4.*版本中,如何实现自定义分隔符的方法及步骤。通过修改sqoop生成的java文件,并重新编译,可以满足实际开发中对分隔符的需求。具体步骤包括修改java文件中的一行代码,重新编译所需的hadoop包等。详细步骤和编译方法在本文中都有详细说明。 ... [详细]
  • Java如何导入和导出Excel文件的方法和步骤详解
    本文详细介绍了在SpringBoot中使用Java导入和导出Excel文件的方法和步骤,包括添加操作Excel的依赖、自定义注解等。文章还提供了示例代码,并将代码上传至GitHub供访问。 ... [详细]
  • Spring框架《一》简介
    Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
author-avatar
张骞2502860155
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有