ANT 简介

什么是Ant

一种基于Java的构建工具,可以用于自动化的building,packaging,andinstallingJavaapplications,与Linux中的makefile实现同样的功能,配置文件是以XML形式的。

安装Ant?

下载Ant的二进制包:

http://ant.apache.org/bindownload.cgi

设置ANT_HOME主目录环境变量

设置Path环境变量$ANT_HOME/bin

确定JAVA_HOME环境变量指定到JDK

运行Ant

在命令行输入“ant”

Ant则自动在当前目录下寻找build.xml文件以便运行

可以在命令行输入“ant–buildfilebuild.xml”指定一个特定的buildfile.xml用于运行

Ant的配置文件build.xml举例:

<projectname="MyProject"default="dist"basedir=".">

<propertyname="src"location="src"/>

<propertyname="build"location="build"/>

<propertyname="dist"location="dist"/>

<targetname="init">

<tstamp/>

<mkdirdir="${build}"/>

</target>

<targetname="compile"depends="init">

<javacsrcdir="${src}"destdir="${build}"/>

</target>

<targetname="dist"depends="compile">

<mkdirdir="${dist}/lib"/>

<jarjarfile="${dist}/lib/MyProject-${DSTAMP}.jar"basedir="${build}"/>

</target>

<targetname="clean">

<deletedir="${build}"/>

<deletedir="${dist}"/>

</target>

</project>

每个Ant配置文件只包含一个project标签和至少一个target标签

Project标签设置基本的项目属性,它有三个properties:

-name

-defaulttarget

-basedir

例如:<projectname=“MyProject”default=“build”basedir=“.”>

Target是Ant中的一个构建模块

每个target包含一些需要Ant做的task(s)

每个project标签必须有一个默认的Target

Targets的总体结构如下:

<targetname="A"/>

<targetname="B"depends="A"/>

<targetname="C"depends="B"/>

<targetname="D"depends="C,B,A"/>

每个target包含一个或多个tasks

Task是一段可执行的Java代码(e.g.javac,jar,etc)

Tasks是Ant中的真正“build”工作的模块

Ant有核心任务(builtin)和创建自定制任务的能力

例子:

<targetname="prepare"depends="init“>

<mkdirdir="${build}"/>

</target>

<targetname="build"depends="copy">

<javacsrcdir="src"destdir="${build}">

<includename="**/*.java"/>

</javac>

</target>

添加目录操作

<targetname="init">

<mkdirdir="${dist.dir}"/>

<mkdirdir="${dist.classes.dir}"/>

<mkdirdir="${dist.webapps.dir}"/>

</target>

编译java文件操作

<targetname="compile">

<javacsrcdir="${dist.dir}"destdir="${dist.classes.dir}"debug="true"encoding="GBK">

<classpathrefid="classpath"/>

</javac>

<jardestfile="${dist.classes.dir}/lin/app.jar"basedir="${dist.classes.dir}"/>

</target>

打Jar包操作

<targetname="jar">

<jardestfile="${dist}/lib/app.jar">

<filesetdir="${build}/classes"excludes="**/Test.class"/>

<filesetdir="${src}/resources"/>

</jar>

</target>

复制文件操作

<targetname=“copy">

<copytodir="${dist.webapps.dir}/WEB-INF/lib"overwrite="true"flatten="true">

<filesetdir="${lib.dir}">

<includename="*.jar"/>

<excludename="j2ee.jar"/>

</fileset>

</copy>

</target>

删除操作

<targetname="clean">

<deletedir="${dest.dir}"/>

<deletedir="${dest2.dir}"/>

</target>

写自定制的任务

创建一个从继承org.apache.tools.ant.Task的Java类

对每一个属性,写一个publicvoid的setter方法并带一个参数

写一个publicvoidexecute()可以抛出BuildException异常但没有参数的方法,该方法实现自定制的任务

用于设置build.xml的properties:

例如:

<propertyname=“src”value=“/home/src”/>

可以在配置文件任何地方使用${src}来表示/home/src目录

只要由<property>指定的值,Ant可以提供任何访问

Ant提供了方法用来设置各种环境变量,诸如PATHandCLASSPATH.

设置CLASSPATH的例子:

<classpath>

<pathelementpath="${classpath}"/>

<pathelementlocation="lib/helper.jar"/>

</classpath>

命令行参数

-buildfilebuildfile–指定要使用的build文件

targetname–指定要运行的target(代替执行默认的target)

-verbose,-quiet,-debug–控制Ant输出的日志信息

-loggerclassname–AllowsusertospecifytheirownclassesforloggingAntevents

使用Ant自动化部署数据库

说明:

1

createDB_MySQL

创建用于添加表的数据库

2

createTAbles_MySQL

创建用于操作/测试的表

3

dropDB_MySQL

丢弃数据库

