问题标签 [multi-release-jar]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
maven - 查看多版本 JAR (MRJAR) 的版本源
我正在尝试为一些作为 MRJAR 发布的项目附加 Java 9 或 Java 11 源代码,jersey-container-jetty-http-3.0.2
即junit-platform-commons-1.4.0
.
查看jersey-container-jetty-http-3.0.2-sources.jar
我的文件~/.m2/repository
没有META-INF/versions
目录,.java
标准包位置中的文件适用于 Java 8(预模块系统)。如果我解压缩https://repo1.maven.org/maven2/org/glassfish/jersey/containers/jersey-container-jetty-http/3.0.2/jersey-container-jetty-http-3.0,也是这种情况。 2-sources.jar
这对我的调试器来说是个大麻烦:(
我能够从https://github.com/eclipse-ee4j/jersey/releases/tag/3.0.2下载完整的源代码,它包含以下目录和源代码:
containers/jetty-http/src/main/java11
containers/jetty-http/src/main/java8
我以为这可能只是泽西岛的问题,但是看着junit-platform-commons-1.4.0
我看到了类似的问题。我的~/.m2/repository
和https://repo1.maven.org/maven2/org/junit/platform/junit-platform-commons/1.4.0/junit-platform-commons-1.4.0-sources.jar都不包含任何 java 9 的代码+ 版本,但发布 JAR 包含/META-INF/versions/9/org/junit/platform/commons/util/ModuleUtils.class
.
所以我的问题是:是否包含 Maven 支持的多个 Java 版本的源代码?如果是这样,Java 9+ 源文件在哪里?
java - 在 Android 上使用多版本 JAR 时是否存在限制/问题?
我正在开发一个使用 Bouncy Castle 的库,应该可以在 Android 和 Java 8+ 上运行。
Bouncy Castle JAR 有两种变体。一种bcprov-jdk15to18-169.jar
适用于 Java 5-8 的变体(例如bcprov-jdk15on-169.jar
)和一种适用于 Java 5-15 的变体(例如 ),但它是一个多版本 JAR。
见:https ://www.bouncycastle.org/latest_releases.html
该文档指出:
从 1.63 开始,我们已经开始包含“jdk15to18”的签名 jar,如果您遇到 JCE 中的签名验证或常规“jdk15on”jar 文件中存在多版本目录的问题,请尝试“jdk15to18”jar反而。
在 Android 上使用多版本 JAR 时是否有任何已知的限制/问题?
(我用 Android 模拟器(API 24 和 API 30)做了一些测试,一切正常。)
maven - Maven Shade 不包含多版本依赖的“META-INF/versions”
在我们的项目中,我们创建了一个“skinny” jar,它只包含我们自己的应用程序代码,我们使用 maven shade 插件为我们运行应用程序所需的依赖项创建 JAR。Maven shade 用于将多个依赖项打包到同一个 jar 中。例如,所有的 jetty 依赖都打包成一个更大的jetty-full.jar
.
现在我们面临一个org.graalvm.js
依赖问题。它取决于truffle-api
哪个本身是一个多版本 jar,并且包含用于 java 11 下的类META-INF/versions/11
。当我们使用 Java 11 时,我们需要这些类,但由于某种原因,它们被 maven shade 插件排除在外。
这是相关的代码pom.xml
:
生成的META-INF
jar 仅包含以下文件夹和文件:
- 升级
- 服务
- 本机图像
- 行家
- MANIFEST.MF(文件)
versions
文件夹丢失。
我现在使用copy-dependency
插件来复制单个文件,并在那里META-INF
包含versions/11
所需的 Java 11 类的文件夹。
我是否遗漏了什么或者为什么被META-INF/versions
排除在阴影罐中?