导航:首页 > 编程语言 > antjavajar

antjavajar

发布时间:2023-04-02 14:58:09

‘壹’ java,ant有什么好处

ant没有maven好,但是比较传统,个人感觉。ant可以帮你管理项目,包括搭建、加载jar包、打包、自动生成测试结果等等,超级多的功能,它就是通过你自己书写的任务来执行的,最好的好处就是通过它就确定无误地为你做一些事,有时候你总会写错什么的吧,但是用ant写好任务之后,它就会帮你全搞定了,避免了不必要的错误。

‘贰’ java如何打包

建议使用ANT打包工具,下载地址:http://apache.justdn.org/ant/binaries/apache-ant-1.6.5-bin.zip

此工具用java编写,跨平台,能实现很多功能:编译、打包、运行、文件操作、数据库操作、自定义任务等。

主要使用方法:在工程目录下编写build.xml配置文件,然后运行ant即可:
#ant

#java -jar ant.jar
下面给你提供一个例子,是jakarta-oro-2.0.8的包的build.xml
<?xml version="1.0"?>
<project default="jar">

<!-- Allow properties following these statements to be overridden -->
<!-- Note that all of these don't have to exist. They've just been defined
incase they are used. -->
<property file="build.properties"/>
<!--
<property file=".ant.properties"/>
<property file="${user.home}/.ant.properties"/>
<property file="default.properties"/>
-->

<!-- prepare target. Creates build directories. -->
<target name="splash">
<splash imageurl="./ant_logo_medium.gif"/>
</target>

<target name="prepare" depends="splash" description="Creates build directories.">
<tstamp>
<format property="DATE" pattern="yyyy-MM-dd hh:mm:ss" />
</tstamp>
<mkdir dir="${build.dest}"/>
<mkdir dir="${build.dest}/META-INF"/>
< todir="${build.dest}/META-INF">
<fileset dir="${top.dir}">
<include name="LICENSE"/>
</fileset>
</>
<mkdir dir="${build.tests}"/>
<available file="${jakarta-site2.dir}/lib" type="dir"
property="AnakiaTask.present"/>
</target>

<target name="prepare-error" depends="prepare"
description="Prints error message for prepare target."
unless="AnakiaTask.present">
<echo>
AnakiaTask is not present! Please check to make sure that
velocity.jar is in your classpath.
</echo>
</target>

<!-- lib target. Compiles the library classes only -->

<target name="lib" depends="prepare"
description="Compiles the library classes only.">
<javac srcdir="${build.src}"
destdir="${build.dest}"
excludes="examples/**,tools/**"
debug="${debug}"
deprecation="${deprecation}"
optimize="${optimize}"/>
</target>

<!-- examples target. Compiles the example classes. -->

<target name="examples" depends="prepare,lib"
description="Compiles the example classes.">
<javac srcdir="${build.src}"
destdir="${build.dest}"
includes="examples/**"
debug="${debug}"
deprecation="${deprecation}"
optimize="${optimize}"/>
</target>

<!-- tools target. Compiles the tool classes. -->

<target name="tools" depends="prepare,lib"
description="Compiles the tool classes.">
<javac srcdir="${build.src}"
destdir="${build.dest}"
includes="tools/**"
debug="${debug}"
deprecation="${deprecation}"
optimize="${optimize}"/>
</target>

<!-- tests target. Compiles and runs the unit tests. -->

<target name="tests" depends="prepare,lib"
description="Compiles and runs the unit tests.">
<javac srcdir="${build.src}/tests"
destdir="${build.tests}"
debug="${debug}"
deprecation="${deprecation}"
optimize="${optimize}"/>
</target>

<!-- jar target. Compiles the source directory and creates a .jar file -->

<target name="jar" depends="lib" description="Compiles the source directory and creates a .jar file.">
<jar jarfile="${top.dir}/${final.name}.jar"
basedir="${build.dest}"
includes="org/**,META-INF/**"
excludes="**/package.html,**/overview.html">
<manifest>
<section name="org/apache/oro">
<attribute name="Specification-Title"
value="Jakarta ORO" />
<attribute name="Specification-Version"
value="${version}" />
<attribute name="Specification-Vendor"
value="Apache Software Foundation" />
<attribute name="Implementation-Title"
value="org.apache.oro" />
<attribute name="Implementation-Version"
value="${version} ${DATE}" />
<attribute name="Implementation-Vendor"
value="Apache Software Foundation" />
</section>
</manifest>
</jar>
</target>

