Ant使用指南

ant的名称是another neat tool的首字母的缩写。最初的创始人James Duncan Davidson。

获取ant,http://ant.apache.org/。-bin.zip包。下载下来后配置下环境变量,ANT_HOME和path就可以了。配置环境变量的时候,注意最后一个不能有“;”

使用ant,可以编写单个生成文件,这个生成文件在任何Java平台上都一致的操作(因为ant本身也是使用Java语言来实现的),这就是Ant最大的优势。

ant的属性
1,ant中的属性一经设置,就不可更改。(除了使用java的自定义ant文件中setProperty修改)
2,利用这个特性,可以使用 -Dmetal=beryllium,注意-D没有空格。
3,ant中有许多预定义的属性。首先,Java环境设置用于运行Ant的所有系统属性,均可以作为Ant属性使用。比如${user.home}。除了这些,Ant还定义了它自己的一小组属性,包括${basedir}等。


属性经常用于引用文件系统上的文件或目录,但是对于使用不同的路径分隔符(例如,/与\)的平台来说,这样可能在跨越不同平台时导致问题。Ant的location属性专门设计用于以平台无关的方式包含文件系统路径。可以像下面这样使用location来代替value:
<property name="database-file" location="archive/databases/${metal}.db" />
用于location属性的路径分割字符将被转化为当前平台的正确格式;而且由于文件名是相对的,它被认为是相对于项目的基目录。同样可以写成下面这样:
<property name="database-file" location="archive\databases\${metal}.db" />
这个标签的两个版本都会在不同的平台具有相同的行为。如果可移植性是必须的,唯一要避免的内容就是文件名中的Dos风格的驱动器号。在可能的地方使用相对路径名称而不是绝对路径名称,这样还会更加灵活。

Ant的主要目标是生成Java应用程序,它能够内在地,出色的支持调用javac编译器以及其他java相关任务就毫不奇怪了。
像Ant一样,javac编译器本身也是java语言实现的。这对Ant中的javac任务的使用来说非常有利,因为通常调用Ant运行所在的Java虚拟机(JVM)中的编译器类。在每次需要编译java代码时,其他生成工具通常需要运行一个新的javac进程,从而需要一个新的JVM实例。而Ant不需要
如果想要单独地调用编译器----例如当你希望指定编译器的某些内存选项,或者需要使用一个不同级别的编译器的,只需要将javac的fork属性设置为true
<javac srcdir="src" fork="true" />

如果想要指定一个不同的javac可执行文件,并向它传递一个最大内存设置,可以像下面这样做:
<javac srcdir="src" fork="true" executable="d:\sdk\bin\javac" memoryMaximumSize="128m"/>

使用ant的时候有的时候在进行编译时说找不到javac,可能是因为机器中有多套jre的问题。手动指定jdk的目录可以解决问题。

jdk和jre的区别:

   JDK就是Java Development Kit
JRE是Java Runtime Enviroment是指Java的运行环境,是面向Java程序的使用者,而不是开发者。

  1、为什么Sun要让JDK安装两套相同的JRE?这是因为JDK里面有很多用Java所编写的开发工具(如javac.exe、jar.exe等),而且都放置在 \lib\tools.jar 里。从下面例子可以看出,先将tools.jar改名为tools1.jar,然后运行javac.exe,显示如下结果: Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/tools/javac /Main 这个意思是说,你输入javac.exe与输入 java -cp c:\jdk\lib\tools.jar com.sun.tools.javac.Main 是一样的,会得到相同的结果。从这里我们可以证明javac.exe只是一个包装器(Wrapper),而制作的目的是为了让开发者免于输入太长的指命。而且可以发现\lib目录下的程序都很小,不大于2 9K,从这里我们可以得出一个结论。就是JDK里的工具几乎是用Java所编写,所以也是Java应用程序,因此要使用JDK所附的工具来开发Java程序,也必须要自行附一套JRE才行,所以位于C:\Program Files\Java目录下的那套JRE就是用来运行一般Java程序用的。 

更多的见:http://www.cnitblog.com/asfman/articles/30277.html



在编译后,类文件通常被打包到一个Jar文件中。每个Jar文件都包含一个清单文件,指定该Jar文件的属性。
最简单的例子
<jar destfile="${basedir}/package.jar" basedir="${targetdir}"/>
这里将把${targetdir}目录的所有文件添加到其中(任意类型,而不只是类文件)。如果不指定清单文件,ant将提供一个级别的清单文件。
manifest属性允许指定一个用作该JAR文件的清单的文件。如果只是个引用jar包,可以不指定,如果是可执行的jar,需要main-class。
如果还引用了第三方的jar包,也需要说明。
<jar basedir="${dest.dir}" destfile="${jar.file}">
<manifest>
<attribute name="Main-Class" value="${main.class}" />
<attribute name="Class-Path" value="" />
</manifest>
<zipfileset src="lib/ant-launcher.jar" excludes="META-INF/*" />
<zipfileset src="lib/ant.jar" excludes="META-INF/*" />  
</jar>


创建和解压缩zip及tar文件,和创建jar文件类似。

<zip destfile="output.zip" basedir="output" />

相同的语法也可用于创建tar文件。还可以使用gzip和bzip任务来压缩文件。例如:

<gzip src="output.tar" zipfile="output.tar.gz" />

解压缩和提取文件同样的简单:

<unzip src="output.tar.gz" dest="extractDir" />

还可以包括overwrite属性来控制覆盖行为。默认为true。相关的任务名称是untar,unjar,gunzip和bunzip2。

替换文件中的标记

replace任务,它执行文件中的查找和替换操作。token属性指定要查找的字符串,value属性指定一个新的字符串,查找到的标记字符串的所有实例都被替换为这个新的字符串。

<replace file="input.txt" token="old" value="new" />


ant中的条件判断

basic elements: istrue isfalse not and or xor available isset equals  filesmatch 

<project name="testCondition">
	<target name="test">
		<condition property="scondition">
			<istrue value="true"/>
		</condition>
		<antcall target="isTrue">
		</antcall>
		<antcall target="isFalse">
		</antcall>
	</target>
	<target name="isTrue" if="scondition">
		<echo>is ture</echo>
	</target>
	<target name="isFalse" unless="scondition">
		<echo>is false</echo>
	</target>
</project>
剩下的:

  1.         <condition property="scondition">  
  2.             <not>  
  3.                 <istrue value="true"/>  
  4.             </not>  
  5.         </condition> 

  1.         <condition property="scondition">  
  2.             <and>  
  3.                 <istrue value="true"/>  
  4.                 <istrue value="false"/>  
  5.             </and>  
  6.         </condition> 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值