apply plugin: 'java-library' java { toolchain { languageVersion = JavaLanguageVersion.of(21) } modularity.inferModulePath.set(true) withSourcesJar() withJavadocJar() } jar { manifest { attributes('Implementation-Name': project.name) attributes('Implementation-Version': project.version) attributes('Implementation-Vendor': project.vendor) attributes('X-Compile-Source-JDK': JavaLanguageVersion.of(21).toString()) attributes('X-Compile-Target-JDK': JavaLanguageVersion.of(21).toString()) } duplicatesStrategy = DuplicatesStrategy.INCLUDE from (project.file('.')) { include 'LICENSE.txt' include 'NOTICE.txt' into 'META-INF' } } tasks.withType(JavaCompile).configureEach { doFirst { options.fork = true options.forkOptions.jvmArgs += ['-Duser.language=en', '-Duser.country=US'] options.encoding = 'UTF-8' options.compilerArgs.add('-Xlint:all') // enforce presence of module-info.java options.compilerArgs.add("--module-version") options.compilerArgs.add(project.version as String) options.compilerArgs.add("--module-path") options.compilerArgs.add(classpath.asPath) classpath = files() } } tasks.withType(Javadoc).configureEach { doFirst { options.addStringOption('Xdoclint:none', '-quiet') options.encoding = 'UTF-8' } } tasks.withType(JavaExec).configureEach { doFirst { jvmArguments.add("--module-path") jvmArguments.add(classpath.asPath) classpath = files() } }