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查看结果。
相关推荐
这篇博文链接指向的是iteye博客上的一篇文章,可能详细介绍了如何使用Ant编写和运行build script的具体步骤,以及可能遇到的问题和解决方案。遗憾的是,由于没有直接的描述内容,我们无法获取更多具体信息。但是,...
《Spring Web Service实战篇(1)》主要涵盖了在Java环境中使用Spring框架构建Web服务的相关技术。本实战篇将深入探讨Spring Web Service的核心概念、架构设计以及实现步骤,旨在帮助开发者熟练掌握这一强大的工具。 ...
在描述中提到的博客链接指向了ITEYE上的一篇关于Ant的博文,虽然具体内容没有提供,但可以推测博主可能分享了Ant的使用经验、常见问题解决方法或者某个特定功能的深入解析。ITEYE是一个知名的IT技术社区,这样的博客...
### OSGi实战进阶篇知识点总结 #### 一、序言与背景 - **序言**:作者从个人经历出发,表达了对于插件体系结构的兴趣,并提到了早期接触的一些工具,如Ant和Maven,这表明作者对于构建工具及模块化开发有着深厚的...
### Ant使用指南详解 ...通过本篇指南的学习,您不仅掌握了 Ant 的基础知识,还了解了如何在实际项目中应用 Ant。无论您是在寻找一种新的构建工具还是希望进一步提升现有的构建流程,Ant 都是一个值得考虑的强大选项。
第二部分:工具篇 可当JMeter工具书来进行查阅,是市面上目前为止比较全面的JMeter讲解工具。学会热门的负载工具JMeter,对各种常见协议的性能测试工作(包括自动化测试) 测试脚本不用愁。 第三部分:实践篇 ...
本篇将深入探讨如何将这两者整合,同时利用Ant Design Pro构建一个简易的权限管理系统。 一、SpringBoot与Shiro简介 1. SpringBoot:作为Spring框架的一种快速开发工具,它通过自动配置、起步依赖等特性简化了...
知名的设计规范如Salesforce、Ant Design、Element和View UI等已经成为行业内学习和借鉴的对象。 #### 二、原子设计方法论 企业级B端设计规范的构建通常采用原子设计方法论,这一理念由设计师Brad Frost提出,灵感...
第二部分:工具篇 可当JMeter工具书来进行查阅,是市面上目前为止比较全面的JMeter讲解工具。学会热门的负载工具JMeter,对各种常见协议的性能测试工作(包括自动化测试) 测试脚本不用愁。 第三部分:实践篇 ...
### PyTorch 入门实战学习笔记 #### 一、PyTorch简介 PyTorch 是一个基于 Torch 的机器学习库,它支持动态计算图,主要用于应用程序中的深度神经网络研究。PyTorch 提供了丰富的功能,如自动梯度计算、GPU 加速...
在本篇全栈多端开发实战中,我们将探讨如何构建一个涵盖后端、前端PC以及移动端的应用。核心技术栈包括后端的SpringBoot搭配MybatisPlus和Mysql数据库,前端使用Vite3、Vue3以及TypeScript,同时结合Ant-design-vue...
“构建实战篇 1:单页应用的基本配置.md”涵盖了创建Vue单页应用(SPA)的步骤,包括安装Vue CLI、生成项目模板、启动开发服务器、以及配置路由等。了解SPA的基本结构和路由管理对理解和构建Vue项目至关重要。 在...
在本篇文章中,我们将详细介绍Zuul的路径匹配机制,包括Ant风格的路径表达式、路由匹配算法等方面的知识点。 路径匹配的Ant风格定义 ----------------------------- 在Zuul中,路由匹配的路径表达式采用了Ant风格...
#### 二、软件安装步骤 1. **安装JDK 1.5.0_07**: - 下载安装文件: 访问 [Java官方网站](http://java.sun.com/) 并下载 JDK 1.5.0_07。 - 安装 JDK: 按照提示完成安装过程,并确保设置正确的 `JAVA_HOME` 环境...
"JUnit实战篇.mht"和"JUnit实战篇1.mht"很可能是两篇深入的实战文章,涵盖了在真实项目中如何运用JUnit进行测试驱动开发(TDD)或者行为驱动开发(BDD),可能包括了如何编写集成测试、如何进行测试隔离、以及如何...
通过本篇详细介绍,我们不仅了解了二维码的基础知识和开发工具,还学习了如何将ZXing集成到Android项目中。二维码作为一种便捷的信息传递方式,在日常生活中的应用越来越广泛。开发者们可以根据具体需求选择合适的...