分享
 
 
 

Ant实战篇 (二)

王朝java/jsp·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

Ant实战篇 (二)

作 者:黄 凯

E_mail:hk_sz@163.com

前 言

由于现在公司进行Unit Test Case的整理阶段,所以抽空对Ant和Junit技术进行了一下了解,以下是集合了众家所长之精华(考虑到是按我的思路总结的,也许不能完全表述原作者的思路,所以在参考中我把所有参考过的文章网址或书籍都罗列了出来,大家有时间不妨去看看原文)。

如果对Ant部分参数不明白的话,请参看《Ant理论篇》系列或ant自带的文档。

在这里要特别感谢我的同事王万鹏为本文档提供demoEJB实例,促使本文档提前完成。同时也要感谢一直以来给以我帮助的葛威龙同事,因为本人英文水准不高,很多不解的地方都得到了他大力的协助。在此特对他们表示衷心的谢意!!!

目 录

一、 Ant使用实例

1.1 通过Ant的copt task将当前目录下最近更新的文件(按系统时间来区分)文件提交至指定目录

1.2 用Ant开发java程序

1.3 ant结合junit进行软件自动测试

1.4 ant开发和部署web应用程序

1.5 ant打包(jar)应用程序

1.6 ant开发EJB应用程序

参考

1.5 ant打包(jar)应用程序

1> 前提:

本例使用的目录结构如下:

D:\ age

src java源文件目录

META-INF 配置文件目录

2> 在src目录下创建VirtualAge.java和MyVirtualAge.java文件。

VirtualAge.java内容如下:

public final class VirtualAge

{

public static int yeasOld(int i)

{

return i+1;

}

}

MyVirtualAge.java内容如下:

public class MyVirtualAge

{

public static void main(String[] args)

{

int myAge= 10;

System.out.println("My Age is "+myAge);

System.out.println("My Virtual Age is "+VirtualAge.yeasOld(myAge));

}

}

3> 在age目录下建立build.properties和build.xml文件。

build.properties文件内容如下:

src=src

classes=classes

jar=jar

manifest=META-INF

author.name=Kay

build.xml文件内容如下:

<?xml version="1.0"?>

<project default="help" basedir=".">

<property file="build.properties"/>

<target name="init">

<mkdir dir="${classes}"/>

<mkdir dir="${jar}"/>

</target>

<target name="build" depends="init">

<javac destdir="${classes}">

<src path="${src}"/>

</javac>

</target>

<target name="jar" depends="build">

<jar destfile="${jar}/age.jar">

<fileset dir="${classes}"/>

<manifest>

<attribute name="Built-By" value="${author.name}"/>

<attribute name="Main-Class" value="MyVirtualAge"/>

</manifest>

</jar>

</target>

<target name="run" depends="jar">

<java classname="MyVirtualAge"

fork="true"

failonerror="true">

<arg value="-jar"/>

<classpath>

<pathelement location="${jar}/age.jar"/>

</classpath>

</java>

</target>

<target name="runjar" depends="jar">

<java jar="${jar}/age.jar"

fork="true"

failonerror="true">

<arg value="-jar"/>

<classpath>

<pathelement location="${jar}/age.jar"/>

</classpath>

</java>

</target>

<target name="clean">

<delete includeEmptyDirs="true">

<fileset dir="${classes}"/>

<fileset dir="${jar}"/>

</delete>

</target>

<target name="help">

<echo message="init Initialization"/>

<echo message="build Compiler the java build class"/>

<echo message="jar Make JAR Archive file"/>

<echo message="run Run JAR Archive file with a appointed class entry"/>

<echo message="runjar Run JAR Archive file with a Main-Class entry"/>

<echo message="clean Clean the ant create's file and directory"/>

<echo message="help Prints this message"/>

</target>

</project>

4> 在age目录下运行ant runjar查看结果(也可以试试运行ant run,结果是一样的)。

1.6 ant开发EJB应用程序

1> 本例使用的目录结构如下:

D:\ demoEJB

src java源文件目录

conf 配置文件目录

