`

ant 打包 jar 可执行

阅读更多

 

打包成的jar可以执行需要注意的是 

 

1、依赖外部jar包的情况下,怎么可以让我们自己写的程序找到依赖的外部jar包

 

2、src目录下面的一些配置文件或者资源文件我们也需要拷贝到我们的jar包中

 

3、MANIFEST.MF文件中Class-Path 选项可以根据我们添加jar后自动修改,而不用我们手动在后面写一大段的

繁琐代码

 

<!-- convert build.classpath to mf.classpath (the string needed for the manifest task) -->
  <pathconvert property="mf.classpath" pathsep=" ">
      <path refid="build.classpath" />
      <flattenmapper />
  </pathconvert>

  <!-- now build the manifest file, using mf.classpath -->
  <tstamp/><!-- needed for TODAY -->
  <manifest file="MANIFEST.MF">
    <attribute name="Built-By" value="${manifest.built.by}"/>
    <attribute name="Created-By" value="${manifest.created.by}"/>
    <attribute name="Main-Class" value="${manifest.main.class}"/>
    <attribute name="Implementation-Version" value="${version.number}-b${build.number}"/>   
    <attribute name="Built-Date" value="${TODAY}"/>
    <attribute name="Class-Path" value="${mf.classpath}" />
  </manifest>

 

 

写好 MANIFEST.MF后就需要在打包的时候包含在我们的jar文件中,同时要注意依赖jar包的位置,一般我们都是放在lib目录下面。

 <!-- create the jar file, including the manifest file we just created -->
  <jar basedir="${dest.dir.classes}" 
       destfile="${package.file}"
       includes="**/*.*"
       excludes="**/*Test*"
       manifest="MANIFEST.MF" />

  <!-- copy all the jar files out to the destination directory (dest.dir) -->
  <copy todir="${dest.dir}">
    <fileset dir="${lib.dir}">
      <exclude name="junit*" />
      <include name="*.jar"/>
      <include name="*.zip"/>
    </fileset>
  </copy>

 

当打包完成后,我们就可以到deploy目录下面双击我们的jar包来运行了。可以看到界面(前提是你有提供界面)

打包后的目录结构:

 



 

我的界面如下



 

 

bulid.xml文件的内容

<?xml version="1.0" encoding="UTF-8"?>
<project name="test" default="jar">

  <!-- Name of the output .jar file -->
  <property name="jar.name" value="jar_name.jar" />

  <!-- Base directory for distribution target -->
  <property name="deploy.home" value="deploy" />

  <!-- Base directory for compilation targets -->
  <property name="build.home" value="." />

  <!-- Main class -->
  <property name="main.class" value="com.chen.test.JTabbedPane2" />
 
  <!-- The base directory for all libraries (jar) files -->
  <property name="lib.home" value="lib" />

	<pathconvert property="mf.classpath" pathsep=" ">  
		  	      <mapper>  
		  	        <chainedmapper>  
		  	          <!-- remove absolute path -->  
		  	          <flattenmapper />  
		  	  
		  	          <!-- add lib/ prefix -->  
		  	          <globmapper from="*" to="lib/*" />  
		  	        </chainedmapper>  
		  	      </mapper>  
		  	      <path>  
		  	        <!-- lib.home contains all jar files,   
		  	                                        in several subdirectories -->  
		  	        <fileset dir="${lib.home}">  
		  	          <include name="**/*.jar" />  
		  	        </fileset>  
		  	      </path>  
		  	  
	</pathconvert> 
	
	<path id="classpath"> 
		<fileset file="${lib.dir}" includes="**/*.jar" />
	</path>	

    <target name="compile">
    	<mkdir dir="${deploy.home}/classes"/>
    	
    	<copydir dest="${deploy.home}/classes" src="resources"></copydir>
      	<copy todir="${deploy.home}/classes">
      		<fileset dir="src">
      			<exclude name="**/*.java"/>
      			<include name="**/*.*"/>
      		</fileset>
      	</copy>
    	<javac destdir="${deploy.home}/classes" classpathref="classpath" encoding="UTF-8">
    		<src path="src"/>
    		<src path="resources"/>
    	</javac>
    </target>
	<!-- Next, my package task uses that classpath -->
	<target name="jar" depends="compile">
	  
	  <!-- now build the manifest file, using mf.classpath -->
	  <tstamp/><!-- needed for TODAY -->
		  <manifest file="MANIFEST.MF">
		    <attribute name="Main-Class" value="${main.class}"/>
		    <attribute name="Built-Date" value="${TODAY}"/>
		    <attribute name="Class-Path" value="${mf.classpath}" />
		  </manifest>
		  
	  <!-- create the jar file, including the manifest file we just created -->
		
	<mkdir dir="${deploy.home}/lib"/>
	  <jar basedir="${deploy.home}/classes" 
	       destfile="${deploy.home}/${jar.name}"
	       includes="**/*.*"
	       manifest="MANIFEST.MF" />

	  <!-- copy all the jar files out to the destination directory (dest.dir) -->
	  <copy todir="${deploy.home}/lib">
	    <fileset dir="${lib.home}">
	      <exclude name="junit*" />
	      <include name="*.jar"/>
	      <include name="*.zip"/>
	    </fileset>
	  	
	  </copy>

	  <delete dir="${deploy.home}/classes" />
		
	</target>
</project>

 

 

 

 

分享到:
评论
1 楼 huxin889 2016-06-12  
第三四张图片裂了

相关推荐

    ANT打包可执行JAR包脚本

    非maven项目中的ANT打包可执行JAR包脚本,包括配置文件、第三方jar打包

    jar打包成exe

    用来将Java应用程序转成Windows本地可执行文件 (.exe)。提供了本地弹出屏幕,应用程序图标,JRE搜索或使用绑定的JRE,启动失败反馈,传递命令行参数,ANT编译脚本等功能。

    apache-ant-1.9.3-src.tar

    虽然ANT可调用的外部应用种类非常丰富,但其实最常用的就2,3个:比如javac javadoc jar等。 Ant的优点 Ant是Apache软件基金会JAKARTA目录中的一个子项目,它有以下的优点。 跨平台性。Ant是纯Java语言编写的,所...

    apache-ant-1.9.3.rar

    任务定义了Ant实际执行的命令。Ant中的任务可以为3类。 (1) 核心任务。核心任务是Ant自带的任务。 (2) 可选任务。可选任务是来自第三方的任务,因此需要一个附加的JAR文件。 (3) 用户自定义的任务。用户自定义...

    ant1.9资源

    在这里定义了default属性的值为sayBaseDir,即当运行ant命令时,若未指明执行的target时,默认执行的target的sayBaseDir,同时还定义了basedir属性的值为E:"apache-ant-1.7.0,进入E盘后运行ant命令,可看到运行的...

    将项目打成war包

    特别简单 只需照着文档操作,就可实现。 ant是对项目编译,打包,部署 编译:将*.java文件打包成*.class文件 打包:将编译后的*.calss文件打包成 jar或war包; 部署:将打包后的war文件部署到制定的web应用服务器中...

    launch4j java exe制作包工具

     Launch4j是一个开源的安装程序,将您的jar文件打包成操作系统的本地可执行文件,支持Windows, MacOS,Linux和Solaris。对于JRE,您可以嵌入在安装文件中,也可以在安装时提示用户下载正确的JRE版本。Launch4j更加...

    Maven权威指南 很精典的学习教程,比ANT更好用

    执行单元测试 4.12.1. 忽略测试失败 4.12.2. 跳过单元测试 4.13. 构建一个打包好的命令行应用程序 5. 一个简单的Web应用 5.1. 介绍 5.1.1. 下载本章样例 5.2. 定义这个简单的Web应用 5.3. 创建这个...

    springboot参考指南

    打包可执行jar和war文件 ii. 59. Spring Boot Gradle插件 i. 59.1. 包含该插件 ii. 59.2. 声明不带版本的依赖 i. 59.2.1. 自定义版本管理 iii. 59.3. 默认排除规则 iv. 59.4. 打包可执行jar和war文件 v. 59.5. 就地...

    iuhyiuhkjh908u0980

    在windows系统中,命令行中执行ant命令时,当指定的 构建脚本文件中包含中文字符,而构建脚本文件的编码是UTF-8时将会 Invalid byte 1 of 1-byte UTF-8 sequence. 的错误.这个问题尚未 知解决,故先采用GBK的编码. 2.在...

    网页式网络游戏源代码(flash)

    4.把NetGameFalsh文件夹里面的NetGame.swf的打包成.exe文件(如果你的电脑是可信任flash的就不需要) 5.下载spring和hibernate的包,然后把相关的jar文件放到FlashNetGame目录的lib文件夹下 6.准备好上面的那些工作...

    java笔试题算法-CompGeom:在可能的情况下使用任意精度算术的计算几何库,用Java编写

    jar编译除src/test/目录中的源文件之外的所有源文件,并将所有已编译的类打包到一个 JAR 文件中。 如果未安装 Ant,我建议将项目导入 IDE(如 Eclipse、NetBeans 或 IntelliJ IDEA)中,让 IDE 编译文件,或创建已...

    jarbundler-2.2.0

    本资源是最新版jarbundler,可用于将 jar包打成Mac上的.app可执行程序,通过ant配置即可,具体使用方法和配置信息请参考博客 http://blog.csdn.net/qq_1991/article/details/78285954。分享是美德。

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

    bin——bin目录包含了Aglet平台所有的可执行程序,比如掌控接收Agent的后台(daemon)程序,另外bin目录还包含了进一步安装需要的文件。 cnf——cnf目录包含了Aglet平台的配置文件。 public——public目录包含了...

    service-info-loader-app

    该应用程序被打包成一个可执行的 WAR 文件,该文件可以从命令行执行,也可以在 servlet 容器中执行。 客户端网页是用 AngularJS 实现的。 我还使用 Angular Translate 来试验国际化的可能性。 我为 Ant 和 Maven ...

    xmljava系统源码-GradleDemo:Gradle插件开发极简教程

    xml java系统源码 #Gradle入门教程 #一、简介 Gradle是一种构建工具,...一个Task表示一个逻辑上较为独立的执行过程,比如编译Java源代码,拷贝文件,打包Jar文件,甚至可以是执行一个系统命令或者调用Ant。另外,一个

    网狐荣耀版开发使用常见问题解答

    在游戏使用过程中,输赢控制是必不可少的,那怎么怎么进行游戏控制呢?下面简单简介。 一、控制账号的注册。 二、控制客户端的生成。 三、进行控制。 就这三步即可实现控制。 二十八、网狐荣耀版手机端与pc端热...

    Maven2 的新特性.7z

    • package,已发布的格式,如jar,将已编译的源代码打包。 • integration-test,在集成测试可以运行的环境中处理和发布包。 • verify,运行任何检查,验证包是否有效且达到质量标准。 • install,把包安装在...

    新版Android开发教程.rar

    ----------------------------...• 优化的图形库 包括定制的 2D 图形库, 3D 图形库基于 OpenGL ES 1.0 (硬件加速可选) • SQLite SQLite SQLite SQLite 用作结构化的数据存储 • 多媒体支持 包括常见的音频、视频和...

    Spring Boot中文文档.rar

    创建一个可执行的Jar 12.接下来要阅读的内容 III。使用Spring Boot 13.构建系统 13.1.依赖管理 13.2.Maven 13.2.1.继承Starter Parent 13.2.2.在没有父POM的情况下使用Spring Boot 13.2.3....

Global site tag (gtag.js) - Google Analytics