Gradle Multi-Modular, Sub-Project не может видеть зависимости

Ниже приведена структура проекта с MyProject в качестве корневого проекта и DataManager и FileManger в качестве подпроектов. Корневой проект включает в себя как подпроекты, так и DataManger, включая FileManager. Проблема в том, что зависимости DataManager не видны, поэтому в нем говорится. MyProject имеет ту же проблему при импорте DataManager. Все ошибки похожи на эту:

C:UsersXXXXXXMyProjectDataManagersrcmainjavaDataManagerDataManager.java:15: error: package org.yaml.snakeyaml is not visible
import org.yaml.snakeyaml.Yaml;
               ^
  (package org.yaml.snakeyaml is declared in the unnamed module, but module org.yaml.snakeyaml does not read it)

,

MyProject
   uild.gradle
    settings.gradle
    src
       main
           java
               module-info.java
                MyProject
                    App.java
   DataManager
      uild.gradle
       src
          main
              java
                  module-info.java
                   DataManager
                       DataManager.java
   FileManger
      uild.gradle
       src
          main
              java
                  module-info.java
                   FileManger
                       FileManger.java

MyProject Build:

plugins {
    id 'java'
    id 'application'
    id 'groovy'
    id 'org.openjfx.javafxplugin' version Ɔ.0.8'
    id 'org.beryx.jlink' version ƈ.12.0'
}

javafx {
    version = "13"
    modules = [ 'javafx.controls', 'javafx.fxml' ]
}

mainClassName = "$moduleName/MyProject.App"

jlink {
    options = ['--strip-debug', '--compress', ƈ', '--no-header-files', '--no-man-pages']
    launcher {
        name = 'MyProject'
    }
}

repositories {
    jcenter()
}

dependencies {
    implementation 'com.google.guava:guava:28.1-jre'

    testImplementation 'org.codehaus.groovy:groovy-all:2.5.8'

    testImplementation 'org.spockframework:spock-core:1.3-groovy-2.5'
    testImplementation 'junit:junit:4.12'

    compile project (':DataManager')
    compile project (':FileManager')
}

application {
    mainClassName = 'MyProject.App'
    mainClassName = "$moduleName/MyProject.App"
}

Информация о модуле MyProject:

module MyProject{
    requires javafx.fxml;
    requires javafx.controls;
    requires DataManager;

    opens MyProject to javafx.fxml;
    exports MyProject;
}

Сборка DataManger:

plugins {
    id 'java'
    id 'groovy'
}

repositories {
    jcenter()
}

dependencies {
    implementation 'com.google.guava:guava:28.1-jre'

    // Use SnakeYAML
    implementation group: 'org.yaml', name: 'snakeyaml', version: Ƈ.25'

    testImplementation 'org.codehaus.groovy:groovy-all:2.5.8'

    testImplementation 'org.spockframework:spock-core:1.3-groovy-2.5'
    testImplementation 'junit:junit:4.12'

    compile project(':FileManager')
}

Модуль данных DataManager:

module DataManager{
    requires FileManager;
    requires snakeyaml;

    exports DataManager;
}

Сборка FileManager:

plugins {
    id 'java'
    id 'groovy'
}

repositories {
    jcenter()
}

dependencies {
    implementation 'com.google.guava:guava:28.1-jre'

    testImplementation 'org.codehaus.groovy:groovy-all:2.5.8'

    testImplementation 'org.spockframework:spock-core:1.3-groovy-2.5'
    testImplementation 'junit:junit:4.12'
}

Информация о модуле FileManager:

module FileManager{
   exports FileManager;
}

Всего 1 ответ


Удалите файлы module-info.java при использовании Gradle.


Есть идеи?

10000