大佬教程收集整理的这篇文章主要介绍了在Gradle中编译JDK 8项目+ JDK 9“ module-info.java”,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
编辑: Gradle Modules Plugin 从1.5.0版本开始支持此功能。
这是一个工作build.gradle
片段:
plugins {
ID 'java'
ID 'org.javamodularity.moduleplugin' version '1.5.0'
}
repositorIEs {
mavenCentral()
}
dependencIEs {
compiLeonly 'org.projectlombok:lombok:1.18.6'
}
modularity.mixedJavaRelease 8
好的,我设法通过以下方法使它起作用:
org.javamodularity.moduleplugin
compileModuleInfoJava
任务并将其设置--module-path
为compileJava
任务的类路径(受此Gradle手册的启发)这是的完整源代码build.gradle
:
plugins {
ID 'java'
}
repositorIEs {
mavenCentral()
}
dependencIEs {
compiLeonly 'org.projectlombok:lombok:1.18.6'
}
compileJava {
exclude 'module-info.java'
options.compilerArgs = ['--release', '8']
}
task compileModuleInfoJava(type: JavaCompilE) {
classpath = files() // empty
source = 'src/main/java/module-info.java'
desTinationDir = compileJava.desTinationDir // same dir to see classes compiled by compileJava
doFirst {
options.compilerArgs = [
'--release', '9',
'--module-path', compileJava.classpath.asPath,
]
}
}
compileModuleInfoJava.dependsOn compileJava
classes.dependsOn compileModuleInfoJava
笔记:
我正在开发一个针对JDK 8的Java库,并且正在使用OpenJDK 11在Gradle 5中进行构建。为了实现JDK
8,我是javac的--release
选择。
但是,我也希望我的库兼容JPMS。换一种说法:
@H_941_69@mCVEbuild.gradle :
plugins {
id 'java'
id 'org.javamodularity.moduleplugin' version '1.4.1' // *
}
repositories {
mavenCentral()
}
dependencies {
compiLeonly 'org.projectlombok:lombok:1.18.6'
}
compileJava.options.compilerArgs.addAll(['--release','9']) // **
org.javamodularity.moduleplugin
套--module-path
的compileJava
**尚无Gradle DSL
--release
:#2510
src / main / java / module-info.java :
@H_729_9@module pl.tlinkowski.sample { requires lombok; exports pl.tlinkowski.sample; }
src / main / java / pl / tlinkowski / sample / Sample.java :
package pl.tlinkowski.sample;
@lombok.Value
public class Sample {
int sample;
}
此MCVE会进行编译,但是所有类(而不是only @H_729_9@module-info.class)都是JDK
9类格式(v.53)。
我想做的事情当然有可能在:
--release 9
,然后编译一切除了@H_729_9@module-info.java用--release 8
)。--release 8
,而用编译“模块信息”源集--release 9
)。我喜欢Lombok的方法,因此build.gradle
按以下方式操作了源集:
sourceSets {
main { // all but module-info
java {
exclude 'module-info.java'
}
}
mainModuleInfo { // module-info only
java {
srcDirs = ['src/main/java']
outputDir = file("$buildDir/classes/java/main")
include 'module-info.java'
}
}
}
然后,我配置了一个任务依赖项,并--release
为两个编译任务添加了适当的选项:
classes.dependsOn mainModuleInfoClasses
compileJava.options.compilerArgs.addAll(['--release','8'])
compileMainModuleInfoJava.options.compilerArgs.addAll(['--release','9'])
如果现在编译,我将得到:
所以我仍然 不知道 如何指导org.javamodularity.moduleplugin
:
以上是大佬教程为你收集整理的在Gradle中编译JDK 8项目+ JDK 9“ module-info.java”全部内容,希望文章能够帮你解决在Gradle中编译JDK 8项目+ JDK 9“ module-info.java”所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。