自 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 | 是否在解析不建议使用的模块时发出警告。逗号分隔的列表,包含以下一项或多项
|
否,默认值为不发出警告。 |
classpath
、modulepath
、commandpath
、headerpath
、configpath
、legalpath
、nativelibpath
和 manpath
属性是 路径状结构,也可以通过嵌套的 <classpath>
、<modulepath>
、<commandpath>
、<headerpath>
、<configpath>
、<legalpath>
、<nativelibpath>
和 <manpath>
元素分别设置。
version
属性的细粒度替代方案。此嵌套元素具有以下属性
属性 | 描述 | 必需 |
---|---|---|
number | 主版本号。可以是任何文本,只要它不包含连字符 (- ) 或加号 (+ ) 即可。 |
是 |
preRelease | 预发布版本。可以是任何文本,只要它不包含加号 (+ ) 即可。 |
否 |
build | 构建版本。可以是任何文本。 | 否 |
有关每个版本组件含义的完整描述,请参阅 ModuleDescriptor.Version 文档。
类似于 moduleWarnings
属性,但只指定一个发出警告的基础。此子元素可以出现多次,以指定 jmod 工具应发出警告的多个条件。
属性
属性 | 描述 | 必需 |
---|---|---|
reason | 将导致 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"/>