Java 模块系统无意解决版本选择或验证问题。
但是,它确实支持将版本信息添加到可通过 Module API 获得的模块 jar。
类似地,另一个模块上的“requires”子句将包含它编译时所针对的依赖项的版本。一个先决条件是其他模块需要包含版本号。
通过 API 提供这两个版本使得其他框架可以验证由不同模块组成的应用程序是否具有兼容的版本(例如,基于语义版本控制)。
在 Maven 构建中,java 'jar' 工具的以下用法允许将 project.version 添加到模块化 jar 中:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.6.0</version>
<executions>
<execution>
<id>add-version-to-jar</id>
<phase>package</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>jar</executable>
<workingDirectory>${project.build.directory}</workingDirectory>
<arguments>
<argument>--update</argument>
<argument>--verbose</argument>
<argument>--module-version</argument>
<argument>${project.version}</argument>
<argument>--file</argument>
<argument>${project.build.finalName}.jar</argument>
<argument>-C</argument>
<argument>${project.build.outputDirectory}</argument>
<argument>.</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
可以在以下位置找到更详细的描述和代码