<!-- javadocs target. Creates the API documentation -->

<target name="javadocs" depends="prepare"
description="Creates the API documentation.">
<mkdir dir="${javadoc.destdir}"/>
<javadoc packagenames="org.apache.oro.io,org.apache.oro.text,org.apache.oro.text.regex,org.apache.oro.text.awk,org.apache.oro.text.perl,org.apache.oro.util"
sourcepath="${build.src}"
destdir="${javadoc.destdir}"
overview="${build.src}/org/apache/oro/overview.html"
author="true"
version="true"
windowtitle="${name} ${version} API"
doctitle="${name} ${version} API"
header="<a href='http://jakarta.apache.org/oro/' target=_top><img src='{@docroot}/../images/logoSmall.gif' alt='Jakarta ORO' width=48 height=47 align=center border=0 hspace=1 vspace=1></a>"
bottom="Copyright © ${year} Apache Software Foundation. All Rights Reserved.">
</javadoc>
<replace file="${javadoc.destdir}/overview-frame.html"
token="{@docroot}" value="."/>
<replace dir="${javadoc.destdir}" includes="**/*.html"
token="@version@" value="${version}"/>
</target>

<!-- docs target. Creates project web pages and documentation. -->
<target name="docs" depends="prepare-error,lib,examples"
description="Creates the project web pages and documentation."
if="AnakiaTask.present">
<taskdef name="anakia" classname="org.apache.velocity.anakia.AnakiaTask">
<classpath>
<fileset dir="${jakarta-site2.dir}/lib">
<include name="*.jar"/>
</fileset>
</classpath>
</taskdef>

<anakia basedir="${docs.src}" destdir="${docs.dest}/"
extension=".html" style="./site.vsl"
projectFile="stylesheets/project.xml"
excludes="**/stylesheets/** manual/** empty.xml"
includes="**/*.xml"
lastModifiedCheck="true"
templatePath="${jakarta-site2.dir}/xdocs/stylesheets">
</anakia>

< todir="${docs.dest}/images" filtering="no">
<fileset dir="${docs.src}/images">
<include name="**/*.gif"/>
<include name="**/*.jpeg"/>
<include name="**/*.jpg"/>
</fileset>
</>

<mkdir dir="${docs.dest}/classes"/>
<mkdir dir="${docs.dest}/classes/examples"/>
< todir="${docs.dest}/classes/examples" filtering="no">
<fileset dir="${build.dest}/examples">
<include name="MatcherDemoApplet.class"/>
</fileset>
</>
<mkdir dir="${docs.dest}/classes/org"/>
< todir="${docs.dest}/classes/org" filtering="no">
<fileset dir="${build.dest}/org">
<include name="**/*.class"/>
</fileset>
</>
</target>

<!-- package target -->

<target name="package" depends="jar,javadocs,docs"
description="Creates a distribution directory tree.">
<mkdir dir="${final.dir}"/>
< todir="${final.dir}/src">
<fileset dir="${code.src}"/>
</>
<!-- BEGIN_REMOVE_THIS -->
<!-- Remove this when there's a first draft of the manual. -->
< todir="${final.dir}/docs">
<fileset dir="${docs.dest}">
<exclude name="manual/**"/>
</fileset>
</>
<!-- END_REMOVE_THIS -->

< file="${top.dir}/build.xml" tofile="${final.dir}/build.xml"/>
< file="${top.dir}/build.properties"
tofile="${final.dir}/build.properties"/>

