`
hello_player
  • 浏览: 152417 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Ant 打 war 包过程

    博客分类:
  • Java
阅读更多
Ant 相关的介绍我就不详述了,网上这方面介绍还是比较多的,下面我就用一个简单的 web 应用做示例。
附件 anttest.rar 包里面是一个简单的登陆应用,输入用户和密码跳转成功页面并显示输入的值,这个工程是用 myeclispe 写的,下面我就模拟实现 myeclipse 的 tomcat 发布 web 应用,将这个应用打包到 tomcat 的 webapps 目录下。

1.构建ant环境
1)安装jdk,设置JAVA_HOME ,PATH ,CLASS_PATH。
2)下载ant 地址www.apache.org。
3)解压ant 你得到的是一个压缩包,解压缩它
4)设置ANT_HOME PATH中添加ANT_HOME目录下的bin目录。
5)测试一下你的设置。开始-->运行-->cmd进入命令行-->键入 ant 回车,如果看到
Buildfile: build.xml does not exist!
Build failed
说明配置已经OK
2.解压附件 anttest.rar 压缩包随便放到哪个目录下面,将下面的 build.xml 放在和 anttest 同一个目录下面

build.xml:

<project basedir="." default="publish" name="anttest">
	<target name="init" description="设置初始化打 war 包需要的路径变量">
		<property name="name" value="anttest"/>
		<property name="src" value="${basedir}/anttest/src"/>
		<property name="lib" value="${basedir}/anttest/WebRoot/WEB-INF/lib"/>
		<property name="webapp" value="${basedir}/anttest/WebRoot"/>
		<property name="packages" value="ant.*"/>
		
		<property name="build.src" value="${basedir}/AntBuild/anttest/src"/>
		<property name="build.dest" value="${basedir}/AntBuild/anttest/WEB-INF/classes"/>
		<property name="buildwar.dest" value="${basedir}/AntBuild/anttest"/>
		<property name="build.javadocs" value="${basedir}/AntBuild/doc"/>
		<property name="jar.dest" value="${basedir}/AntBuild/jar"/>
		<property name="war.dest" value="${basedir}/AntBuild/war"/>
		
		<property name="tomcat.home" value="D:\Program Files\Apache Software Foundation\Tomcat 6.0"/>
		<property name="j2eelib.dir" value="D:\Program Files\MyEclipse 6.5\myeclipse\eclipse\plugins\com.genuitec.eclipse.j2eedt.core_6.5.0.zmyeclipse650200806\data\libraryset\EE_5"/>
		
		<path id="classpath">
			<fileset dir="${j2eelib.dir}">
				<include name="**/*.jar"/>
			</fileset>
			<fileset dir="${lib}">
				<include name="**/*.jar"/>
			</fileset>
		</path>
	</target>
	
	<target name="prepare" depends="init" description="创建打包需要的路径,拷贝源文件到打包路径下">
		<mkdir dir="${build.src}"/>
		<mkdir dir="${build.dest}"/>
		<mkdir dir="${buildwar.dest}"/>
		<mkdir dir="${jar.dest}"/>
		<mkdir dir="${war.dest}"/>
		<copy todir="${build.src}">
			<fileset dir="${src}"/>
		</copy>
		<copy todir="${buildwar.dest}">
			<fileset dir="${webapp}"/>
		</copy>
	</target>
	
	<target name="build" depends="prepare" description="编译 java 文件,拷贝 properties 属性配置文件到编译后的路径下">
		<javac srcdir="${build.src}" destdir="${build.dest}">
			<classpath refid="classpath"/>
		</javac>
		<copy todir="${build.dest}">
			<fileset dir="${build.src}">
				<include name="**/*.properties"/>
			</fileset>
		</copy>
	</target>
	
	<target name="antwar" depends="javadoc" description="打 war 包,不将 java 文件打入包内">
		<delete dir="${build.src}"/>
		<war warfile="${war.dest}/anttest.war" webxml="${buildwar.dest}/WEB-INF/web.xml">
			<lib dir="${buildwar.dest}/WEB-INF/lib"/>
			<classes dir="${build.dest}"/>
			<fileset dir="${buildwar.dest}"/>
		</war>
	</target>
	
	<target name="publish" depends="antwar,clean" description="发布 war 包至 tomcat 目录下">
		<copy todir="${tomcat.home}/webapps">
			<fileset dir="${war.dest}">
				<include name="**/*.war"/>
			</fileset>
		</copy>
	</target>
	
	<target name="javadoc" depends="build" description="生成 java 的 API 帮助文档">
		<mkdir dir="${build.javadocs}"/>
		<javadoc packagenames="${packages}" sourcepath="${build.src}" destdir="${build.javadocs}" author="true" version="true" use="true" splitindex="true" windowtitle="${name} API" doctitle="${name}">
			<classpath refid="classpath"/>
		</javadoc>
	</target>
	
	<target name="clean" depends="init" description="清除打包用临时文件">
		<delete dir="${build.src}"/>
		<delete>
			<fileset dir="${build.dest}" includes="**/*.classes"/>
		</delete>
		<delete dir="${buildwar.dest}"/>
	</target>
</project>

注意:里面有个 j2ee 的 jar 包目录,如果要测试的话把这个目录换成本机的这个目录,然后就可以在命令行里面到这个目录下直接执行 ant 命令就可以看到效果了。

3.最后执行的结果如下:
D:\temp>ant
Buildfile: build.xml

init:

prepare:
    [mkdir] Created dir: D:\temp\AntBuild\anttest\src
    [mkdir] Created dir: D:\temp\AntBuild\anttest\WEB-INF\classes
    [mkdir] Created dir: D:\temp\AntBuild\jar
    [mkdir] Created dir: D:\temp\AntBuild\war
     [copy] Copying 4 files to D:\temp\AntBuild\anttest\src
     [copy] Copying 19 files to D:\temp\AntBuild\anttest

build:
    [javac] Compiling 2 source files to D:\temp\AntBuild\anttest\WEB-INF\classes

     [copy] Copying 2 files to D:\temp\AntBuild\anttest\WEB-INF\classes

javadoc:
    [mkdir] Created dir: D:\temp\AntBuild\doc
  [javadoc] Generating Javadoc
  [javadoc] Javadoc execution
  [javadoc] 正在装入软件包 ant.action 的源文件...
  [javadoc] 正在装入软件包 ant.form 的源文件...
  [javadoc] 正在构造 Javadoc 信息...
  [javadoc] 标准 Doclet 版本 1.5.0_06
  [javadoc] 正在构建所有软件包和类的树...
  [javadoc] 正在生成 D:\temp\AntBuild\doc\ant/action/\LoginAction.html...
  [javadoc] D:\temp\AntBuild\anttest\src\ant\action\LoginAction.java:26: 警告 -
@struts.action 是未知标记。
  [javadoc] D:\temp\AntBuild\anttest\src\ant\action\LoginAction.java:26: 警告 -
@struts.action-forward 是未知标记。
  [javadoc] 正在生成 D:\temp\AntBuild\doc\ant/form/\LoginForm.html...
  [javadoc] D:\temp\AntBuild\anttest\src\ant\form\LoginForm.java:19: 警告 - @str
uts.form 是未知标记。
  [javadoc] 正在生成 D:\temp\AntBuild\doc\overview-frame.html...
  [javadoc] 正在生成 D:\temp\AntBuild\doc\ant/action/\package-frame.html...
  [javadoc] 正在生成 D:\temp\AntBuild\doc\ant/action/\package-summary.html...
  [javadoc] 正在生成 D:\temp\AntBuild\doc\ant/action/\package-tree.html...
  [javadoc] 正在生成 D:\temp\AntBuild\doc\ant/form/\package-frame.html...
  [javadoc] 正在生成 D:\temp\AntBuild\doc\ant/form/\package-summary.html...
  [javadoc] 正在生成 D:\temp\AntBuild\doc\ant/form/\package-tree.html...
  [javadoc] 正在生成 D:\temp\AntBuild\doc\constant-values.html...
  [javadoc] 正在生成 D:\temp\AntBuild\doc\serialized-form.html...
  [javadoc] 正在生成 D:\temp\AntBuild\doc\ant/action/\class-use\LoginAction.html
...
  [javadoc] 正在生成 D:\temp\AntBuild\doc\ant/form/\class-use\LoginForm.html...
  [javadoc] 正在生成 D:\temp\AntBuild\doc\ant/action/\package-use.html...
  [javadoc] 正在生成 D:\temp\AntBuild\doc\ant/form/\package-use.html...
  [javadoc] 正在构建所有软件包和类的索引...
  [javadoc] 正在生成 D:\temp\AntBuild\doc\overview-tree.html...
  [javadoc] 正在生成 D:\temp\AntBuild\doc\index-files\index-1.html...
  [javadoc] 正在生成 D:\temp\AntBuild\doc\index-files\index-2.html...
  [javadoc] 正在生成 D:\temp\AntBuild\doc\index-files\index-3.html...
  [javadoc] 正在生成 D:\temp\AntBuild\doc\index-files\index-4.html...
  [javadoc] 正在生成 D:\temp\AntBuild\doc\index-files\index-5.html...
  [javadoc] 正在生成 D:\temp\AntBuild\doc\index-files\index-6.html...
  [javadoc] 正在生成 D:\temp\AntBuild\doc\index-files\index-7.html...
  [javadoc] 正在生成 D:\temp\AntBuild\doc\deprecated-list.html...
  [javadoc] 正在构建所有类的索引...
  [javadoc] 正在生成 D:\temp\AntBuild\doc\allclasses-frame.html...
  [javadoc] 正在生成 D:\temp\AntBuild\doc\allclasses-noframe.html...
  [javadoc] 正在生成 D:\temp\AntBuild\doc\index.html...
  [javadoc] 正在生成 D:\temp\AntBuild\doc\overview-summary.html...
  [javadoc] 正在生成 D:\temp\AntBuild\doc\help-doc.html...
  [javadoc] 正在生成 D:\temp\AntBuild\doc\stylesheet.css...
  [javadoc] 3 警告

antwar:
   [delete] Deleting directory D:\temp\AntBuild\anttest\src
      [war] Building war: D:\temp\AntBuild\war\anttest.war

clean:
   [delete] Deleting directory D:\temp\AntBuild\anttest

publish:
     [copy] Copying 1 file to D:\Program Files\Apache Software Foundation\Tomcat
6.0\webapps

BUILD SUCCESSFUL
Total time: 3 seconds
分享到:
评论
8 楼 h416373073 2014-05-27  
谢谢分享,收下了 :)
7 楼 suhuajie 2012-12-21  
<war warfile="${war.dest}/anttest.war" webxml="${buildwar.dest}/WEB-INF/web.xml"> 
            <lib dir="${buildwar.dest}/WEB-INF/lib"/> 
            <classes dir="${build.dest}"/> 
            <fileset dir="${buildwar.dest}"/> 
        </war> 

打包这一块。classes是复制了一份class的文件,还有fileset这里把里面的文件都复制了,包括class,我自己试就会多出来一份class啊
6 楼 hello_player 2012-12-13  
yvonxiao 写道
copy资源的时候不仅仅要properties文件,还要xml等其他需要被类使用的文件
编译的时候要指定编码,不然会依据你平台的默认编码进行编译

是的,如果是非本机操作的话有些东西还是需要细化下,这个就写了个大概
5 楼 hello_player 2012-12-13  
郭伟良 写道
No source files and no packages have been specified.是个什么意思?

你这个没有找到指定的文件或者文件夹,是不是有报错没有生成class文件,或者配置的目录需要根据你实际放的目录调整下
4 楼 郭伟良 2012-12-06  
No source files and no packages have been specified.是个什么意思?
3 楼 yvonxiao 2012-11-29  
copy资源的时候不仅仅要properties文件,还要xml等其他需要被类使用的文件
编译的时候要指定编码,不然会依据你平台的默认编码进行编译
2 楼 mrcai314 2012-08-30  
不错,感觉有用!
1 楼 12345678 2012-01-11  
谢谢ing

相关推荐

    java利用Ant脚本生成war包全过程

    主要为大家详细介绍了java利用Ant脚本生成war包全过程,感兴趣的朋友可以参考一下

    ant-1.10.5.jar

    ant主要是用来为我们的开发人员提供打包服务的jar包,只要用户将这个包导入Myeclipse等开发软件中就能够实现打开工作,你可以利用ant不熟将project打包称war包,然后部署到指定的服务器中。在开发过程中,当一个代码...

    jocky 混肴编译rar包(ant和插件俩个版本)

    在应用的开发过程中,我们往往都会有一个Ant脚本,通过该脚本,能够对应用进行编译、打包、发布等一系列过程。因此,Jocky的最佳切入点便是对Ant的支持。 在Ant中使用Jocky非常简单: 1. 将lib\jocky-ant.jar ...

    利用Ant和Eclipse有效地提高部署工作效率

    本文内容包括:工作场景用Eclipse3.1来创建Ant脚本Ant中使用property(属性)文件使用Ant任务从CVS中检出(checkout)源代码,并编译打包编译过程与产生不同目标环境的脚本分开执行解开WAR包利用Ant提供的filter任务...

    使用MyEclipse开发EJB

    对于前者,对Ant和java编译过程不是很了解的人来说很难很难!对于后者要把jar、war和ear的打包是分别做的,真正开发项目时哪有那么多时间呀!在这里我用一个小例子说明如何使用MyEclipse6.5快速开发EJB

    Java项目开发与毕业设计指导

    Ch01:俄罗斯方块游戏的实现 安装JDK,并正确配置环境变量(如果有疑问,可以参考任何一本java入门书籍)。... Ch02:俄罗斯方块双人对战的实现 ...具体程序执行过程可参见本书第12.5.3计算过程一节。

    沙发启动:SOFABoot是一个框架,可增强Spring Boot并与之完全兼容,并提供就绪检查,类隔离等功能。

    沙发靴 SOFABoot是Ant蚁金服开源的基于Spring Boot的研发框架,它在Spring Boot的基础上,提供了诸如Readiness Check,类隔离,日志空间隔离等等能力。在增强了Spring Boot的同时,SOFABoot提供了让用户可以在Spring...

    Apache Maven项目构建工具-其他

    10、项目信息的一致站点:使用与构建过程相同的元数据,Maven能够生成一个网站或PDF,其中包括您愿意添加的任何文档,并将有关项目开发状态的标准报告添加到该标准报告中。该信息的示例可在本网站左侧导航的底部的...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    全书一共被压缩为5个rar,这是第二个!!!! 其他的请看ID:ljtt123(本人分享) 本博客提供的所有教程的资源原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本...21.5.2 资源包 623 ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    全书一共被压缩为5个rar,这是第五个!!!! 其他的请看ID:ljtt123(本人分享) 本博客提供的所有教程的资源原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本...21.5.2 资源包 623 ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    全书一共被压缩为5个rar,这是第四个!!!! 其他的请看ID:ljtt123(本人分享) 本博客提供的所有教程的资源原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本...21.5.2 资源包 623 ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    全书一共被压缩为5个rar,这是第三个!!!! 其他的请看ID:ljtt123(本人分享) 本博客提供的所有教程的资源原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本...21.5.2 资源包 623 ...

Global site tag (gtag.js) - Google Analytics