Jmod

自 Apache Ant 1.10.6 起

描述

从模块化 jar 文件创建可链接的 jmod 文件,以及可选的其他应用程序文件,例如本机库和许可证文档。等效于 JDK 的 jmod 工具。

需要 Java 9 或更高版本。

参数

属性 描述 必需
destFile 要创建的 jmod 文件。
classpath 要放置在 jmod 文件中的文件。通常是一个模块。 除非存在嵌套的 <classpath>,否则需要其中之一。
classpathref 要放置在 jmod 文件中的文件,作为对在其他地方定义的路径的 引用 给出。
modulepath 类路径模块所依赖的模块的位置。
modulepathref 类路径模块所依赖的模块的位置,作为对在其他地方定义的路径的 引用 给出。
commandpath 包含要包含在 jmod 中的本机命令的目录。
commandpathref 包含要包含在 jmod 中的本机命令的目录,作为对在其他地方定义的路径的 引用 给出。
headerpath 包含要包含在 jmod 中的头文件的目录。
headerpathref 包含要包含在 jmod 中的头文件的目录,作为对在其他地方定义的路径的 引用 给出。
configpath 包含要包含在 jmod 中的用户可编辑配置文件的目录。
configpathref 包含要包含在 jmod 中的用户可编辑配置文件的目录,作为对在其他地方定义的路径的 引用 给出。
legalpath 包含要包含在 jmod 中的法律许可证和通知的目录。
legalpathref 包含要包含在 jmod 中的法律许可证和通知的目录,作为对在其他地方定义的路径的 引用 给出。
nativelibpath 包含要包含在 jmod 中的本机库的目录。
nativelibpathref 包含要包含在 jmod 中的本机库的目录,作为对在其他地方定义的路径的 引用 给出。
manpath 包含要包含在 jmod 中的手册页的目录。
manpathref 包含要包含在 jmod 中的手册页的目录,作为对在其他地方定义的路径的 引用 给出。
version 模块版本 的 jmod。
mainclass 充当模块可执行入口点的类。
platform jmod 的目标平台。通常采用 OS-architecture 的形式。可以通过运行类似 jmod describe $JDK_HOME/jmods/java.base.jmod | grep -i platform 的命令来查看特定 JDK 的平台。
hashModulesPattern 模块路径中依赖于正在创建的 jmod 的模块名称的正则表达式,这些模块应该为其生成哈希并包含在新 jmod 中。
resolveByDefault 布尔值,指示 jmod 是否应该是在工具和应用程序搜索的模块路径中解析的默认模块之一。 否。默认值为 true。
moduleWarnings 是否在解析不建议使用的模块时发出警告。逗号分隔的列表,包含以下一项或多项
deprecated
如果模块已弃用,则发出警告
leaving
如果模块已弃用以供删除,则发出警告
incubating
如果模块是孵化器(尚未正式发布)模块,则发出警告
否,默认值为不发出警告。

作为嵌套元素指定的参数

classpath、modulepath、commandpath、headerpath、configpath、legalpath、nativelibpath、manpath

classpathmodulepathcommandpathheaderpathconfigpathlegalpathnativelibpathmanpath 属性是 路径状结构,也可以通过嵌套的 <classpath><modulepath><commandpath><headerpath><configpath><legalpath><nativelibpath><manpath> 元素分别设置。

version

version 属性的细粒度替代方案。此嵌套元素具有以下属性

属性 描述 必需
number 主版本号。可以是任何文本,只要它不包含连字符 (-) 或加号 (+) 即可。
preRelease 预发布版本。可以是任何文本,只要它不包含加号 (+) 即可。
build 构建版本。可以是任何文本。

有关每个版本组件含义的完整描述,请参阅 ModuleDescriptor.Version 文档

moduleWarning

类似于 moduleWarnings 属性,但只指定一个发出警告的基础。此子元素可以出现多次,以指定 jmod 工具应发出警告的多个条件。

属性

属性 描述 必需
reason 将导致 jmod 工具发出警告的条件。其中之一
deprecated
如果模块已弃用,则发出警告
leaving
如果模块已弃用以供删除,则发出警告
incubating
如果模块是孵化器(尚未正式发布)模块,则发出警告

示例

基本 jmod

从单个模块化 jar 文件创建 jmod

<jmod destfile="MyApp.jmod" classpath="build/myapp.jar"/>

具有依赖项

从依赖于另一个模块的模块化 jar 文件创建 jmod

<jmod destfile="MyApp.jmod" classpath="build/myapp.jar">
    <modulepath>
        <pathelement location="libs/thirdpartyutils.jar"/>
    </modulepath>
</jmod>

具有版本

创建具有模块版本的 jmod

<jmod destfile="MyApp.jmod" classpath="build/myapp.jar"
      version="1.2.1-ea+29"/>

从模块版本组件创建版本化的 jmod

<property name="version" value="1.2.1"/>
<buildnumber/>
<loadfile property="buildnum" srcFile="build.number"/>
<jmod destfile="MyApp.jmod" classpath="build/myapp.jar">
    <version number="${version}" build="${buildnum}"/>
</jmod>

主类

创建具有主类的 jmod

<jmod destfile="MyApp.jmod" classpath="build/myapp.jar"
      mainclass="com.example.myapp.MainWindow"/>

目标平台

为特定平台创建 jmod,该平台可能与当前平台不同

<jmod destfile="MyApp.jmod" classpath="build/myapp.jar"
      platform="windows-amd64"/>