2> 在src目录下创建ConverterEJB.java、ConverterHome.java、Converter.java和Client.java文件。

ConverterEJB.java文件内容如下:

import java.rmi.RemoteException;

import javax.ejb.SessionBean;

import javax.ejb.SessionContext;

import java.math.*;

public class ConverterEJB implements SessionBean {

BigDecimal yenRate = new BigDecimal("121.6000");

BigDecimal euroRate = new BigDecimal("0.0077");

public BigDecimal dollarToYen(BigDecimal dollars) {

BigDecimal result = dollars.multiply(yenRate);

return result.setScale(2,BigDecimal.ROUND_UP);

}

public BigDecimal yenToEuro(BigDecimal yen) {

BigDecimal result = yen.multiply(euroRate);

return result.setScale(2,BigDecimal.ROUND_UP);

}

public ConverterEJB() {}

public void ejbCreate() {}

public void ejbRemove() {}

public void ejbActivate() {}

public void ejbPassivate() {}

public void setSessionContext(SessionContext sc) {}

}

ConverterHome.java文件内容如下:

import javax.ejb.EJBHome;

import java.io.Serializable;

import java.rmi.RemoteException;

import javax.ejb.CreateException;

import javax.ejb.EJBHome;

public interface ConverterHome extends EJBHome {

Converter create() throws RemoteException, CreateException;

}

Converter.java文件内容如下:

import javax.ejb.EJBObject;

import java.rmi.RemoteException;

import java.math.*;

public interface Converter extends EJBObject {

public BigDecimal dollarToYen(BigDecimal dollars) throws RemoteException;

public BigDecimal yenToEuro(BigDecimal yen) throws RemoteException;

}

Client.java文件内容如下:

import java.rmi.RemoteException;

import java.util.Collection;

import java.util.Hashtable;

import java.util.Properties;

import java.util.Vector;

import java.util.Iterator;

import javax.ejb.CreateException;

import javax.ejb.DuplicateKeyException;

import javax.ejb.FinderException;

import javax.ejb.ObjectNotFoundException;

import javax.ejb.RemoveException;

import javax.naming.Context;

import javax.naming.InitialContext;

import javax.naming.NamingException;

import javax.rmi.PortableRemoteObject;

import java.math.BigDecimal;

public class Client {

private static Context getInitialContext() throws NamingException {

try {

Properties h = new Properties();

h.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");

h.put(Context.PROVIDER_URL, "t3://localhost:7001");

return new InitialContext(h);

} catch (NamingException ne) {

throw ne;

}

}

public static void main(String[] args) {

try {

Context initial = getInitialContext();

Object objref = initial.lookup("ejb/session/converter");

ConverterHome home =(ConverterHome)PortableRemoteObject.narrow(objref,ConverterHome.class);

Converter currencyConverter = home.create();

BigDecimal param = new BigDecimal ("100.00");

BigDecimal amount = currencyConverter.dollarToYen(param);

System.out.println(amount);

amount = currencyConverter.yenToEuro(param);

System.out.println(amount);

System.exit(0);

} catch (Exception ex) {

System.err.println("Caught an unexpected exception!");

ex.printStackTrace();

}

}

}

3> 在demoEJB目录下建立build.properties和build.xml文件。

build.properties文件内容如下:

src=src

conf=conf

classes=classes

manifest=classes/META-INF

jar=jar

weblogic.lib=c:/bea/weblogic700/server/lib

author.name=Kay

username=training

user.password=training

ejb.name=demoEJB

weblogic.deploy.dir=C:/bea/user_projects/mydomain/myserver/upload

build.xml文件内容如下:

<?xml version="1.0"?>

<project default="help" basedir=".">

<property file="build.properties"/>

<path id="bea.class.path">

<fileset dir="${weblogic.lib}">

<include name="weblogic.jar"/>

</fileset>

</path>

<target name="init">

<mkdir dir="${classes}"/>

<mkdir dir="${manifest}"/>

<mkdir dir="${jar}"/>

<copy todir="${manifest}">

<fileset dir="${conf}">

<include name="ejb-jar.xml"/>

