首页 > 解决方案 > 在 Gradle 中使用 Java 9 项目 Jigsaw

问题描述

我正在使用 Gradle、Kotlin 和 Java 9 模块(Jigsaw)构建一个库。我正在尝试构建类似于OpenJDK Jdk的构建结构,因此结构如下所示:

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' 只是我项目的完整路径):

项目目录“PATH_TO_PROJECT/src/module1”不是设置文件“PATH_TO_PROJECT/settings.gradle”定义的构建的一部分。如果这是一个不相关的构建,它必须有自己的设置文件。

(这个问题发生在我拥有的每个模块上)

当我将 settings.gradle 添加到任何模块时,其他模块会停止识别它和/或它不会添加到模块路径中。如果我不添加 settings.gradle,那么我的模块可以工作,但 gradle 不能。我还尝试通过名称和指定路径将模块包含在根 settings.gradle 中。如果我按名称包含,同样的问题,如果我包含并指定一个路径,那么 gradle 抱怨它找不到指定的项目(我知道路径是正确的)。

这是我的设置/build.gradle:

设置.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]}")
    }
}

build.gradle(我用 build.gradle 尝试了很多不同的东西,所以它到处都是):

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'
}


谢谢!我真的没有在这方面找到太多东西,而且那里的例子似乎对我不起作用!

标签: javakotlingradlejava-platform-module-system

解决方案


推荐阅读