(1)还是先上代码结构:
‘贰’ 用ant将程序编译和运行,都要做什么工作
ant是apache项目组的一个子项目,是一个基于java的构建工具。ant本身用java实现,要构建的工程的配置文件用xml格式描述,可以很方便的实现跨平台构建工作。
ant 可以从http://ant.apache.org下载,目前最新版本为1.5.4。下载完毕后直接解压缩到一个目录,例如D:\ant。
下一步我们需要设置如下的环境变量:
ANT_HOME:ant的安装目录,如果按上面方法解压缩了ant,那么这个值应该设为D:\ant
JAVA_HOME:jdk的安装目录
PATH:把%ANT_HOME%\bin目录加到path变量,以便于从命令行直接运行ant。
(1)建立build.xml
用ant编译规模较大的工程非常方便,每个工程都对应一个build.xml文件,这个文件包含与这个工程有关的路径信息和构建任务。
下面是一个最简单的build.xml文件:
<?xml version="1.0" encoding="ISO-8859-1"?>
<project name="projectTemplate" default="init" basedir=".">
<target name="init" >
<property name="lib.dir" value="lib"/>
<echo message="Hello ,lib.dir is set to ${lib.dir}" >
</echo>
</target>
</project>
每个build.xml有且仅有一个project,每个project下面可以包含多个target,每个target表示一个小的任务,每个任务负责执行一段脚本。ant有内置任务集可供使用,例如上面的echo就是在console上显示消息。
更详细的内置任务请参考http://ant.apache.org/manual/coretasklist.html
${lib.dir}表示引用一个名字叫做lib.dir的属性值,这个属性的值就是lib。
(2)运行ant
使用ant.bat可以直接运行ant,如果不带任何参数,ant会在当前路径下搜索build.xml文件,如果找到了这个文件,就运行project的default属性指定的target.我们也可以带参数来运行ant,以便选择build.xml文件和要运行的target:
ant -buildfile c:\demo\build.xml init
表示运行c:\demo\build.xml 中名字为init的target
(3)ant的目标依赖
target有一个属性depends,在其中可以指定一系列的target名字,表示在执行该target前,必须首先执行的一系列其它target。depends具有传递性,例如:targetA depends targetB,而targetB depends targetC和targetD,这样在执行targetA之前,首先执行C和D,然后执行B,最后才会执行A。
下面是个简单的例子,在执行编译的动作前,首先需要建立一个目标代码存放的目录,然后再执行编译。
<?xml version="1.0" encoding="ISO-8859-1"?>
<project name="project" default="init" basedir=".">
<target name="init" >
<property name="dist" value="dist"/>
<mkdir dir="${dist}" />
</target>
<target name="build" depends="init">
<javac srcdir="SourceCode" destdir="${dist}">
</javac>
</target>
</project>
‘叁’ 如何使用ANT在命令行进行编译和测试
一、环境变量
在网上找到ANT的压缩包,解压缩以后放到C盘根目录如下图
对,就是这个鬼样子,放在这里就可以用了,不用安装之类的
环境变量如下图:
你要定义ANT_HOME,然后让系统path找到这个ANT_HOME就行了
二、写build.xml
你的目录结构如下图:
源文件 放在src
引用的jar包放在lib
编译结果安排在classes
接下来就是build.xml了
如下,自己看吧
[html] view plain
<?xml version="1.0"?>
<project name="pojo_0428" default="prepare" basedir=".">
<property name="source.root" value="src"/>
<property name="class.root" value="classes"/>
<property name="lib.dir" value="lib"/>
<!-- class path for compilation and execution -->
<path id="basepath">
<!-- 运行时 class文件的位置 -->
<pathelement location="${class.root}" />
<!-- jar包 -->
<fileset dir="${lib.dir}">
<include name="*.jar"/>
</fileset>
</path>
<!--默认的target -->
<target name="prepare">
<delete dir="${class.root}"/>
<mkdir dir="${class.root}"/>
</target>
<!--编译 -->
<target name="compile" depends="prepare">
<javac srcdir="${source.root}"
destdir="${class.root}"
debug="on"
optimize="off"
deprecation="on">
<classpath refid="basepath"/>
</javac>
</target>
<!--执行。 案例程序的入口 依赖 compile -->
<target name="run" depends="compile">
<java classname="com.javathink.Student" fork="true">
<classpath refid="basepath"/>
</java>
</target>
</project>
‘肆’ 要怎么安装apache ant直接解压缩以后就可以了吗
直接解压缩 还差一步
那就是配置环境变量
如果是windows环境,需要设置%ANT_HOME%,并把%ANT_HOME%\bin目录全路径加入到%path%中
然后就可以用了
‘伍’ 使用Apache ant 解压远程linux服务器种某个目录下的一个war包,运行时报找不到jar命令:
你是jboss部署java程序的?
正常情况下,我建议你直接回传你的war包,然后用解压缩软件进行解压。将需要编辑的文件编辑之后,再放回war包的对应目录下就可以了。
然后将修改之后的war包重新上传至liunx服务器上,注意上传后文件包的权限问题。
‘陆’ 怎样利用jetspeed进行2次开发
jetspeed 二次开发:Portlet应用开发
一、portal
Portal是一种基于web的应用,通常用来提供个性化、单点登陆、内容集合、信息系统表现层。其中,内容集合指把不同源头的内容整合成一个网页。Portal可提供高级的个性化功能,可以让用户定制自己需要的内容。这样的portal页面对不同的用户有不同的portlet集合。
Portal页面结构如下所示:
Portal页面请求过程:①用户使用浏览器访问portal页面。②收到请求后portal服务器根据用户的个性化信息确定需要的portlet,③然后通过portlet容器调用这些portlet。④Portal服务器用portlet生成的网页片段建立portal页面,⑤发送给用户。(其中角色参考上图)
三、部署ASOPortal
a.安装MySQL数据库。将MySQL压缩包解压缩到硬盘,进入bin目录,运行winmysqladmin.exe,任务栏中出现绿灯说明MySQL服务已启动。
b.安装JDK和tomcat服务器。
c.将ASOPortal压缩包解压到tomcat的webapps/asop目录中,将WEB-INF/src/sql/asop.sql复制到MySQL的bin目录下,用命令行方式进入该目录执行“mysql-uroot<asop.sql”。
d.启动tomcat,浏览http://localhost:8080/asop/config,在数据库配置页面中修改Url为jdbc:mysql://localhost/asop?useUnicode=true&characterEncoding=UTF-8。浏览http://localhost:8080/manager/html,在Applications栏目中找到asop,点击它右面的Reload链接重新启动该应用以使新配置生效。看到Message栏中出现“OK - Reloaded application at context path /asop”表示成功。
e.浏览http://localhost:8080/asop/进入ASOPortal系统。
四、portlet应用基础
ASOPortal系统portlet执行机制:(参考第七部分例程)
a.渲染(render)请求和操作(action)请求:渲染请求会使portlet显示最初的默认页面。当显示一个portal页面时portal服务器触发该页面中所有portlet的渲染请求。当在portal页面的某个portlet中提交表单或点击操作请求链接时,portal服务器会触发该portlet的操作请求,并触发同一portal页面中其它portlet的渲染请求。
b.收到渲染请求,portlet容器根据.xreg文件中的portlet注册信息找到被请求的portlet的Action类,调用它的buildNormalContext方法,之后重定向到注册信息中指定的模板(jsp)。
c.收到操作请求,portlet容器根据名为js_peid和eventSubmit_doXxxx的请求参数调用相应portlet的Action类的doXxxx方法, setTemplate方法指定重定向去的模板(jsp)。js_peid请求参数在后面介绍。
d.注意:①在buildNormalContext方法和doXxxx方法中均可用request对象的setAttribute方法将动态内容保存到request对象中,在之后的jsp模板中用request对象的getAttribute方法取得该动态内容并显示。②若未在Action的doXxxx方法中调用setTemplate,则方法完成后重定向去该portlet上一次使用的模板。
编写ASOPortal系统的portlet应用建议步骤:①编写Jsp页面,②编写Action类和相关的实体类和DAO,③注册到.xreg文件中。
Jsp模板文件要放在WEB-INF/template-asop/jsp/portlet/html目录下,这是由配置文件TurbineResources.properties中的
services.JspService.templates=/WEB-INF/templates-asop/jsp
和JetspeedResource.properties中的
services.TemplateLocator.templateRoot=/WEB-INF/templates-asop
决定的。(TurbineResources.properties和JetspeedResource.properties在WEB-INF/conf下)
用于portlet的jsp中使用asop标签<template:dynamicUri/>来生成portlet请求URL。在提交请求时需要包含js_peid参数。(参见第七部分例程)
应用的Action类统一放到com.aerostrong.asop.portal.portlet.act
ions包中为每个应用建立的子包里,这是由TurbineResource.properties中的mole.packages=com.aerostrong.asop.portal.portlet 决定的。Action的方法中对request的操作(如getAttribute、setAttribute等)需要首先取得request对象,方法是调用作为参数传入的RunData实例的getRequest方法;对request参数的取得可使用RunData实例的getParameters().getXXX()方法,其中getXXX可以是getString、getInt、getDate等方法。(参见第七部分例程)
.xreg文件的名称理论上可以随意,为方便管理我们统一使用appName-portlet.xreg,其中appName为应用系统的名称。.xreg文件是xml格式的,注册portlet的方法就是给其中的registry元素增加一个portlet-entry字符素,具体参见第七部分例程。.xreg文件需要用UTF-8字符集保存。
五、最简单的开发环境
ASOPortal系统现已配有Ant构建文件WEB-INF/build.xml,可使用EditPlus、UltraEdit等文本编辑器编写Action类和jsp页面,修改xreg文件,之后用命令提示符模式在asop的WEB-INF目录下执行ant命令来编译。可用的命令有ant——只编译更新过的类,ant clean——清除所有已编译的文件,ant all——清除已编译的文件并全部重新编译。
使用该方法需要安装配置Ant编译工具。方法是解压缩Ant到硬盘上,设置环境变量ANT_HOME为Ant解压缩出来的目录,添加%ANT_HOME%/bin到PATH环境变量中。
.xreg文件修改或类编译后都需要重新启动应用才会生效。可通过访问http://localhost:8080/manager/html,点击Applications栏目中asop右边的Reload来重启应用。
六、配置JBuilder开发环境
习惯使用Jbuilder环境开发的同志可参考以下步骤设置Jbuilder。
a.在Jbuilder中点击菜单中的File->New->Project for Existing Code。
b.将Directry设置为asop的WEB-INF目录,name设为ASOPortal,点击Next进入下一步。
c.设置Output path为asop的WEB-INF/classes,Backup path和Working path不作要求;下面的source页中default设为WEB-INF/src/java;Required Libraries页中点击Add,在新弹出的窗口中点击New,在新弹出的窗口中设置Name为ASOPortal,点击Add,选中asop的WEB-INF/lib和WEB-INF/buildlib目录下的所有jar点击OK,选中ASOPortal点击OK。点击finish完成。
d.开发时使用Jbuilder编写Action类,用自己习惯的工具编写jsp页面并保存到前面介绍的文件夹中,手动修改.xreg文件。.xreg文件修改或类编译后需要重新启动应用才会生效。可通过访问http://localhost:8080/manager/html,点击Applications栏目中asop右边的Reload来重启应用。
七、例题:
WEB-INF/conf/AppDemo-portlet.xreg(必须用UTF-8字符集保存)
<?xml version="1.0" encoding="UTF-8"?>
<registry>
<portlet-entry name="AppDemo" hidden="false"
type="instance" parent="JSP" application="false">
<meta-info>
<title>简单应用</title>
<description>应用portlet示例</description>
</meta-info>
<classname>org.apache.jetspeed.portal.portlets.JspPortlet</classname>
<parameter name="template" value="appdemo/appDemo.jsp"
hidden="true" cachedOnName="true" cachedOnValue="true"/>
<parameter name="action" value="appdemo.AppDemoAction"
hidden="true" cachedOnName="true" cachedOnValue="true"/>
<media-type ref="html"/>
<url cachedOnURL="true"/>
<category group="Jetspeed">测试</category>
</portlet-entry>
<portlet-entry>
……
</portlet-entry>
</registry>
WEB-INF/template-asop/jsp/portlets/html/appdemo/appDemo.jsp
<%@ page contentType="text/html; charset=GB18030" %>
<%@ taglib uri="http://www.aerostrongsoft.com.cn/asop/portal/tags-template" prefix="template" %>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>
今天是:<fmt:formatDate dateStyle="FULL" value="${today}"><br>
<form action="<template:dynamicUri/>" method="post">
<input type="hidden" name="js_peid" value="<c:out value='${js_peid}'>"/>
您的姓名:<input type="text" name="user_name"/>
<input type="submit" name="eventSubmit_doWelcome" value="提交"/>
</form>
WEB-INF/src/java/com/aerostrong/asop/portal/portlet/actions/demo/AppDemoAction.java
package com.aerostrong.asop.portal.portlet.actions.appdemo;
import org.apache.jetspeed.moles.actions.portlets.JspPortletAction;
import org.apache.jetspeed.portal.Portlet;
import org.apache.turbine.util.RunData;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class AppDemoActionextends JspPortletAction{
private static Log log = LogFactory.getLog(AppDemoAction.class);
protected voidbuildNormalContext(Portlet portlet, RunData runData) {
log.trace("in");
runData.getRequest().setAttribute("today", new java.util.Date());
}
public voiddoWelcome(RunData runData, Portlet portlet) {
log.trace("in");
String name = runData.getParameters().getString("user_name");
runData.getRequest().setAttribute("userName", name);
setTemplate(runData, "appdemo/appDemoWelcome.jsp");
}
}
WEB-INF/template-asop/jsp/portlets/html/appdemo/appDemoWelcome.jsp
<%@ page contentType="text/html;charset=GB18030" %>
<%@ taglib uri="http://www.aerostrongsoft.com.cn/asop/portal/tags-template" prefix="template" %>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
欢迎您,<c:out value="${userName}"/><br>
<a href="<template:dynamicUri/>?js_peid=<c:out value='${js_peid}'/>">返回</a>
WEB-INF/conf/TurbineResources.properties
services.JspService.templates =/WEB-INF/templates-asop/jsp
mole.packages=com.aerostrong.asop.portal.portlet
WEB-INF/conf/JetspeedResources.properties
services.TemplateLocator.templateRoot=/WEB-INF/templates-asop
‘柒’ 如何在Windows上搭建Ant环境
Ant是一个用来构建项目的工具,常用来构建Java项目,因为Ant本身就是Java写的。本文介绍如何在Windows环境下最快地构建Ant环境。因为一些开源的项目下载后常常只提供Ant构建方法,而如何使用Ant一般在readme文件中说明,照做即可。
这里介绍如何快速构建 Ant 环境
要使用 Ant 首先要构建一个Ant 环境,步骤很简单:
(1)安装 jdk,设置 JAVA_HOME ,PATH ,CLASS_PATH(这些应该是看这篇文章的人应该知道的) 。
(2)下载 Ant 找一个喜欢的版本,或者最新的版本。
(3)解压 Ant 得到的是一个压缩包,解压缩它,并把它放在一个尽量简单的目录,例如D:\Ant-1.6 虽然你不一 定要这么做,但这么做是有好处的。
(4)设置 ANT_HOME PATH 中添加 ANT_HOME 目录下的bin 目录。(反正让cmd可以找到bin目录下的ant程序就可以了。)
(5)测试一下设置,开始-->运行-->cmd 进入命令行-->键入 ant -version 回车,如果看到Apache Ant(TM) version 1.8.2 compiled on December 20 2010(或是类似的版本信息)已经完成Ant 的设置。
注意,按照笔者的经验,请将解压后的ant本身的目录和需要使用ant命令构建一些东西的目标目录放置到不包含中文和空格的路径下,这样可以避免产生一些莫名其妙的问题。
‘捌’ 如何在Windows上搭建Ant环境
解压 Ant 得到的是一个压缩包,解压缩它,并把它放在一个尽量简单的目录,例如D:\Ant-1.6 虽然你不一 定要这么做,但这么做是有好处的。
(4)设置 ANT_HOME PATH 中添加 ANT_HOME 目录下的bin 目录。(反正让cmd可以找到bin目录下的ant程序就可以了。)
(5)测试一下设置,开始-->运行-->cmd 进入命令行-->键入 ant -version 回车,如果看到Apache Ant(TM) version 1.8.2 compiled on December 20 2010(或是类似的版本信息)已经完成Ant 的设置。
注意,按照笔者的经验,请将解压后的ant本身的目录和需要使用ant命令构建一些东西的目标目录放置到不包含中文和空格的路径下,这样可以避免产生一些莫名其妙的问题。
‘玖’ java,ant有什么好处
ant没有maven好,但是比较传统,个人感觉。ant可以帮你管理项目,包括搭建、加载jar包、打包、自动生成测试结果等等,超级多的功能,它就是通过你自己书写的任务来执行的,最好的好处就是通过它就确定无误地为你做一些事,有时候你总会写错什么的吧,但是用ant写好任务之后,它就会帮你全搞定了,避免了不必要的错误。
‘拾’ 搭建Java环境如何解压缩
具体解压缩方法如下:
Java压缩解压缩文件的方法有,第一中借助javajdk自带的ZipOutputStream和ZipInputStream。第二种,借助第三方jar,例如ApacheCommonsCompress和Ant。
前提,需要将Ant的ant、jar和ant-launcher、jar添加到classpath中。先创建一个Expander类,该类继承了Ant的org、apache、tools、ant、taskdefs、Expand类。
第二步:使用Expander类。