注意:

需要提供四个sql脚本文件

sample_project.sql

employees.sql

project.sql

timetable.sql

设置基本的buildfile.xml属性

<projectname="Databasecreation"default="createTables_MySQL"basedir=".">

<!--可以使用一个property文件,如<propertyfile="${basedir}/build.properties"/>-->

<propertyname="sql.dirver"value="org.git.mm.mysql.Driver"/>

<propertyname="sql.url"value="jdbc:mysql://localhost/sample_project"/>

<propertyname="sql.user"value=""/>

<propertyname="sql.pass"value=""/>

<targetname="createDB_MySQL">

<sqldirver="${sql.driver}"

url="${sql.url}"

userid="${sql.user}"

password="${sql.pass}"

classpath="mysql-connector-java-3.0.9-stable-bin.jar"

src="sample_project.sql"/>

</target>

<targetname="createTables_MySQL">

<sqldirver="${sql.driver}"url="${sql.url}"userid="${sql.user}"password="${sql.pass}">

<classpath>

<pathelementlocation="mysql-connector-java-3.0.9-stable-bin.jar"/>

</classpath>

usesample_project;

<transactionsrc="employees.sql"/>

<transactionsrc="project.sql"/>

<transactionsrc="timetable.sql"/>

</sql>

</target>

<targetname="dropDB_MySQL">

<inputmessage="Doyoureallywanttodeletethistable(y/n)?"validargs="y,n"addproperty="do.delete"/>

<conditionproperty="do.abort">

<equalsarg1="n"arg2="${do.delete}"/>

</condition>

<failif="do.abort">Buildabortedbyuser.</fail>

<sqldirver="${sql.driver}"url="${sql.url}"userid="${sql.user}"password="${sql.pass}">

<classpath>

<pathelementlocation="mysql-connector-java-3.0.9-stable-bin.jar"/>

</classpath>

dropdatabasesmaple_project;

</sql>

</target>

</project>

我们可以在编写好需要持久化的类的映射文件*.hbm.xml后,使用org.hibernate.tool.hbm2ddl.SchemaExport来自动建立数据库表格,假设我们的User.hbm.xml如下:

User.hbm.xml

<hibernate-mapping>

<classname=“com.cstp.User"table="user">
<idname="id"column="id"type="java.lang.Integer">
<generatorclass="native"/>
</id>

<propertyname="name"column="name"type="java.lang.String"/>

<propertyname=“age"column=“age"type="java.lang.integer"/>

</class>

</hibernate-mapping>

编写如下程序从映射文件生成数据库表格

HbmtoTable.java

packagecom.cstp;

importorg.hibernate.cfg.Configuation;

importorg.hibernate.tool.hbm2ddl.SchemaExport;

publicclassHbmToTable{

publicstaticvoidmain(String[]args){

Configurationconfig=newConfiguration().configure();

System.out.println("Creatingtables");

SchemaExportschemaExport=newSchemaExport(config);

schemaExport.create(true,true);

}

}

方法一:

借助MyEclipse的Hibernate逆向工程方案

首先在数据创建好数据库和对应表格

注意:表格之间的主外键依赖关系一定要设置对

其次,在MyEclipse中利用逆向工程,直接生成对应的持久化类和对应的Hibernate映射文件

注意:生成的持久化类需要稍微修改,以便符合Hibernate的要求

方法二:

借助Middlegen-Hibernate工具

首先下载Middlegen-Hibernate,下载后将其解压缩

其次,在数据库创建好对应的表格

然后,进入Middlegen-Hibernate解压缩后的config/database目录中,开启mysql.xml,修改当中的数据库配置相关信息

最后在Middlegen-Hibernate目录下,开启Ant的构建文件,修改build.xml文件

第一个需要设定的是所使用的数据库配置文件,改为mysql.xml

第二个是设定应用程序名

第三个是设定自动产生文件的输出目录

第四个是设定你的package名称

其它可以不变

修改完成后,进入Middlegen-Hibernate目录下,执行Ant构建,如果成功,出现一个窗口,进行进一步的设置

设置完成后,点击窗口的generate按钮,即可产生数据库表格对应的类映射文件

开启mysql.xml

<!--=========================================================-->

<!--antproperties/targetsformysql-->

<!--note:thisisnotaproperxmlfile(thereisnorootelement)-->

<!--itisintendedtobeimportedfroma*real*xmlfile-->

<!--==========================================================-->

<propertyname="database.script.file"value="${src.dir}/sql/${name}-mysql.sql"/>

<propertyname="database.driver.file"value="${lib.dir}/mysql-connector-java-3.0.14-production-bin.jar"/>

<propertyname="database.driver.classpath"value="${database.driver.file}"/>

text-alig

你可能感兴趣的:(sql,mysql,Hibernate,xml,ant)