运行和测试应用程序
Hibernate实战中的项目,并没有使用IDE,要运行应用程序,首先要对它进行编译,并通过正确的数据库Schema启动数据库管理系统。
Ant是Java的一个强大的构建系统。一般要给项目编写build.xml文件,并用Ant命令行工具调用你在这个文件中定义的构建任务。如果支持的话,也可以从Java IDE中调用Ant任务。
之前从没有接触过Ant概念,于是在网上查了一些相关资源,如下。
Ant是什么?
Apache Ant 是一个基于 Java的生成工具。
生成工具在软件开发中用来将源代码和其他输入文件转换为可执行文件的形式(也有可能转换为可安装的产品映像形式)。随着应用程序的生成过程变得更加复杂,确保在每次生成期间都使用精确相同的生成步骤,同时实现尽可能多的自动化,以便及时产生一致的生成版本
1、Ant的安装
去http://ant.apache.org/bindownload.cgi下载Ant包
解压缩整个包
例如我放置在E:\soft\apacheAnt
在环境变量中设置 ANT_HOME = E:\soft\apacheAnt
在环境变量的ClassPath及Path中添加:%ANT_HOME%\bin
在命令行中输入 ant
Build build.xml does not exist!
Build failed
安装成功
2、编写一个ant 构建文件
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
运行第一个构建
打开命令窗口,进入存放java程序的目录下,在命令行键入 :ant
情况1:例如我第一个Ant项目在D:\firstAnt
运行cmd
d: 进行D盘
cd firstAnt 到指定目录
ant 运行java程序
情况2:
我是Win7系统,直接项目firstAnt项目上shift+右键->在此处打开命令窗口哦哦
现在虽然能够用ant 编译文件,但构建过程很混乱,各种文件都在同一个文件夹下(例如 源文件,目标文件),工程在大一点,就会很混乱,难以控制。从而我们需要进行强制控制,以将源文件和生成的文件彻底分离放在不同的目录下
Ant 工程将源文件,中间文件及发布包分隔在不同的目录下,从而易于管理,也更易于其他类似的文件整合:
目录
src 源文件
build/classes 中间文件(生成的,可清理)
dist 可发布文件(生成的,可清理)
目录 |
作用 |
src |
源文件 |
bin |
中间文件(生成的,可清理) |
lib |
Jar包 |
project Task:
每个构建文件对应一个项目。<project>标签时构建文件的根标签。它可以有多个内在属性,就如代码中所示,其各个属性的含义分别如下。
(1) default表示默认的运行目标,这个属性是必须的。
(2) basedir表示项目的基准目录。
(3) name表示项目名。
(4) description表示项目的描述。
target Task:
一个项目标签下可以有一个或多个target标签。一个target标签可以依赖其他的target标签。
例如,有一个target用于编译程序,另一个target用于生成可执行文件。在生成可执行文件之前必须先编译该文件,因此可执行文件的target依赖于编译程序的target。Target的所有属性如下。
(1).name表示标明,这个属性是必须的。
(2).depends表示依赖的目标。
(3)if表示仅当属性设置时才执行。
(4)unless表示当属性没有设置时才执行。
(5)description表示项目的描述。
property Task:
一个project可以有很多的properties。可以在buildfile中用property task来设定,或在Ant之外设定。一个property有一个名字和一个值。property可用于task的属性值。这是通过将属性名放在"{"和"}"之间并放在属性值的位置来实现的。例如如果有一个property builddir的值是"build",这个property就可用于属性值:{builddir}/classes。这个值就可被解析为build/classes。
path Task:
Path元素用来表示一个类路径,不过它还可以用于表示其他的路径。在用作几个属性时,路经中的各项用分号或冒号隔开。在构建的时候,此分隔符将代替当前平台中所有的路径分隔符,其拥有的属性如下。
(1).location 表示一个文件或目录。Ant在内部将此扩展为一个绝对路径。
(2).refid 是对当前构建文件中某处定义的一个path的引用。
(3).path表示一个文件或路径名列表。
filterset Task:
Filterset定义了一组过滤器,这些过滤器将在文件移动或复制时完成文件的文本替换。
主要属性如下:
(1).begintoken 表示嵌套过滤器所搜索的记号,这是标识其开始的字符串。
(2).endtoken表示嵌套过滤器所搜索的记号这是标识其结束的字符串。
(3).id是过滤器的唯一标志符。
(4).refid是对构建文件中某处定义一个过滤器的引用。
patternset Task:
Fileset 是对文件的分组,而patternset是对模式的分组,他们是紧密相关的概念。<patternset>支持4个属性:includes excludex includexfile 和 excludesfile,与fileset相同。Patternset 还允许以下嵌套元素:include,exclude,includefile 和 excludesfile.
mkdir Task:
该标签用于创建一个目录,它有一个属性dir用来指定所创建的目录名
delete Task:
该标签用于删除一个文件或一组文件,其属性如下。
(1)/file表示要删除的文件。
(2).dir表示要删除的目录。
javac Task:
该标签用于编译一个或一组java文件,其属性如下。
(1).srcdir表示源程序的目录。
(2).destdir表示class文件的输出目录。
(3).include表示被编译的文件的模式。
(4).excludes表示被排除的文件的模式。
(5).classpath表示所使用的类路径。
(6).debug表示包含的调试信息。
(7).optimize表示是否使用优化。
(8).verbose 表示提供详细的输出信息。
(9).fileonerror表示当碰到错误就自动停止。
(3).includeEmptyDirs 表示指定是否要删除空目录,默认值是删除。
(4).failonerror 表示指定当碰到错误是否停止,默认值是自动停止。
(5).verbose表示指定是否列出所删除的文件,默认值为不列出。
java Task:
该标签用来执行编译生成的.class文件,其属性如下。
(1).classname 表示将执行的类名。
(2).jar表示包含该类的JAR文件名。
(3).classpath所表示用到的类路径。
(4).fork表示在一个新的虚拟机中运行该类。
(5).failonerror表示当出现错误时自动停止。
(6).output 表示输出文件。
(7).append表示追加或者覆盖默认文件。
Ant的Build.xml文件
<?xml version="1.0" encoding="utf-8" ?>
<project name="HelloWorld" default="compile" basedir=".">
<!--项目名称、版本号-->
<property name="proj.name" value="HelloWorld" />
<property name="proj.version" value="1.0" />
<!--全局属性路径定义-->
<property name="src.java.dir" value="src" />
<property name="lib.dir" value="lib" />
<property name="build.dir" value="bin" />
<!--ClassPath定义-->
<path id="project.classpath">
<fileset dir="${lib.dir}">
<include name="**/*.jar" />
<include name="**/*.zip" />
</fileset>
</path>
<!--模式定义-->
<patternset id="meta.files">
<include name="**/*.xml" />
<include name="**/*.properties" />
</patternset>
<!--清理项目-->
<target name="clean">
<delete dir="${build.dir}" />
<mkdir dir="${build.dir}" />
</target>
<!--编译 Java代码-->
<target name="compile" depends="clean">
<mkdir dir="${build.dir}" />
<javac srcdir="${src.java.dir}" destdir="${build.dir}" nowarn="on" includeantruntime="false">
<classpath refid="project.classpath" />
</javac>
</target>
<!--复制xml、properties后缀文件到bin目录-->
<target name="copymetafiles">
<copy todir="${build.dir}">
<fileset dir="${src.java.dir}">
<patternset refid="meta.files" />
</fileset>
</copy>
</target>
<!--运行Test-->
<target name="run" depends="compile,copymetafiles" description="Build and run HelloWorld">
<java fork="true" classname="cn.jbit.hibernate.test.Test" classpathref="project.classpath">
<classpath path="${build.dir}" />
</java>
</target>
</project>
总结:
笔记5有个Hibernate的项目,是通过MyEclipse IDE工具创建的,使用Ant
1、例如在D盘创建firstAnt目录
2、把Hibernate项目内的src复制过去
3、把Hibernate项目内的lib复制过去
4、cmd运行ant run
刚接触Ant,还不是非常了解,总结不到位的,不要见怪啦。
Hibernate实战_笔记7(Ant),布布扣,bubuko.com
Hibernate实战_笔记7(Ant)
原文:http://blog.csdn.net/com185272358/article/details/20708669