如何使用 JDK 9 jar 工具的 --hash-modules 和 --module-path 选项?
How to use --hash-modules and --module-path options of JDK 9 jar tool?
我想计算并记录与给定模式匹配的模块的哈希值,该模式直接依赖于正在更新的模块化 JAR 文件。为此,请使用 --hash-modules
和 --module-path
选项。
这是我的尝试:
jar --hash-modules com.me.util --module-path "dist\com.me.jar;dist\com.me.util.jar" --update --file dist/com.me.jar --main-class=com.me.A --verbose --module-version 0.1 -C build/modules/com.me module-info.class build/modules/com.me/com/me/A.class build/modules/com.me/com/me/B.class
jar --hash-modules "com.me.util;com.me.util" --module-path "dist\com.me.jar;dist\com.me.util.jar" --update --file dist/com.me.jar --main-class=com.me.A --verbose --module-version 0.1 -C build/modules/com.me module-info.class build/modules/com.me/com/me/A.class build/modules/com.me/com/me/B.class
当我尝试这样做时,我收到警告消息:"no module is recorded in hash in com.me"。
这些命令将创建 *.jar 文件(模块)而不会出现任何错误,但它们不会添加任何哈希信息。我想查看此信息并利用此功能(--hash-modules
和 --module-path
选项)。请告诉我怎么做!
可以找到项目文件夹的完整结构 here。
我使用 jar 工具选项的实验和工作示例是 here。
中描述
--hash-modules <ProvidePatternHere>
/* 你缺少模式 */
http://openjdk.java.net/jeps/261
仅为名称与正则表达式匹配的模块记录哈希
--module-path <LinkToModule>
因此,一个完整的示例如下所示:
jar --hash-modules "*.jar" --module-path "dist" ... and your other stuffs here.
Uddhav Gautam, thank you for the link 到附加文档。
仔细阅读了文档(Packaging: Modular JAR files (JEP 261: Module System) and --hash-modules=PATTERN
(Java Platform, Standard Edition Tools Reference)),我意识到应该给什么参数来解决这个任务。
这是一个工作示例:
#Working command:
#Create module:
jar --hash-modules "com.me" --module-path "dist/com.me.jar" --verbose --create --file dist/com.me.util.jar -C build/modules/com.me.util module-info.class build/modules/com.me.util/com/me/util/Util.class
jar --hash-modules "com.me" --module-path "dist/com.me.jar" -v -c -f dist/com.me.util.jar -C build/modules/com.me.util module-info.class build/modules/com.me.util/com/me/util/Util.class
#Update module:
jar --hash-modules "com.me" --module-path "dist/com.me.jar" --verbose --update --file dist/com.me.util.jar -C build/modules/com.me.util module-info.class
jar --hash-modules "com.me" --module-path "dist/com.me.jar" -v -u -f dist/com.me.util.jar -C build/modules/com.me.util module-info.class
要查看选项的结果,请使用以下命令:
#Describe module:
jar --file dist/com.me.util.jar --describe-module
结果应该是这样的:
com.me.util jar:file:///C:/my_ch1_9/dist/com.me.util.jar/!module-info.class
exports com.me.util
requires java.base mandated
hashes com.me SHA-256 85c0539e4ca9a01b00f4c29a1a8b01cd452d1d97f437166b8bb415046dac65cb
我想计算并记录与给定模式匹配的模块的哈希值,该模式直接依赖于正在更新的模块化 JAR 文件。为此,请使用 --hash-modules
和 --module-path
选项。
这是我的尝试:
jar --hash-modules com.me.util --module-path "dist\com.me.jar;dist\com.me.util.jar" --update --file dist/com.me.jar --main-class=com.me.A --verbose --module-version 0.1 -C build/modules/com.me module-info.class build/modules/com.me/com/me/A.class build/modules/com.me/com/me/B.class
jar --hash-modules "com.me.util;com.me.util" --module-path "dist\com.me.jar;dist\com.me.util.jar" --update --file dist/com.me.jar --main-class=com.me.A --verbose --module-version 0.1 -C build/modules/com.me module-info.class build/modules/com.me/com/me/A.class build/modules/com.me/com/me/B.class
当我尝试这样做时,我收到警告消息:"no module is recorded in hash in com.me"。
这些命令将创建 *.jar 文件(模块)而不会出现任何错误,但它们不会添加任何哈希信息。我想查看此信息并利用此功能(--hash-modules
和 --module-path
选项)。请告诉我怎么做!
可以找到项目文件夹的完整结构 here。
我使用 jar 工具选项的实验和工作示例是 here。
中描述--hash-modules <ProvidePatternHere>
/* 你缺少模式 */
http://openjdk.java.net/jeps/261
仅为名称与正则表达式匹配的模块记录哈希
--module-path <LinkToModule>
因此,一个完整的示例如下所示:
jar --hash-modules "*.jar" --module-path "dist" ... and your other stuffs here.
Uddhav Gautam, thank you for the link 到附加文档。
仔细阅读了文档(Packaging: Modular JAR files (JEP 261: Module System) and --hash-modules=PATTERN
(Java Platform, Standard Edition Tools Reference)),我意识到应该给什么参数来解决这个任务。
这是一个工作示例:
#Working command:
#Create module:
jar --hash-modules "com.me" --module-path "dist/com.me.jar" --verbose --create --file dist/com.me.util.jar -C build/modules/com.me.util module-info.class build/modules/com.me.util/com/me/util/Util.class
jar --hash-modules "com.me" --module-path "dist/com.me.jar" -v -c -f dist/com.me.util.jar -C build/modules/com.me.util module-info.class build/modules/com.me.util/com/me/util/Util.class
#Update module:
jar --hash-modules "com.me" --module-path "dist/com.me.jar" --verbose --update --file dist/com.me.util.jar -C build/modules/com.me.util module-info.class
jar --hash-modules "com.me" --module-path "dist/com.me.jar" -v -u -f dist/com.me.util.jar -C build/modules/com.me.util module-info.class
要查看选项的结果,请使用以下命令:
#Describe module:
jar --file dist/com.me.util.jar --describe-module
结果应该是这样的:
com.me.util jar:file:///C:/my_ch1_9/dist/com.me.util.jar/!module-info.class
exports com.me.util
requires java.base mandated
hashes com.me SHA-256 85c0539e4ca9a01b00f4c29a1a8b01cd452d1d97f437166b8bb415046dac65cb