Java 9与JEP-238一起发布,它基本上允许我们发布多个版本的运行时类。问题是maven如何支持这个JEP?
答案 0 :(得分:3)
我的意思是在maven中配置多个版本的方式和位置?我知道我 可以运行一个ant任务,但我可以用maven-compiler插件或者 另一种标准化方式?
我认为maven-compiler-plugin
不适合照顾释放,或者即使我们说蚂蚁任务。它本来应该编译一个项目的来源,寻求它的需要虽然引入了一个标志
-release N
其用法与-source N
和-target N
的用法类似。
它应为特定的VM版本(N)进行编译,并且应支持目标:6,7,8,9。它类似于javac
中引入的新标志
--release <release>
创建多版本jar的java方法,在此之后将一些文件放在META-INF/versions/9
目录中的格式应为:
jar --create --file mr.jar -C foo classes --release 9 -C foo9 classes
就MR-JAR maven实施而言,其中一个替代方案目前可以通过@simas链接或在下面列出作为提议(无法在其中一个分析中找到其发布的实现)
<子>
注意:对于转移到JMOD
而不是考虑版本9及更高版本的MR-JAR
,我们是否应该感兴趣?
我应该在哪里以及如何放置不同版本的java 类?
在文档Java 9 and its Impact on Maven Projects中,要解决MR-JAR的建议是要么对 JEP-238 中提到的结构进行1对1的翻译。
project root
src/main/java
- A.java
- B.java
- C.java
- D.java
src/main/java9
- A.java
- B.java
src/main/java10
- A.java
虽然可以在maven中使用不同的executions
,但可能不方便暴露给IDE。
另一个带有样本hboutemy/maven-jep238的替代品已被列出,以便使用以下结构: -
multimodule root
multirelease-base/src/main/java
- A.java
- B.java
- C.java
- D.java
multirelease-nine/src/main/java
- A.java
- B.java
multirelease-ten/src/main/java
- A.java
multirelease/src/assembly/mvjar.xml
我无法找到开源/组织使用这些提案的官方文档或实现,因此使用Maven目前推断其不太明显。
答案 1 :(得分:0)
如何使用Maven处理JEP-238有两个例子
答案 2 :(得分:0)
SLF4J似乎可以在多个模块上使用。