企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
### 80.10 使用Ant构建可执行存档(不使用spring-boot-antlib) 想要使用Ant进行构建,你需要抓取依赖,编译,然后像通常那样创建一个jar或war存档。为了让它可以执行,你可以使用`spring-boot-antlib`,也可以使用以下指令: 1. 如果构建jar,你需要将应用的类和资源打包进内嵌的`BOOT-INF/classes`目录。如果构建war,你需要将应用的类打包进内嵌的`WEB-INF/classes`目录。 2. 对于jar,添加运行时依赖到内嵌的`BOOT-INF/lib`目录。对于war,则添加到`WEB-INF/lib`目录。注意不能压缩存档中的实体。 3. 对于jar,添加`provided`依赖到内嵌的`BOOT-INF/lib`目录。对于war,则添加到`WEB-INF/lib-provided`目录。注意不能压缩存档中的实体。 4. 在存档的根目录添加`spring-boot-loader`类(这样`Main-Class`就可用了)。 5. 使用恰当的启动器,比如对于jar使用`JarLauncher`作为manifest的`Main-Class`属性,指定manifest的其他属性,特别是`Start-Class`。 示例: ```xml <target name="build" depends="compile"> <jar destfile="target/${ant.project.name}-${spring-boot.version}.jar" compress="false"> <mappedresources> <fileset dir="target/classes" /> <globmapper from="*" to="BOOT-INF/classes/*"/> </mappedresources> <mappedresources> <fileset dir="src/main/resources" erroronmissingdir="false"/> <globmapper from="*" to="BOOT-INF/classes/*"/> </mappedresources> <mappedresources> <fileset dir="${lib.dir}/runtime" /> <globmapper from="*" to="BOOT-INF/lib/*"/> </mappedresources> <zipfileset src="${lib.dir}/loader/spring-boot-loader-jar-${spring-boot.version}.jar" /> <manifest> <attribute name="Main-Class" value="org.springframework.boot.loader.JarLauncher" /> <attribute name="Start-Class" value="${start-class}" /> </manifest> </jar> </target> ``` 该[Ant示例](https://github.com/spring-projects/spring-boot/tree/v1.4.1.RELEASE/spring-boot-samples/spring-boot-sample-ant)中有一个`build.xml`文件及`manual`任务,可以使用以下命令来运行: ```shell $ ant -lib <folder containing ivy-2.2.jar> clean manual ``` 在上述操作之后,你可以使用以下命令运行该应用: ```shell $ java -jar target/*.jar ```