<include name="weblogic-ejb-jar.xml"/>

</fileset>

</copy>

</target>

<target name="build" depends="init">

<javac srcdir="${src}" destdir="${classes}" includes="*.java">

<classpath refid="bea.class.path"/>

</javac>

</target>

<target name="jar" depends="build">

<jar destfile="${jar}/${ejb.name}.jar">

<fileset dir="${classes}"/>

<manifest>

<attribute name="Built-By" value="${author.name}"/>

<attribute name="Main-Class" value="Client"/>

</manifest>

</jar>

</target>

<target name="deploy" depends="jar">

<serverdeploy action="deploy" source="${jar}/${ejb.name}.jar">

<weblogic application="${ejb.name}"

server="t3://127.0.0.1:7001"

classpath="${weblogic.lib}/weblogic.jar"

username="${username}"

password="${user.password}"

component="${ejb.name}:myserver"

debug="true"/>

</serverdeploy>

</target>

<target name="redeploy" depends="jar">

<serverdeploy action="update" source="${jar}/${ejb.name}.jar">

<weblogic application="${ejb.name}"

server="t3://127.0.0.1:7001"

classpath="${weblogic.lib}/weblogic.jar"

username="${username}"

password="${user.password}"

component="${ejb.name}:myserver"

debug="true"/>

</serverdeploy>

</target>

<target name="undeploy">

<serverdeploy action="undeploy">

<weblogic application="${ejb.name}"

server="t3://127.0.0.1:7001"

classpath="${weblogic.lib}/weblogic.jar"

username="${username}"

password="${user.password}"

debug="true"/>

</serverdeploy>

</target>

<target name="delete">

<serverdeploy action="delete">

<weblogic application="${ejb.name}"

server="t3://127.0.0.1:7001"

classpath="${weblogic.lib}/weblogic.jar"

username="${username}"

password="${user.password}"/>

</serverdeploy>

</target>

<target name="run">

<java classname="Client"

fork="true"

failonerror="true">

<classpath refid="bea.class.path"/>

<classpath>

<pathelement location="${weblogic.deploy.dir}/${ejb.name}/${ejb.name}.jar"/>

</classpath>

</java>

</target>

<target name="clean">

<delete includeEmptyDirs="true">

<fileset dir="${classes}"/>

<fileset dir="${jar}"/>

<fileset dir="${weblogic.deploy.dir}/${ejb.name}"/>

</delete>

</target>

<target name="help">

<echo message="init Initialization"/>

<echo message="build Compiler the java build class"/>

<echo message="jar Make JAR Archive file"/>

<echo message="deploy Deploy the JAR Archive file"/>

<echo message="redeploy Redeploy the JAR Archive file"/>

<echo message="undeploy Undeploy the JAR Archive file"/>

<echo>delete Delete the JAR Archive file's location from Web

application</echo>

<echo message="run Run JAR Archive file with a appointed class entry"/>

<echo message="clean Clean the ant create's file and directory"/>

<echo message="help Prints this message"/>

</target>

</project>

4> 启动Weblogic server,然后在age目录下首先运行ant deploy部署,然后运行ant run查看结果。

参考

Ant 的使用

作者:不详

原址:http://php.igt.com.tw/unit_116.htm

使用 ANT 开发 Java 程序

作者:cinc

原址:http://www.douzhe.com/bbsjh/14/434.html

利用Ant实现项目自动构建测试备份并发布到项目web

作者:beyondii

原址:http://www.csdn.net/Develop/Read_Article.asp?Id=20443

http://www.csdn.net/Develop/Read_Article.asp?Id=20444

http://www.csdn.net/Develop/Read_Article.asp?Id=20445

http://www.csdn.net/Develop/Read_Article.asp?Id=20446

让编译和测试过程自动化

作者:Erik Hatcher

原址:http://www-900.ibm.com/developerWorks/cn/java/j-junitmail/

《J2EE应用开发(Weblogic+JBuilder)》

出版社: 电子工业出版社

《The BestBook Advanced Programmer Java2》

作者:张洪斌

出版社:不详

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有