JAVA教程之ANT安装、设置
你说是sun公司对她研究的透还是微软?针对自己工具开发的.net性能上肯定会站上风的。ant是一个基于JAVA的主动化剧本引擎,剧本格局为XML。除做JAVA编译相干义务外,ANT还能够经由过程插件完成良多使用的挪用。ANT的基础观点:
ANT的安装:解包,设置路径
ANT的利用:最好的进修只不外是一个复杂有用的例子起步……
ANT的基础观点:Java的Makefile
当一个代码项目年夜了今后,每次从头编译,打包,测试等城市变得十分庞大并且反复,因而c言语中有make剧本来匡助这些事情的批量完成。在Java中使用是平台有关性的,固然不会用平台相干的make剧本来完成这些批处置义务了,ANT自己就是如许一个流程剧本引擎,用于主动化挪用程序完成项目标编译,打包,测试等。除基于JAVA是平台有关的外,剧本的格局是基于XML的,比make剧本来讲还要好保护一些。
每一个ant剧本(缺省叫build.xml)中设置了一系列义务(target):好比关于一个一样平常的项目大概必要有以下义务。
义务1:usage打印本剧本的匡助信息(缺省)
义务2:clean<--init清空初始化情况
义务3:javadoc<--build<--init天生JAVADOC
义务4:jar<--build<--init天生JAR
义务5:all<--jar+javadoc<--build<--init完成以上一切义务:jarjavadoc
而多个义务之间常常又包括了必定了依附干系:好比把全部使用打包义务(jar)的这个依附于编译义务(build),而编译义务又依附于全部情况初始化义务(init)等。
注:我看到良多项目标ant剧本中的定名基础上都是分歧的,好比:编译一样平常叫build大概compile;打包一样平常叫jar或war;天生文档一样平常定名为javadoc或javadocs;实行全体义务all。在每一个义务的中,ANT会依据设置挪用一些内部使用并配以响应参数实行。固然ANT可挪用的内部使用品种十分丰厚,但实在最经常使用的就2,3个:好比javacjavadocjar等。
ANT的安装
解包后在体系可实行路径中到场指向ant的bin的路径就能够了,好比能够在GNU/Linux上把以下设置到场/etc/profile中:
exportANT_HOME=/home/ant
exportJAVA_HOME=/usr/java/j2sdk1.4.1
exportPATH=$PATH:$JAVA_HOME/bin:$ANT_HOME/bin
如许实行ant后,假如不指定设置文件ant会缺省找build.xml这个设置文件,并依据设置文件实行义务,缺省的义务设置能够指向最经常使用的义务,好比:build,或指向打印匡助信息:usage,告知用户有那些剧本选项可使用。
ANT的利用
最好的进修历程就是看懂那些opensource项目中的build.xml剧本,然后依据本人的必要简化成一个更复杂的,ANT和APACHE上良多十分工程派的项目:复杂易用,并且顺应性十分强,由于这些项目标创建常常来历于开辟职员一样平常最间接的需求。
以下是的一个WebLucene使用的例子:修正自JDOM的build.xml:
<projectdefault="usage"basedir=".">
<!--===================================================================-->
<!--Initializationtarget-->
<!--===================================================================-->
<targetname="init">
<tstamp/>
<propertyfile="${basedir}/build.properties"/>
<propertyname="Name"value="ProjectFullName"/>
<propertyname="name"value="project_name"/>
<propertyname="version"value="0.2"/>
<propertyname="year"value="2003"/>
<echomessage="-----------${Name}${version}[${year}]------------"/>
<propertyname="debug"value="off"/>
<propertyname="optimize"value="on"/>
<propertyname="deprecation"value="on"/>
<propertyname="src.dir"value="./src/WEB-INF/src"/>
<propertyname="lib.dir"value="./src/WEB-INF/lib"/>
<propertyname="packages"value="com.chedong.*,org.apache.lucene.*"/>
<propertyname="build.src"value="./src/WEB-INF/build"/>
<propertyname="build.dest"value="./src/WEB-INF/classes"/>
<propertyname="build.javadocs"value="./src/doc"/>
<pathid="classpath">
<pathelementpath="${jsdk_jar}"/>
<filesetdir="${lib.dir}">
<includename="**/*.jar"/>
</fileset>
</path>
<filtertoken="year"value="${year}"/>
<filtertoken="version"value="${version}"/>
<filtertoken="date"value="${TODAY}"/>
<filtertoken="log"value="true"/>
<filtertoken="verbose"value="true"/>
</target>
<!--===================================================================-->
<!--Helponusage-->
<!--===================================================================-->
<targetname="usage"depends="init">
<echomessage="${Name}Buildfile"/>
<echomessage="-------------------------------------------------------------"/>
<echomessage=""/>
<echomessage="availabletargetsare:"/>
<echomessage=""/>
<echomessage="jar-->generatesthe${name}.jarfile"/>
<echomessage="build-->compilesthesourcecode"/>
<echomessage="javadoc-->generatestheAPIdocumentation"/>
<echomessage="clean-->cleansupthedirectory"/>
<echomessage=""/>
<echomessage="Pleaserenamebuild.properties.defaulttobuild.properties"/>
<echomessage="andeditbuild.propertiestospecifyJSDK2.3classpath."/>
<echomessage=""/>
<echomessage="Seethecommentsinsidethebuild.xmlfileformoredetails."/>
<echomessage="-------------------------------------------------------------"/>
<echomessage=""/>
<echomessage=""/>
</target>
<!--===================================================================-->
<!--Preparesthesourcecode-->
<!--===================================================================-->
<targetname="prepare-src"depends="init">
<!--createdirectories-->
<mkdirdir="${build.src}"/>
<mkdirdir="${build.dest}"/>
<!--copysrcfiles-->
<copytodir="${build.src}">
<filesetdir="${src.dir}"/>
</copy>
</target>
<!--===================================================================-->
<!--Compilesthesourcedirectory-->
<!--===================================================================-->
<targetname="build"depends="prepare-src">
<javacsrcdir="${build.src}"
destdir="${build.dest}"
debug="${debug}"
optimize="${optimize}">
<classpathrefid="classpath"/>
</javac>
</target>
<!--===================================================================-->
<!--Createstheclasspackage-->
<!--===================================================================-->
<targetname="jar"depends="build">
<jarjarfile="${lib.dir}/${name}.jar"
basedir="${build.dest}"
includes="**"/>
</target>
<!--===================================================================-->
<!--CreatestheAPIdocumentation-->
<!--===================================================================-->
<targetname="javadoc"depends="build">
<mkdirdir="${build.javadocs}"/>
<javadocpackagenames="${packages}"
sourcepath="${build.src}"
destdir="${build.javadocs}"
author="true"
version="true"
use="true"
splitindex="true"
windowtitle="${Name}API"
doctitle="${Name}">
<classpathrefid="classpath"/>
</javadoc>
</target>
<!--===================================================================-->
<!--Cleantargets-->
<!--===================================================================-->
<targetname="clean"depends="init">
<deletedir="${build.src}"/>
<deletedir="${build.dest}/org"/>
<deletedir="${build.dest}/com"/>
<delete>
<filesetdir="${build.dest}"includes="**/*.class"/>
</delete>
</target>
</project>
<!--Endoffile-->
缺省义务:usage打印匡助文档,告知有那些义务选项:可用的有build,jar,javadoc和clean.
初始化情况变量:init
一切义务都基于一些基础情况变量的设置初始化完成,是后续其他义务的基本,在情况初始化过程当中,有2点对照能够便利设置:
1除利用却缺省的property设置了JAVA源路径和输入路径外,援用了一个内部的build.properties文件中的设置,
<propertyfile="${basedir}/build.properties"/>
如许年夜部分复杂设置用户只需会看懂build.properties就能够了,究竟XML比起keyvalue的属性文件仍是要可读性差一些。用build.properties也能够便利其他用户从编译的细节中束缚出来。
2CLASSPATH设置:利用了个中的:
<pathid="classpath">
<pathelementpath="${jsdk_jar}"/>
<filesetdir="${lib.dir}">
<includename="**/*.jar"/>
</fileset>
</path>
则相称于设置了:CLASSPATH=/path/to/resin/lib/jsdk23.jar;/path/to/project/lib/*.jar;
文件复制:prepare-src
创立一时SRC寄存目次和输入目次。
<!--===================================================================-->
<!--Preparesthesourcecode-->
<!--===================================================================-->
<targetname="prepare-src"depends="init">
<!--createdirectories-->
<mkdirdir="${build.src}"/>
<mkdirdir="${build.dest}"/>
<!--copysrcfiles-->
<copytodir="${build.src}">
<filesetdir="${src.dir}"/>
</copy>
</target>
编译义务:build
编译时的CLASSPATH情况经由过程一下体例找到援用一个path对象
<classpathrefid="classpath"/>
打包义务:jar
对使用打包天生项目所写名的.jar文件
<!--===================================================================-->
<!--Createstheclasspackage-->
<!--===================================================================-->
<targetname="jar"depends="build">
<jarjarfile="${lib.dir}/${name}.jar"
basedir="${build.dest}"
includes="**"/>
</target>
天生JAVADOC文档义务:javadoc
<!--===================================================================-->
<!--CreatestheAPIdocumentation-->
<!--===================================================================-->
<targetname="javadoc"depends="build">
<mkdirdir="${build.javadocs}"/>
<javadocpackagenames="${packages}"
sourcepath="${build.src}"
destdir="${build.javadocs}"
author="true"
version="true"
use="true"
splitindex="true"
windowtitle="${Name}API"
doctitle="${Name}">
<classpathrefid="classpath"/>
</javadoc>
</target>
清空一时编译文件:clean
<!--===================================================================-->
<!--Cleantargets-->
<!--===================================================================-->
<targetname="clean"depends="init">
<deletedir="${build.src}"/>
<deletedir="${build.dest}/org"/>
<deletedir="${build.dest}/com"/>
<delete>
<filesetdir="${build.dest}"includes="**/*.class"/>
</delete>
</target>
TODO:
更多义务/扩大:(样例)
测试义务:JUnit测试
代码作风反省义务:CheckStyle,Jalopy等
邮件警报义务:能够把以上这些义务的输入告诫发送到制订的用户列表中,这个义务能够设置天天主动运转。
java比较简单,没有C++的烦琐,但学习时最好有C++为基础.与JSP和SQL起应用,功能强大. 如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。 Java 编程语言的风格十分接近C、C++语言。 Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 是一种为 Internet发展的计算机语言 Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。 任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言 让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。 是一种为 Internet发展的计算机语言 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言 是一种使用者不需花费很多时间学习的语言 http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。 象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。 Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。 Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。 不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
页:
[1]
2