打包成的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>
相关推荐
非maven项目中的ANT打包可执行JAR包脚本,包括配置文件、第三方jar打包
下面是一个简单的Ant构建文件(build.xml)示例,展示了如何使用Ant打包JAR: ```xml <project name="MyProject" default="jar"> ${build.dir}/classes"/> <property name="jar.dir" value="${build.dir}/jar...
例如,你可以使用ant.jar来编译源代码、创建类路径、打包JAR文件,甚至运行单元测试。这个库是使用Ant进行项目构建的基础,几乎所有的Ant任务都依赖于它。 2. ant-junit.jar:此文件扩展了Ant的功能,使其能够集成...
`emma_ant.jar`作为Ant的任务库,使得开发者可以通过Ant脚本执行Emma的代码覆盖率分析。 3. **使用Emma进行代码覆盖率分析** - 首先,你需要在Ant构建文件(通常是build.xml)中引入Emma的任务。 - 然后,配置...
Ant.jar的使用并不复杂,开发者只需要编写符合规范的build.xml文件,然后通过命令行运行`ant [target]`,Ant就会根据文件中的定义自动执行相应的构建任务。此外,大多数现代Java IDE,如Eclipse和IntelliJ IDEA,都...
在Java开发过程中,将源代码编译为class文件并打包...通过这种方式,你可以轻松地管理项目依赖,并创建一个独立的可执行jar,便于分发和部署。同时,这也适用于那些不希望使用更现代的构建工具如Maven或Gradle的项目。
使用命令行,可以通过`java -jar ant.jar`的方式启动Ant,配合构建文件执行相应的构建任务。 总结来说,Apache Ant是Java开发中的一个强大构建工具,通过XML描述构建过程,实现编译、测试、打包等任务的自动化。它...
总之,Ant.jar 是 Java 开发中不可或缺的工具,它为开发者提供了一种强大且灵活的方式来自动化构建流程,无论是简单的编译还是复杂的部署,Ant 都能胜任。通过熟练掌握 Ant 的使用,开发者可以提高工作效率,确保...
`<manifest>`部分用于添加`JAR`的清单文件,`Main-Class`属性指定了程序的主类,使得`JAR`可以作为可执行文件运行。 在实际项目中,可能还需要其他任务,比如清理(`clean`)构建输出,或者进行单元测试(`junit`)...
最后,运行`ant release -Dchannel=your_channel_name`命令,Ant会根据指定的渠道名执行打包操作,生成对应的APK文件。 总之,Mac下使用Ant对Android App进行多渠道打包是一种常见的做法,它允许开发者灵活地定制...
标题中的“ant将依赖的jar包和classes文件一起打成可执行jar”指的是使用Apache Ant工具来构建一个包含依赖库和编译后类文件的Java应用程序可执行JAR文件。Ant是一个基于XML的构建工具,它允许开发者通过定义任务来...
综上所述,`java项目ant打包脚本`是Java开发过程中不可或缺的一部分,它通过Ant工具和`build.xml`配置文件实现了项目的自动化构建,提高了开发效率并确保了构建的一致性。理解并熟练掌握Ant打包脚本的编写和使用,...
Apache Ant的版本`apache-ant-1.8.2-bin`包含了Ant的二进制分发包,其中包含了Ant的可执行文件和必要的库文件,可以直接解压使用。 总之,Java的Ant打包工具是项目自动化构建的利器,通过灵活的配置和强大的功能,...
### ant打包时编码 GBK 的不可映射字符 #### 背景介绍 在软件开发过程中,使用构建工具如Ant来自动化编译、打包等任务是十分常见的做法。但是,在处理包含非ASCII字符(例如中文)的源代码时,可能会遇到字符编码...
Ant的核心概念是任务(Tasks),这些任务是可执行的单元,可以是Java类或者是Ant内建的任务。例如,`javac`任务用于编译Java源代码,`jar`任务用于创建JAR文件,`copy`任务用于复制文件,而`mkdir`任务则用于创建...
**Ant打包工具详解** Ant是Apache软件基金会Jakarta项目下的一个构建工具,它以其灵活性和可扩展性在Java开发领域中被广泛应用。Ant基于XML,它的主要任务是编译源代码、创建JAR文件、执行测试、部署应用程序等。...
5. **打包JAR**:使用`<jar>`任务创建JAR文件,可以包含类文件、资源文件和MANIFEST.MF。 6. **定制规则**:`custom_rules.xml`可能是一个自定义的Ant构建规则文件,用于扩展默认的构建逻辑。这可能包含自定义的任务...
当开发者解压"ant.jar.zip"后,这个JAR文件会被加入到Java类路径中,使得开发环境能够识别并执行Ant命令。这个JAR文件包含了Ant的全部类和资源,使得开发者能够在命令行或集成开发环境中调用Ant进行项目构建。 另一...
"ant案例"涵盖了各种实际场景的应用,比如如何配置Ant来编译Java项目、打包JAR文件、生成WAR文件以部署到Web服务器,甚至如何执行单元测试、代码覆盖率分析等。通过实际操作案例,可以更直观地学习Ant的工作原理和...
在“apache-ant-1.8.1”这个压缩包中,包含了Ant 1.8.1版本的所有文件和目录,包括bin目录下的可执行脚本(ant和ant.bat),lib目录下的核心库和依赖库,以及docs目录下的用户手册和API文档。用户可以通过解压这个...