< file="${top.dir}/LICENSE" tofile="${final.dir}/LICENSE"/>
< file="${top.dir}/ISSUES" tofile="${final.dir}/ISSUES"/>
< file="${top.dir}/CHANGES" tofile="${final.dir}/CHANGES"/>
< file="${top.dir}/COMPILE" tofile="${final.dir}/COMPILE"/>
< file="${top.dir}/CONTRIBUTORS"
tofile="${final.dir}/CONTRIBUTORS"/>
< file="${top.dir}/README" tofile="${final.dir}/README"/>
< file="${top.dir}/STYLE" tofile="${final.dir}/STYLE"/>
< file="${top.dir}/TODO" tofile="${final.dir}/TODO"/>
< file="${top.dir}/${final.name}.jar" tofile="${final.dir}/${final.name}.jar"/>
</target>

<!-- package-zip target. Packages the distribution with ZIP -->

<target name="package-zip" depends="package"
description="Packages the distribution as a zip file.">
<zip zipfile="${top.dir}/${final.name}.zip" basedir="${top.dir}/"
includes="**/${final.name}/**" excludes="**/.cvsignore"/>
</target>

<!-- Packages the distribution with TAR-GZIP -->

<target name="package-tgz" depends="package"
description="Packages the distribution as a gzipped tar file.">
<tar tarfile="${top.dir}/${final.name}.tar"
basedir="${top.dir}" excludes="**/**">
<tarfileset dir="${final.dir}/..">
<include name="${final.name}/**"/>
<exclude name="**/.cvsignore"/>
</tarfileset>
</tar>
<gzip zipfile="${top.dir}/${project}-${version}.tar.gz" src="${top.dir}/${project}-${version}.tar"/>
</target>

<!-- Packages the distribution with ZIP and TAG-GZIP -->

<target name="package-all" depends="package-zip, package-tgz">
</target>

<!-- Makes an attempt to clean up a little. -->

<target name="clean"
description="Removes generated artifacts from source tree.">
<delete dir="${build.dest}"/>
<delete dir="${javadoc.destdir}"/>
<delete dir="${final.dir}"/>
<delete file="${top.dir}/${final.name}.jar"/>
<delete file="${top.dir}/${final.name}.tar"/>
<delete file="${top.dir}/${final.name}.tar.gz"/>
<delete file="${top.dir}/${final.name}.zip"/>
<delete>
<fileset dir="${top.dir}" includes="velocity.log*"/>
</delete>

</target>
</project>

build.xml文件的编写可参见ant发行版中的使用文档

你也可以自己编写脚本打包,使用jdk发行版中的jar命令,例如:
#jar cmf myManifestFile myFile.jar *.class
注意还需要自己编写MANIFEST.MF文件配置包属性。具体可以参见javadoc

当然还可以使用集成开发环境提供的打包工具,如JBuilder提供打包工具,但这样程序的移植性不强,建议不要使用,就使用ant比较好。

‘叁’ Java:使用Ant可以打包出可以通过build.xml直接运行的jar包,但为什么引入了第三方的

LZ 你需要把你引用的第三方包依赖包放在ANT安装目录的lib目录下,要不是弄不进来的

‘肆’ javac -cp ant.jar -d . *.java

java源代码里用来ant.jar里的类。所以用 -cp指定。
-d . 编译生成的class文件都放到当前目录里。
*.java 编译当前目录下的所有java源文件。

‘伍’ Java:使用Ant构建完工程,但需要引用第三方的Jar,这个Jar应该放在哪里呢

ant 的 build.xml 中指定引用的位置,,,,族型烂,,其实,放哪都可以,但建议放 项目兆漏目录的lib目录里面。

~~~~~~~btw,换maven2吧,租伍这样包的管理也方便

‘陆’ 如何将源代码编译成jar包

先打开命令提示符(win2000或在运行框里执行cmd命令,win98为DOS提示符),输入jar Chelp,然后回车(如果你盘上已经有了jdk1.1或以上版本),看到什么:

用法:jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目录] 文件名 ...

选项:

-c 创建新的存档

-t 列出存档内容的列表

