Сборка Java 11 проекта с использованием Gradle плюс JavaFX и зависимостей - PullRequest
0 голосов
/ 26 апреля 2020

Я пытаюсь построить свой проект Java 11, чтобы иметь либо исполняемый jar (FatJar, SuperJar, как бы он ни назывался), либо EXE, либо любую версию работоспособной версии, даже командный файл (с помощью приложения). Все, что я пытаюсь получить, либо отсутствует JavaFX, либо мои зависимости включены пакеты не видны, и это ошибка.

Вот мой build.gradle

plugins {
    id 'application'
    id 'java'
    id 'maven-publish'
    id 'org.openjfx.javafxplugin' version '0.0.8'
    id 'edu.sc.seis.launch4j' version '2.4.6'
    id 'org.beryx.jlink' version '2.12.0'
}

application {
    mainClassName = 'sassa.sassa.Main'
}


repositories {
    mavenLocal()
    maven {
        url = uri('https://jitpack.io')
    }

    maven {
        url = uri('https://repo.maven.apache.org/maven2')
    }
}

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

jlink {
    launcher {
        name = 'sassa'
    }
}

dependencies {
    implementation 'com.github.toolbox4minecraft:amidst:v4.4-beta1'
    implementation 'com.googlecode.json-simple:json-simple:1.1.1'
}

jar {
    manifest {
        attributes("Manifest-Version": "1.0",
                "Main-Class": "sassa.main.Main");
    }
}
compileJava {
    doFirst {
        println "CLASSPATH IS $classpath.asPath"
        options.compilerArgs = [
                '--module-path', classpath.asPath,
                '--add-modules', 'javafx.graphics',
                '--add-modules', 'javafx.controls',
                '--add-modules', 'javafx.fxml'
        ]
        classpath = files()
    }
}

task fatJar(type: Jar) {
    manifest.from jar.manifest
    classifier = 'all'
    from {
        configurations.runtime.collect { it.isDirectory() ? it : zipTree(it) }
        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
    } {
        exclude "META-INF/*.SF"
        exclude "META-INF/*.DSA"
        exclude "META-INF/*.RSA"
    }
    with jar
}

launch4j {
    mainClassName = 'sassa.main.Main'
    icon = "${projectDir}/src/main/resources/sassa/sassa.ico"
    jreMinVersion = '11'
    jreMaxVersion = '14'
    jdkPreference = 'preferJre'
    initialHeapSize = 128
    maxHeapSize = 512
    stayAlive = false
    bundledJre64Bit = true
    dontWrapJar = true
    bundledJrePath = 'jre'
}

group = 'sassa'
version = '0.5.0'
sourceCompatibility = '11'

publishing {
    publications {
        maven(MavenPublication) {
            from(components.java)
        }
    }
}

Также для макета проекта это на github (раньше я использовал maven, но подумал, что Gradle может работать лучше. (код maven все еще на github) https://github.com/Zodsmar/SeedSearcherStandaloneTool/tree/development

Буквально я все перепробовал и могу Кажется, что не получается распространяемая версия для сборки ...

Также я прочитал о файлах module.info. У меня их нет. Я хочу иметь простой build.gradle, который просто включает в себя все, что мне нужно построить исполняемый файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...