仓库地址
https://gitee.com/bzrj/ant-study/tree/master/ant-hello
参考资料
APACHE ANT编写BUILD.XML的自动提示 ANT DTD
关于ant -javac的 includeAntRuntime 属性
升级Intellij IDEA 2023.3后找回Ant构建工具
信步漫谈之Ant—打包可运行的Jar包(加入第三方jar包)
运行效果
E:\gitee\bzrj\ant-study\ant-hello>dir驱动器 E 中的卷是 文档卷的序列号是 EDE0-BB33E:\gitee\bzrj\ant-study\ant-hello 的目录2024/07/04 01:07 <DIR> .
2024/07/04 01:07 <DIR> ..
2024/07/03 23:52 <DIR> .externalToolBuilders
2024/07/04 00:07 49 .gitignore
2024/07/04 00:45 <DIR> .idea
2024/07/04 00:00 557 ant-hello.iml
2024/07/03 23:24 215,327 ant_DTD.dtd
2024/07/04 01:05 <DIR> build
2024/07/04 01:07 4,390 build.xml
2024/07/04 01:05 <DIR> dist
2024/07/03 23:30 <DIR> src4 个文件 220,323 字节7 个目录 67,938,680,832 可用字节E:\gitee\bzrj\ant-study\ant-hello>ant exec
Buildfile: E:\gitee\bzrj\ant-study\ant-hello\build.xmlpre-compile:compile:[javac] Compiling 1 source file to E:\gitee\bzrj\ant-study\ant-hello\build\classesexec:[java] thresh is running...BUILD SUCCESSFUL
Total time: 0 secondsE:\gitee\bzrj\ant-study\ant-hello>ant
Buildfile: E:\gitee\bzrj\ant-study\ant-hello\build.xmlpre-compile:compile:[javac] Compiling 1 source file to E:\gitee\bzrj\ant-study\ant-hello\build\classesarchive:[jar] Building jar: E:\gitee\bzrj\ant-study\ant-hello\dist\thresh.jarBUILD SUCCESSFUL
Total time: 0 secondsE:\gitee\bzrj\ant-study\ant-hello>cd distE:\gitee\bzrj\ant-study\ant-hello\dist>java -jar thresh.jar
thresh is running...E:\gitee\bzrj\ant-study\ant-hello\dist>
build.xml
<?xml version="1.0"?>
<!DOCTYPE project [<!ENTITY ant_dtd SYSTEM "ant_DTD.dtd">]>
<project name="ant hello world" default="archive"><!--定义属性--><!-- 源码目录 --><property name="src.dir" value="src"/><property name="src.main.dir" value="${src.dir}/main"/><property name="src.main.java.dir" value="${src.main.dir}/java"/><!-- 构建目录 --><property name="build.dir" value="build"/><!-- 编译目录 --><property name="build.classes.dir" value="${build.dir}/classes"/><!-- 发布目录 --><property name="dist.dir" value="dist"/><!-- jar 包名称 --><property name="finalName" value="thresh.jar"/><property name="mainclass" value="com.laolang.thresh.ThreshApplication"/><property name="project-version" value="0.1"/><!-- 一个测试 target --><target name="hello"><echo>Hello World - Welcome to Apache Ant!</echo></target><!-- 打印内置属性 --><target name="print-system-property"><!-- 用于项目基础的绝对路径 --><echo>basedir:${basedir}</echo><!-- 用于构建文件的绝对路径 --><echo>ant.file:${ant.file}</echo><!-- 用于Ant的版本 --><echo>ant.version:${ant.version}</echo><!-- 它包含当前正在执行的项目的名称 --><echo>ant.project.name:${ant.project.name}</echo><!-- 它包含当前正在执行的项目的默认目标的名称 --><echo>ant.project.default-target:${ant.project.default-target}</echo><!-- 调用当前项目时的目标列表 --><echo>ant.project.invoked-targets:${ant.project.invoked-targets}</echo><!-- 拥有的JVM版本 --><echo>ant.java.version:${ant.java.version}</echo><!-- ant.jar 文件的绝对路径 --><echo>ant.core.lib:${ant.core.lib}</echo><!-- 包含Ant的主目录 --><echo>ant.home:${ant.home}</echo><!-- 包含用于加载Ant的jar的目录 --><echo>ant.library.dir:${ant.library.dir}</echo></target><!-- 打印自定义属性 --><target name="print-custom-property"><echo>src.dir:${src.dir}</echo><echo>src.main.dir:${src.main.dir}</echo><echo>src.main.java.dir:${src.main.java.dir}</echo><echo>build.dir:${build.dir}</echo><echo>build.classes.dir:${build.classes.dir}</echo><echo>dist.dir:${dist.dir}</echo><echo>finalName:${finalName}</echo></target><!-- 打印所有属性,展示另一种 target 依赖关系管理方式 --><target name="print-property"><antcall target="print-system-property"/><antcall target="print-custom-property"/></target><!-- 打印 ant dtd --><target name="makeantdtd"><antstructure output="ant_DTD.dtd"/></target><!-- 预编译,创建目录 --><target name="pre-compile"><mkdir dir="${src.dir}"/><mkdir dir="${src.main.dir}"/><mkdir dir="${src.main.java.dir}"/><mkdir dir="${build.dir}"/><mkdir dir="${build.classes.dir}"/><mkdir dir="${dist.dir}"/></target><!-- 编译 --><target name="compile" depends="pre-compile"><javac srcdir="${src.dir}" destdir="${build.classes.dir}" includeantruntime="false"/></target><!-- 运行 --><target name="exec" depends="compile"><java classname="${mainclass}" classpath="${build.classes.dir}"/></target><!-- 打包 --><target name="archive" depends="compile"><!-- 时间戳 --><tstamp><format property="TODAY" pattern="yyyy-MM-dd HH:mm:ss"/></tstamp><!-- 清单文件 --><manifest file="${build.dir}/MANIFEST.MF"><attribute name="Built-By" value="${user.name}"/><attribute name="Implementation-Version" value="${project-version}"/><attribute name="Built-Date" value="${TODAY}"/><attribute name="Main-Class" value="${mainclass}"/></manifest><jar destfile="${dist.dir}/${finalName}" basedir="${build.classes.dir}" manifest="${build.dir}/MANIFEST.MF"/></target><!-- 清理 --><target name="clean"><delete dir="${build.dir}"/><delete dir="${dist.dir}"/></target>
</project>