-x 展开存档中的命名的(或所有的〕文件

-u 更新已存在的存档

-v 生成详细输出到标准输出上

-f 指定存档文件名

-m 包含来自标明文件的标明信息

-0 只存储方式;未用zip压缩格式

-M 不产生所有项的清单(manifest〕文件

-i 为指定的jar文件产生索引信息

-C 改变到指定的目录,并且包含下列文件:

如果一个文件名是一个目录,它将被递归处理。

清单(manifest〕文件名和存档文件名都需要被指定,按'm' 和 'f'标志指定的相同顺序。

首先在资源文件当前目录写一个清单文件example.mf

mf文件应是以下格式:
第一行为:
Main-Class: Hello
然后最少两个空行。
其中的Hello.class是你写的程序中main函数所在的那个类名。
有两点必须记得:
1,在第一行中"Main-class:"之后一定要有一个空格。后有最少两个空行
2,类名不能写成Hello.class的格式,要省了后辍。
我试过了,你错的原因是"Main-class:"之后没有一个空格。
在CLASS目录下运行:jar cfm example.jar example.mf A.class B.class

示例1:将两个class文件存档到一个名为 'classes.jar' 的存档文件中:


jar cvf classes.jar Foo.class Bar.class

示例2:用一个存在的清单(manifest)文件 'mymanifest' 将 foo/ 目录下的所有文件存档到一个名为 'classes.jar' 的存档文件中:

jar cvfm classes.jar mymanifest -C foo/ .

来个小例子试试看:

我们只有一个HelloWorld,如下:

public class HelloWorld{
public static void main(String[ ] args){
System.out.println("Hi, Hello World!");
}
}
将这个java文件存到C盘跟目录下,ok,接下来,

在先前打开的命令提示符下(跳转到C盘提示符下),我们输入javac HelloWorld.java,然后继续输入:jar cvf hello.jar HelloWorld.class,回车后去你的C盘看看,多了什么,没错 hello.jar 。

基本的步骤我们现在都知道了,你可以自己去尝试一下随着jar后面的参数的不同,结果有什么变化。
紧接着我们看看如何运行我们的jar包。

在进入正题之前,你要先打开我们刚刚做好的jar包看看,多了什么呢,META-INF目录?再看看里面是什么,还有一个MANIFEST.MF文件是不是?用文本编辑器(我这里是UltraEdit)打开它看看:

Manifest-Version: 1.0
Created-By: 1.4.2 (Sun Microsystems Inc.)

就是这样。这里我们对它进行修改,加一句:Main-Class: HelloWorld (在第三行)。这个就是我们之前写的那个类,也就是我们的入口类。也即,

Manifest-Version: 1.0
Created-By: 1.4.2 (Sun Microsystems Inc.)
Main-Class: HelloWorld

接下来,我们在命令提示符里执行:

jar umf MANIFEST.MF app.jar (应该是hello.jar吧)

这样我们使用了我们自己的MANIFEST.MF文件对原来默认的进行了更新。你不妨可以再进去看看是不是添上了Main-
Class: HelloWorld这一句。 (是吗,我怎么没试出来,提示
java.io.FileNotFoundException:MANIFEST.MF(系统找不到指定的文件)怎么回事?
)

Ok,这个最后的一步了,来验证我们做的一切,在命令提示符中输入:

java -jar hello.jar(执行)

出现了什么, Hi, Hello World!

我们再来看看jar文件在tomcat中发布,注意:在tomcat中我们就不能再用jar这种格式,而改war格式,它是专门用于web应用的,其实整个过程下来基本上和jar是类似的:

先准备我们要打包的资源。

找到存放tomcat的webapps目录,进到其中,新建一个文件夹,这里命名为hello,再进去新建WEB-INF文件夹,再进去新
建 classes文件夹,此时我们也将我们唯一的servlet,HelloWorld.java放到这里,在与classes目录同级下建立一文
件 web.xml。Ok,目前我们初步建立了一个简单的web应用。

这是HelloWorld.java:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
res.setContentType("text/html");
PrintWriter out = res.getWriter();
out.println("");
out.println("");
out.println("");
out.println("Hello, World!");
out.println("");
}
}//end here!

对它编译。下面是web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.
//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>
</web-app>

在命令提示符下进到先前创制的hello目录下,执行 jar cvf hello.war * ,我们便得到hello.war。将它拷贝至webapps目录下,ok,来看最后一步,打开tomcat的目录conf中的server.xml,加入:

<Context path="/hello" docBase="hello.war" debug="0" reloadable="true"/>
大功告成!运行它,启动tomcat,后在浏览器中输入http://localhost:8080/hello/HelloWorld,有了吗?

最后,如果你想用ant来完成以上的打包活动,下面就告诉你:
对于jar来说。在build.xml中,

<target name="jar">
<jar destfile="${app_home}/hello.jar">
<fileset dir="${dest}" includes="**"/>
<!--fileset dir="${dest}" includes="**/action.properties"/-->
</jar>
</target>
对于war,

<war warfile="hello.war" webxml="./WEB-INF/web.xml">
<fileset dir="html"/>
<lib dir="lib/">
<exclude name="oracle*.jar"/>
</lib>
<classes dir="build/servlets">
<include name="**/*.class"/>
</classes>
</war>
好了,就这么多,希望对你有点帮助。:)

