Jmod

自 Apache Ant 1.10.6 起

說明

從模組化 jar 檔案建立可連結的 jmod 檔案,並可選擇從其他應用程式檔案(例如原生函式庫和授權文件)建立。等同於 JDK 的 jmod 工具。

需要 Java 9 或更新版本。

參數

屬性 說明 必要
destFile 要建立的 jmod 檔案。
classpath 要放置在 jmod 檔案中的檔案。通常為單一模組。 除非存在巢狀 <classpath>,否則需要其中一個。
classpathref 要放置在 jmod 檔案中的檔案,以 參考 形式提供,指向其他地方定義的路徑。
modulepath classpath 模組依賴的模組位置。
modulepathref classpath 模組依賴的模組位置,以 參考 形式提供,指向其他地方定義的路徑。
commandpath 包含要包含在 jmod 中的原生指令的目錄。
commandpathref 包含要包含在 jmod 中的原生指令的目錄,以 參考 形式提供,指向其他地方定義的路徑。
headerpath 包含要包含在 jmod 中的標頭檔案的目錄。
headerpathref 包含要包含在 jmod 中的標頭檔案的目錄,以 參考 形式提供,指向其他地方定義的路徑。
configpath 包含要包含在 jmod 中的使用者可編輯設定檔的目錄。
configpathref 包含要包含在 jmod 中的使用者可編輯設定檔的目錄,以 參考 形式提供,指向其他地方定義的路徑。
legalpath 包含要包含在 jmod 中的法律授權和公告的目錄。
legalpathref 包含要包含在 jmod 中的法律授權和公告的目錄,以 參考 形式提供,指向其他地方定義的路徑。
nativelibpath 包含要包含在 jmod 中的原生函式庫的目錄。
nativelibpathref 包含要包含在 jmod 中的原生函式庫的目錄,以 參考 形式提供,指向其他地方定義的路徑。
manpath 包含要包含在 jmod 中的手冊頁面的目錄。
manpathref 包含要包含在 jmod 中的手冊頁的目錄,以 參照 在其他地方定義的路徑提供。
版本 jmod 的模組版本
主類別 作為模組可執行進入點的類別。
平台 jmod 的目標平台。通常採用 作業系統-架構 的形式。可以透過執行類似 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

classpathmodulepathcommandpathheaderpathconfigpathlegalpathnativelibpathmanpath 屬性是 類似的路徑結構,也可以透過巢狀 <classpath><modulepath><commandpath><headerpath><configpath><legalpath><nativelibpath><manpath> 元素分別設定。

版本

version 屬性的細緻替代方案。此巢狀元素有這些屬性

屬性 說明 必要
數字 主要版本號碼。可以是任何文字,只要不包含連字號 (-) 或加號 (+) 即可。
preRelease 前置版本。可以是任何文字,只要不包含加號 (+) 即可。
build 建置版本。可以是任何文字。

請參閱 ModuleDescriptor.Version 文件,以取得每個版本元件意義的完整說明。

moduleWarning

如同 moduleWarnings 屬性,但僅指定發出警告的單一基礎。這個子元素可以出現多次,以指定 jmod 工具應在哪些多個條件下發出警告。

屬性

屬性 說明 必要
reason 將導致 jmod 工具發出警告的條件。其中之一
已過時
如果模組已過時,發出警告
將移除
如果模組已標示為將移除,發出警告
孵化中
如果模組是孵化中(尚未正式)的模組,發出警告

範例

基本 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"/>