仓酷云 发表于 2015-1-18 11:44:30

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起应用,功能强大.

柔情似水 发表于 2015-1-21 13:40:45

如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。

老尸 发表于 2015-1-30 19:27:34

Java 编程语言的风格十分接近C、C++语言。

小妖女 发表于 2015-1-31 19:02:56

Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。

小女巫 发表于 2015-2-2 22:38:37

是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言

飘飘悠悠 发表于 2015-2-8 18:40:12

是一种为 Internet发展的计算机语言

冷月葬花魂 发表于 2015-2-13 02:23:27

Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。

灵魂腐蚀 发表于 2015-3-3 12:24:55

任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言

金色的骷髅 发表于 2015-3-11 10:54:16

让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。

莫相离 发表于 2015-3-11 12:49:27

是一种为 Internet发展的计算机语言

蒙在股里 发表于 2015-3-15 23:12:11

是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言

再见西城 发表于 2015-3-17 19:10:52

是一种使用者不需花费很多时间学习的语言

仓酷云 发表于 2015-3-24 17:29:12

http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。

因胸联盟 发表于 2015-3-25 22:36:42

象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。

若相依 发表于 2015-3-26 10:05:03

Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

小魔女 发表于 2015-4-4 10:06:31

Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。

愤怒的大鸟 发表于 2015-4-4 16:51:36

Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。

分手快乐 发表于 2015-4-20 20:54:40

不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。

只想知道 发表于 2015-4-29 03:48:57

另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。

活着的死人 发表于 2015-5-6 16:09:29

Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
页: [1] 2
查看完整版本: JAVA教程之ANT安装、设置