用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>

