`

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打包

    java ant打包jar

    下面是一个简单的Ant构建文件(build.xml)示例,展示了如何使用Ant打包JAR: ```xml &lt;project name="MyProject" default="jar"&gt; ${build.dir}/classes"/&gt; &lt;property name="jar.dir" value="${build.dir}/jar...

    ant.jar,ant-junit.jar,ant-launcher.jar,ant-trax.jar

    例如,你可以使用ant.jar来编译源代码、创建类路径、打包JAR文件,甚至运行单元测试。这个库是使用Ant进行项目构建的基础,几乎所有的Ant任务都依赖于它。 2. ant-junit.jar:此文件扩展了Ant的功能,使其能够集成...

    emma_ant.jar,emma.jar合包

    `emma_ant.jar`作为Ant的任务库,使得开发者可以通过Ant脚本执行Emma的代码覆盖率分析。 3. **使用Emma进行代码覆盖率分析** - 首先,你需要在Ant构建文件(通常是build.xml)中引入Emma的任务。 - 然后,配置...

    ant.jar________打包工具

    Ant.jar的使用并不复杂,开发者只需要编写符合规范的build.xml文件,然后通过命令行运行`ant [target]`,Ant就会根据文件中的定义自动执行相应的构建任务。此外,大多数现代Java IDE,如Eclipse和IntelliJ IDEA,都...

    ant打jar包时, 怎么把所依赖的jar包与从源码中编译过来class文件合并成最终的一个jar?

    在Java开发过程中,将源代码编译为class文件并打包...通过这种方式,你可以轻松地管理项目依赖,并创建一个独立的可执行jar,便于分发和部署。同时,这也适用于那些不希望使用更现代的构建工具如Maven或Gradle的项目。

    ant.jar下载

    使用命令行,可以通过`java -jar ant.jar`的方式启动Ant,配合构建文件执行相应的构建任务。 总结来说,Apache Ant是Java开发中的一个强大构建工具,通过XML描述构建过程,实现编译、测试、打包等任务的自动化。它...

    ant.jar最新包

    总之,Ant.jar 是 Java 开发中不可或缺的工具,它为开发者提供了一种强大且灵活的方式来自动化构建流程,无论是简单的编译还是复杂的部署,Ant 都能胜任。通过熟练掌握 Ant 的使用,开发者可以提高工作效率,确保...

    ant脚本编译jar

    `&lt;manifest&gt;`部分用于添加`JAR`的清单文件,`Main-Class`属性指定了程序的主类,使得`JAR`可以作为可执行文件运行。 在实际项目中,可能还需要其他任务,比如清理(`clean`)构建输出,或者进行单元测试(`junit`)...

    mac下ant打包android

    最后,运行`ant release -Dchannel=your_channel_name`命令,Ant会根据指定的渠道名执行打包操作,生成对应的APK文件。 总之,Mac下使用Ant对Android App进行多渠道打包是一种常见的做法,它允许开发者灵活地定制...

    ant 将依赖的jar包和classes文件一起打成可执行jar

    标题中的“ant将依赖的jar包和classes文件一起打成可执行jar”指的是使用Apache Ant工具来构建一个包含依赖库和编译后类文件的Java应用程序可执行JAR文件。Ant是一个基于XML的构建工具,它允许开发者通过定义任务来...

    java项目ant打包脚本

    综上所述,`java项目ant打包脚本`是Java开发过程中不可或缺的一部分,它通过Ant工具和`build.xml`配置文件实现了项目的自动化构建,提高了开发效率并确保了构建的一致性。理解并熟练掌握Ant打包脚本的编写和使用,...

    java的Ant打包工具

    Apache Ant的版本`apache-ant-1.8.2-bin`包含了Ant的二进制分发包,其中包含了Ant的可执行文件和必要的库文件,可以直接解压使用。 总之,Java的Ant打包工具是项目自动化构建的利器,通过灵活的配置和强大的功能,...

    ant打包时编码 GBK 的不可映射字符.txt

    ### ant打包时编码 GBK 的不可映射字符 #### 背景介绍 在软件开发过程中,使用构建工具如Ant来自动化编译、打包等任务是十分常见的做法。但是,在处理包含非ASCII字符(例如中文)的源代码时,可能会遇到字符编码...

    apache-ant(jar包).zip

    Ant的核心概念是任务(Tasks),这些任务是可执行的单元,可以是Java类或者是Ant内建的任务。例如,`javac`任务用于编译Java源代码,`jar`任务用于创建JAR文件,`copy`任务用于复制文件,而`mkdir`任务则用于创建...

    ant打包工具

    **Ant打包工具详解** Ant是Apache软件基金会Jakarta项目下的一个构建工具,它以其灵活性和可扩展性在Java开发领域中被广泛应用。Ant基于XML,它的主要任务是编译源代码、创建JAR文件、执行测试、部署应用程序等。...

    ant打包

    5. **打包JAR**:使用`&lt;jar&gt;`任务创建JAR文件,可以包含类文件、资源文件和MANIFEST.MF。 6. **定制规则**:`custom_rules.xml`可能是一个自定义的Ant构建规则文件,用于扩展默认的构建逻辑。这可能包含自定义的任务...

    ant.jar.zip

    当开发者解压"ant.jar.zip"后,这个JAR文件会被加入到Java类路径中,使得开发环境能够识别并执行Ant命令。这个JAR文件包含了Ant的全部类和资源,使得开发者能够在命令行或集成开发环境中调用Ant进行项目构建。 另一...

    ant打包编译全套资料

    "ant案例"涵盖了各种实际场景的应用,比如如何配置Ant来编译Java项目、打包JAR文件、生成WAR文件以部署到Web服务器,甚至如何执行单元测试、代码覆盖率分析等。通过实际操作案例,可以更直观地学习Ant的工作原理和...

    ant打包部署工具,官方下载

    在“apache-ant-1.8.1”这个压缩包中,包含了Ant 1.8.1版本的所有文件和目录,包括bin目录下的可执行脚本(ant和ant.bat),lib目录下的核心库和依赖库,以及docs目录下的用户手册和API文档。用户可以通过解压这个...

Global site tag (gtag.js) - Google Analytics