igr*_*igr 15 java gradle java-9 java-module
Java9引入了Multi-Release JAR.
假设我使用java8有多模块Gradle项目:
project-root
settings.gradle
build.gradle
/module1
/src
... (common maven structure)
/module2
/module3
Run Code Online (Sandbox Code Playgroud)
这是Gradle中常见的多模块项目.假设我需要MR-Jar module1.
我无法添加module1-java9定位Java9,因为基础是8 - 到目前为止,我的Gradle和IntelliJ IDEA都抱怨.Gradle是用java8编译的,但是我需要为模块启用java9运行时(不知道怎么做); 在IntelliJ IDEA中我可以为模块设置java9运行时,但每次重新加载gradle配置时它都会被覆盖.
而且,即使我以某种方式添加它,我需要指示module11)构建第二个和2)包括module1-java9.以下是这种情况的图纸:
project-root
settings.gradle
build.gradle
/module1
/module1-java9 (added java9 module)
/module2
...
Run Code Online (Sandbox Code Playgroud)
或者,这可以在module1具有不同来源的情况下完成:src和src-java9.但我怀疑这会被接受.这是一张图:
project-root
settings.gradle
build.gradle
/module1
/src
/src-java9 (added java9 source folder)
/module2
/module3
Run Code Online (Sandbox Code Playgroud)
到目前为止,我只看到它module1-java9是一个单独的项目(不是模块),module1只是在那里调用gradle并获取输出.是的,这是gradle调用gradle :)))
有没有开发人员友好的方式来做到这一点?
正如该问题的评论中提到的,这篇博文和相关的示例项目描述了如何使用 Gradle 创建多版本 JAR。
\n\n如果博客文章或示例项目消失,您还可以参考以下设置,该设置源自示例项目,并根据问题中给出的设置进行了一些定制(只要提供了详细信息)。
\n\nproject-root/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 build.gradle\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 module1\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 src\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 java\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 com\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 acme\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 JdkSpecific.java\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Shared.java\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 java9\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 com\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 acme\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 JdkSpecific.java\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 module2\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 whatever\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 module3\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 whatever\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 settings.gradle\nRun Code Online (Sandbox Code Playgroud)\n\nbuild.gradleallprojects {\n apply plugin: \'java\'\n\n compileJava {\n sourceCompatibility = 8\n targetCompatibility = 8\n }\n}\n\ndependencies {\n implementation project(\':module1\')\n}\n\nproject(\':module1\') {\n sourceSets {\n java9 {\n java {\n srcDirs = [\'src/main/java9\']\n }\n }\n }\n\n compileJava9Java {\n sourceCompatibility = 9\n targetCompatibility = 9\n }\n\n dependencies {\n java9Implementation files(sourceSets.main.output.classesDirs) {\n builtBy compileJava\n }\n }\n\n jar {\n into(\'META-INF/versions/9\') {\n from sourceSets.java9.output\n }\n manifest.attributes(\'Multi-Release\': \'true\')\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\nsettings.gradleinclude \'module1\', \'module2\', \'module3\'\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
560 次 |
| 最近记录: |