将Java9项目Jigsaw与Gradle一起使用
我正在使用Gradle、Kotlin和Java9模块(Jigsaw)构建一个库。我试图以类似的方式构建我的构建,因此结构如下所示:将Java9项目Jigsaw与Gradle一起使用,java,kotlin,gradle,java-platform-module-system,Java,Kotlin,Gradle,Java Platform Module System,我正在使用Gradle、Kotlin和Java9模块(Jigsaw)构建一个库。我试图以类似的方式构建我的构建,因此结构如下所示: src module1 (setup as a IJ module) kotlin (setup as IJ sources) example.packages module-info.java module2 (setup as a IJ module) kotlin (setup as IJ
src
module1 (setup as a IJ module)
kotlin (setup as IJ sources)
example.packages
module-info.java
module2 (setup as a IJ module)
kotlin (setup as IJ sources)
example.packages
module-info.java
settings.gradle
build.gradle
我遇到的第一个主要问题是,当尝试重新加载gradle或任何类似的东西时,它会导致这个问题(当然,“路径到项目”只是我项目的完整路径):
项目目录“PATH_TO_Project/src/module1”不是由设置文件“PATH_TO_Project/settings.gradle”定义的生成的一部分。如果这是一个不相关的生成,它必须有自己的设置文件
(我拥有的每个模块都会出现此问题)
当我将settings.gradle添加到任何模块时,其他模块会停止识别它和/或它不会添加到模块路径。如果我不添加settings.gradle,那么我的模块可以工作,但gradle不能。我还尝试通过名称和指定路径将模块包括在root settings.gradle中。如果我按名称包含,同样的问题,如果我包含并指定路径,gradle会抱怨找不到指定的项目(我知道路径是正确的)
以下是我的设置/build.gradle:
settings.gradle:
rootProject.name = 'example'
include 'module1', 'module2'
//subProject 'module1', 'module2' //Uncommenting this to provide a direct path to the module
private subProject(String... name) {
for (int i = 0; i < name.length; i++) {
project(name[i]).projectDir = new File(rootDir.absolutePath + "${File.separator}src${File.separator}${name[i]}")
}
}
谢谢!我真的没有在这方面找到太多,而且那些例子似乎对我不起作用
plugins {
id 'java'
id 'java-library'
id 'org.jetbrains.kotlin.jvm' version '1.5.0'
}
group 'com.example' //not my actually group ID
version '1.0-SNAPSHOT'
test {
useJUnit()
}
java {
modularity.inferModulePath = true
}
tasks.named('compileJava') {
modularity.inferModulePath = true
options.javaModuleVersion = provider { project.version }
}
dependencies {
compile 'org.jetbrains:annotations:20.1.0'
compile 'org.ow2.asm:asm:9.1'
compile 'org.ow2.asm:asm-util:9.1'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
}