补充:

jar基本操作:

1. 创建jar文件
jar cf jar-file input-file(s)
c---want to Create a JAR file.
f---want the output to go to a file rather than to stdout.
eg: 1)jar cf myjar.jar query_maintain_insert.htm
2)jar cvf myjar.jar query_maintain_insert.htm
v---Proces verbose(详细的) output.

3)jar cvf myjar.jar query_maintain_insert.htm mydirectory
4)jar cv0f myjar.jar query_maintain_insert.htm mydirectory
0---don't want the JAR file to be compressed.
5)jar cmf MANIFEST.MF myjar.jar yahh.txt
m---Used to include manifest information from an existing manifest file.
6)jar cMf MANIFEST.MF myjar.jar yahh.txt
M---the default manifest file should not be proced.
7)jar cvf myjar.jar *
*---create all contents in current directory.

2. 察看jar文件
jar tf jar-file
t---want to view the Table of contents of the JAR file.
eg: 1)jar vft yahh.jar
v---Proces verbose(详细的) output.

3. 提取jar文件
jar xf jar-file [archived-file(s)]
x---want to extract files from the JAR archive.
eg: 1)jar xf yahh.jar yahh.txt(仅提取文件yahh.txt)

2)jar xf yahh.jar alex/yahhalex.txt(仅提取目录alex下的文件yahhalex.txt)

3)jar xf yahh.jar(提取该jar包中的所有文件或目录)

4. 修改Manifest文件
jar cmf manifest-addition jar-file input-file(s)
m---Used to include manifest information from an existing manifest file.

5. 更新jar文件
jar uf jar-file input-file(s)
u---want to update an existing JAR file

‘柒’ Ant运行java类问题,怎么解决

ant有<javac>标签可以编译java文件,<java>标签运行class文件,<jar>标签打包java文件。例如

<javacsrcdir="src"
腔伍destdir="build"
classpath="xyz.jar"
debug="on"
source="1.8"
/>

这个表示编译src下的所有java文件到build目录,依赖xyz.jar

<javaclassname="test.Main">
<argvalue="-h"/>
<classpath>
<pathelementlocation="dist/test.jar"/>
<pathelementpath="${java.class.path}"/>庆猜
伍差或</classpath>
</java>

这个是运行一个class类的例子。

阅读全文

与antjavajar相关的资料

热点内容
表格中的文件夹怎样设置 浏览:476
em78单片机 浏览:960
splitjava空格 浏览:248
电脑怎么谷歌服务器地址 浏览:515
nx自定义工具启动宏命令 浏览:101
程序员怎么解决无法访问互联网 浏览:303
java访问本地文件 浏览:747
瓦斯琪服务器怎么用 浏览:22
安卓主题用什么app 浏览:747
修改服务器pci地址空间 浏览:321
程序员将来去哪里 浏览:966
虚幻5创建c无法编译 浏览:189
javaweb项目设计 浏览:407
国家反诈app紧急联系人怎么填 浏览:191
单片机旋转led 浏览:340
杜洋单片机官网 浏览:467
法国加密货币税务 浏览:28
stringslinux 浏览:944
gis服务器里文件如何处理 浏览:829
sec加密数字资产 浏览:930