用Ant构建Java模块
时间:2020-01-09 10:34:05 来源:igfitidea点击:
Java 9中的Java中包含Java平台模块系统(JPMS)。随着JPMS的出现,一种用于定义Java模块的方法。与Java模块一起出现的是一种稍微不同的方式来编译,打包(在JAR中)和链接(使用jlink)Java工具包和应用程序。在本教程中,我将向我们展示如何使用Ant编译,打包和链接模块化Java工具箱或者应用程序。
要了解有关Java平台模块系统的更多信息,请参阅我的教程:Java模块Java平台模块系统。
编译Java模块
这是一个能够实现以下目标的Ant目标定义:
该Ant脚本可以使用Java SDK编译器来编译Java模块。 Ant脚本使用简单的Ant任务" exec"将Java编译器作为标准命令行可执行文件执行。
<project name="MyProject" basedir="." default="text"> <property name="version" value="1.1.1"/> <property name="javahome" value="C:\Program Files\Java\jdk-9.0.4\"/> <target name="clean"> <delete dir="out-build"/> <mkdir dir="out-build"/> <mkdir dir="out-build/java"/> <mkdir dir="out-build/java/com.nanosai.memops"/> </target> <target name="copy-source"> <copydir src="src/main/java" dest="out-build/java/com.nanosai.memops" /> </target> <target name="compile"> <exec executable="${javahome}\bin\javac" dir="${basedir}"> <arg value="-d"/> <arg value="out-build/classes"/> <arg value="--module-source-path"/> <arg value="out-build/java"/> <arg value="--module"/> <arg value="com.nanosai.memops"/> </exec> </target> </project>
打包Java模块
这是一个Ant目标定义,它能够打包由上一节中的脚本编译的Java模块。 Ant目标创建一个包含模块描述符的模块化JAR文件。
<project name="MyProject" basedir="." default="text"> <property name="version" value="1.1.1"/> <property name="javahome" value="C:\Program Files\Java\jdk-9.0.4\"/> <target name="clean"> <delete dir="out-build"/> <mkdir dir="out-build"/> <mkdir dir="out-build/java"/> <mkdir dir="out-build/java/com.nanosai.memops"/> </target> <target name="copy-source"> <copydir src="src/main/java" dest="out-build/java/com.nanosai.memops" /> </target> <target name="compile"> <exec executable="${javahome}\bin\javac" dir="${basedir}"> <arg value="-d"/> <arg value="out-build/classes"/> <arg value="--module-source-path"/> <arg value="out-build/java"/> <arg value="--module"/> <arg value="com.nanosai.memops"/> </exec> </target> <target name="package-jar"> <exec executable="${javahome}\bin\jar" dir="${basedir}"> <arg value="-c"/> <arg value="--file=out-build/com-nanosai-memops.jar"/> <arg value="-C"/> <arg value="out-build/classes/com.nanosai.memops"/> <arg value="."/> </exec> </target> </project>