Использование The Badass JLink plugin

Дано:
Есть приложение JavaFX, оформленное в виде gradle проекта

plugins {
    id 'java'
    id "application"
    id "org.openjfx.javafxplugin" version "0.0.9"
}

group 'ru.cml'
version '0.1'

sourceCompatibility = 11

repositories {
    jcenter()
    mavenCentral()
    mavenLocal()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile group: 'com.opencsv', name: 'opencsv', version: '5.2'
    compile group: 'org.apache.commons', name: 'commons-math3', version: '3.0'
    compile group: 'uk.me.berndporr', name:'iirj', version: '1.1'
}

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

run {
    jvmArgs = ["--add-opens", "javafx.graphics/javafx.css=ALL-UNNAMED"]
}

mainClassName = "foot.ui.main/ru.cml.components.gui.entity.FootUI"

В таком виде всё кажется нормальным, gradlew build и gradlew run работают корректно.

Далее встаёт вопрос о том, чтобы данное приложение предоставить другим людям, причём, что важно, не имеющим на компьютере JRE. Для этого я сначала собрал всё в один fat jar, добавив в build.gradle следующие строки:

jar {
    manifest {
        attributes "Main-Class": "ru.cml.components.gui.entity.FootUI"
    }

    from {
        configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
    }
}

При этом, после запуска gradlew build в директории ./build/libs обнаруживается желаемый jar-файл.

А далее, я пытаюсь использовать плагин Badass JLink Plugin:

plugins {
    id 'org.beryx.jlink' version '2.21.4'
}

Дописывая кроме прочего в build.gradle следующее:

jlink {
    options = ['--strip-debug', '--compress', '2', '--no-header-files', '--no-man-pages']

    launcher{
        name = 'FootUI'
        jvmArgs = ["--add-opens", "javafx.graphics/javafx.css=ALL-UNNAMED"]
    }
}

Содержимое моего файла module-info.java следующее:

module foot.ui.main {
    exports ru.cml.components.gui.entity to javafx.graphics;
    exports ru.cml.components.gui.controller to javafx.fxml;

    requires opencsv;
    requires iirj;
    requires javafx.base;
    requires javafx.controls;
    requires javafx.fxml;
    requires javafx.graphics;

    opens ru.cml.components.gui.controller to javafx.fxml;
}

Как и прежде, сборка проходит успешно, однако при выполнении gradlew jlink возникает ошибка:

Error: Module foot.ui.main contains package org.apache.commons.math3.optimization.general, module ru.cml.merged.module exports package org.apache.commons.math3.optimization.general to foot.ui.main

Вопрос:
Почему так происходит и как бороться?


Ответы (0 шт):