Ant+Xdoclet入门实例

Ant是一个构建工具,自Maven出现以前,一直占据着很大的市场,目前来看Maven占据着上峰,因此推荐大家尝试使用Maven,我在上篇中简单的写了些关于Maven的搭建:《搭建Maven开发环境》,供参考。

关于Ant的文章很多,就不多做介绍,下面比较下AntMaven的异同点:

1.   定位:Ant是构建工具;Maven是软件项目管理和理解工具,Maven基本具备Ant的功能。

2.   Ant将提供了很多可以重用的task,例如copy, move, delete 以及junit单元测试Maven则提供了很多可以重用的过程。我们可以把Maven看成是一个"build container"这个容器可以让我们重用从一系列的项目中抽像出来的build过程。

3.   Maven对所依赖的包有明确的定义,如使用那个包,版本是多少,一目了然。而ant则通常是简单的inclde所有的jar。导致的最终结果就是,你根本无法确定JBoss中的lib下的commonlogging是哪个版本的,唯一的方法就是打开METAINF目录下MANIFEST.MF

4.   maven有大量的重用脚本可以利用,如生成网站,生成javadocsourcecodereference,等。而ant都需要自己去写。

5.   还有一些其他的异同,种种迹象表明Maven如果不死,就会成为主流。

Xdoclet实际上就是一个自动代码生成工具,他可以生成各种各样的代码或配置文件(如果清楚xdoclet,也可以对他进行扩展)。在默认情况下,Xdoclet已经给我们提供了很多的解决方案。这些解决方案叫做plugin,即插件。在Xdoclet的官方网站上http://xdoclet.codehaus.org,我们可以获得关于他支持的所有plugin的情况。

Xdoclet通过plugin来支持代码的自动生成。我们要使用Xdoclet,可以将它定义为ant的一个任务。然后就可以使用Xdoclet了。在<xdoclet>标签内部使用Xdoclet,由于Xdoclet通常用来对源文件进行扫描,并读取源文件中的注释,然后再根据这些注释生成相应配置文件,所以,通常我们需要定义让Xdoclet扫描哪些源代码文件。对于这个需要,我们通过<fileset>标签来满足!

通过<component>标签,我们可以使用Xdoclet的众多plugin

我们可以在java代码中使用类似于javadoc的注释,来表达更多的内容。这些额外的注释,通过使用Xdoclet工具,我们可以将他们转换为我们需要的各种配置文件。先看一个简单的例子(xdoclet-1.2.31.0版本有诸多不同):

比如有一个java文件的源代码如下:

package com.tgb.domain;

/**
 * 用户实体类
 * @author yuanfubiao
 *@hibernate.class table="t_user"
 *
 */
public class User {

	private int id;
	
	private String username;
	
	private String password;
	
	/**
	 * @hibernate.id generator-class="native"
	 */	
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	/**
	 * @hibernate.property
	 */	
	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	/**
	 * @hibernate.property
	 */	
	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}	
}

通过XdocletAnt的结合使用,可以得到这个类Hibernate的映射文件,并且可以生成Hibernate配置文件,build.xml的配置内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<project name="SSH构建脚本" default="生成Hibernate配置文件" basedir=".">

   	<property name="src.dir" value="${basedir}/src"/>
   	<property name="build.dir" value="${basedir}/bin"/>
	<property name="webapp.dir" value="${basedir}/WebContent"/>
	<property name="xdoclet.home" value="D:/Application/xdoclet-1.2.3"/>

   	<!-- 定义构建路径 -->
   	<path id="xdoclet.task.classpath">
      	<fileset dir="${xdoclet.home}/lib">
         	<include name="**/*.jar"/>
      	</fileset>
   	</path>
	<taskdef 
		name="hibernatedoclet"
		classname="xdoclet.modules.hibernate.HibernateDocletTask"
		classpathref="xdoclet.task.classpath"
	/>		
	
	<target name="生成Hibernate配置文件">
		<hibernatedoclet destdir="src">
			<fileset dir="${src.dir}/com/tgb/domain">
				<include name="**/*.java"/>
			</fileset>
			<hibernatecfg
				destinationFile="hibernate.cfg.xml"
				dialect="org.hibernate.dialect.MySQLDialect"
				driver="com.mysql.jdbc.Driver"
				username="root"
				password="1"
				jdbcurl="jdbc:mysql://127.0.0.1/test_ssh"
				showsql="true"
				version="3.0"  
				hbm2ddl="update" 
				xmlencoding="utf-8"
			/>
		</hibernatedoclet>
	</target>
	
	<target name="生成hibernate映射文件">
		<hibernatedoclet destdir="src">
			<fileset dir="${src.dir}">
				<include name="com/tgb/domain/*.java"/>
			</fileset>
			<hibernate version="3.0"/>
		</hibernatedoclet>
	</target>
</project>

以上是Ant+Xdoclet结合使用的情况,如此一来省时省力。

你可能感兴趣的:(Ant+Xdoclet入门实例)