Структура файла
Код: Выделить всё
.
| settings.gradle
| gradlew
| linrboot
| | build.gradle
| | bin
| | build
| | src
| linr
| | build.gradle
| | bin
| | build
| | src
Код: Выделить всё
plugins {
// Apply the foojay-resolver plugin to allow automatic download of JDKs
id 'org.gradle.toolchains.foojay-resolver-convention' version '0.8.0'
}
rootProject.name = 'linr'
include'linr', 'linrboot'
Код: Выделить всё
import org.gradle.nativeplatform.platform.internal.DefaultNativePlatform
plugins {
id 'java-library'
id 'application'
id 'org.javamodularity.moduleplugin' version '1.8.9'
id 'org.beryx.jlink' version '3.0.1'
id 'org.openjfx.javafxplugin' version '0.1.0'
}
repositories {
mavenCentral()
}
javafx {
version = '22.0.1'
configuration = 'implementation'
modules = ['javafx.base', 'javafx.controls', 'javafx.fxml', 'javafx.media', 'javafx.swing']
}
dependencies {
implementation 'org.apache.pdfbox:pdfbox:3.0.2'
implementation 'com.jfoenix:jfoenix:9.0.10'
implementation 'org.apache.commons:commons-text:1.12.0'
implementation 'org.apache.commons:commons-lang3:3.16.0'
implementation 'jakarta.mail:jakarta.mail-api:2.1.3'
implementation 'org.eclipse.angus:angus-mail:2.0.3'
implementation 'org.update4j:update4j:1.5.9'
implementation project(':linr')
testImplementation 'org.junit.jupiter:junit-jupiter:5.7.1'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
test {
useJUnit()
}
application {
mainModule = "com.dittmer.linrboot"
mainClass = "com.dittmer.linrboot.App"
}
Код: Выделить всё
module com.dittmer.linrboot
{
requires java.base;
requires javafx.swing;
requires javafx.fxml;
requires javafx.base;
requires transitive javafx.controls;
requires javafx.graphics;
requires org.update4j;
requires com.dittmer.linr;
exports com.dittmer.linrboot;
}
Код: Выделить всё
import org.gradle.nativeplatform.platform.internal.DefaultNativePlatform
plugins {
id 'java-library'
id 'application'
id 'org.javamodularity.moduleplugin' version '1.8.9'
id 'org.beryx.jlink' version '3.0.1'
id 'org.openjfx.javafxplugin' version '0.1.0'
}
repositories {
mavenCentral()
}
javafx {
version = '22.0.1'
configuration = 'implementation'
modules = ['javafx.base', 'javafx.controls', 'javafx.fxml', 'javafx.media', 'javafx.swing']
}
dependencies {
implementation 'org.apache.pdfbox:pdfbox:3.0.2'
implementation 'com.jfoenix:jfoenix:9.0.10'
implementation 'org.apache.commons:commons-text:1.12.0'
implementation 'org.apache.commons:commons-lang3:3.16.0'
implementation 'jakarta.mail:jakarta.mail-api:2.1.3'
implementation 'org.eclipse.angus:angus-mail:2.0.3'
implementation 'org.update4j:update4j:1.5.9'
testImplementation 'org.junit.jupiter:junit-jupiter:5.7.1'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
def currentOS = DefaultNativePlatform.currentOperatingSystem
version = "1.0"
jlink {
options = ['--strip-debug', '--compress', '2', '--no-header-files', '--no-man-pages']
launcher {
name = 'Linr'
}
forceMerge('log4j-api')
if (currentOS.isWindows()) {
jpackage {
installerType = 'msi'
icon = "${project.rootDir}/src/main/resources/com/dittmer/linr/icons/linr.ico"
installerOptions = [
'--win-menu',
'--win-menu-group', 'DittmerLabs',
'--win-shortcut-prompt',
'--win-upgrade-uuid', '52910e5b-eb4c-4d58-b892-a2679656861c',
'--win-dir-chooser',
'--copyright', 'Copyright (c) 2024 DittmerLab',
'--description', 'Linr is a new way of taking line notes for theatrical productions.',
'--vendor', 'DittmerLabs',
'--license-file', 'LICENSE.md',
'--app-version', "${project.version.toString()}",
'--about-url', 'https://github.com/DittmerK',
]
}
} else if (currentOS.isLinux()) {
jpackage {
installerType = 'rpm'
icon = "${project.rootDir}/src/main/resources/com/dittmer/linr/icons/Linr.png"
installerOptions = [
'--linux-shortcut',
'--linux-package-name', 'com.dittmer.linr',
'--linux-rpm-license-type', 'AGPL',
'--copyright', 'Copyright (c) 2024 DittmerLabs',
'--description', 'Linr is a new way of taking line notes for theatrical productions.',
'--vendor', 'DittmerLabs',
'--license-file', 'LICENSE.md',
'--app-version', "${project.version.toString()}",
'--about-url', 'https://github.com/DittmerK/'
]
}
} else if (currentOS.isMacOsX()) {
jpackage {
installerType = 'dmg'
icon = "${project.rootDir}/src/main/resources/com/dittmer/linr/icons/Linr.png"
installerOptions = [
'--mac-package-name', 'Linr',
'--mac-package-identifier', 'com.dittmer.linr',
'--mac-app-category', 'public.app-category.music',
'--copyright', 'Copyright (c) 2024 DittmerLabs',
'--description', 'Linr is a new way of taking line notes for theatrical productions.',
'--vendor', 'DittmerLabs',
'--license-file', 'LICENSE.md',
'--app-version', "${project.version.toString()}",
'--about-url', 'https://github.com/DittmerK/'
]
}
}
}
test {
useJUnit()
}
application {
mainModule = "com.dittmer.linr"
mainClass = "com.dittmer.linr.App"
}
Код: Выделить всё
module com.dittmer.linr
{
requires java.base;
requires javafx.swing;
requires javafx.fxml;
requires javafx.base;
requires jakarta.mail;
requires org.eclipse.angus.mail;
requires transitive javafx.controls;
requires transitive com.jfoenix;
requires transitive org.apache.pdfbox;
requires org.apache.commons.text;
requires org.apache.commons.lang3;
requires javafx.graphics;
exports com.dittmer.linr;
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... dular-java