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