Gradle Multi-Modular, Sub-Project не может видеть зависимости - PullRequest
0 голосов
/ 10 февраля 2020

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

C:\Users\XX\XX\XX\MyProject\DataManager\src\main\java\DataManager\DataManager.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
   \build.gradle
    settings.gradle
    src
       \main
           \java
               \module-info.java
                MyProject
                    \App.java
   \DataManager
      \build.gradle
       src
          \main
              \java
                  \module-info.java
                   DataManager
                       \DataManager.java
   \FileManger
      \build.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.0.8'
    id 'org.beryx.jlink' version '2.12.0'
}

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

mainClassName = "$moduleName/MyProject.App"

jlink {
    options = ['--strip-debug', '--compress', '2', '--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: '1.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 Ответ

0 голосов
/ 11 февраля 2020

Удалите информацию о модуле. java файлы при использовании Gradle.

...