Skip to content

[WIP] Use petr-panteleyev/jpackage-gradle-plugin #710

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 8 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .jbang/JabSrvLauncher.java
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
//DEPS org.glassfish.grizzly:grizzly-http-server:4.0.2
//DEPS org.glassfish.grizzly:grizzly-framework:4.0.2
//DEPS jakarta.validation:jakarta.validation-api:3.1.1
//DEPS org.hibernate.validator:hibernate-validator:8.0.2.Final
//DEPS org.hibernate.validator:hibernate-validator:9.0.0.Final
//DEPS com.konghq:unirest-modules-gson:4.4.7
//DEPS com.google.guava:guava:33.4.8-jre
//DEPS org.jabref:afterburner.fx:2.0.0
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ org.gradle.jvmargs=-Xmx6096M

# hint by https://docs.gradle.org/current/userguide/performance.html#enable_configuration_cache
# Blocked by https://github.com/beryx/badass-jlink-plugin/issues/304
# org.gradle.configuration-cache=true
org.gradle.configuration-cache=true

# org.gradle.configuration-cache.parallel=true

Expand Down
231 changes: 0 additions & 231 deletions jabgui/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ plugins {

// Do not activate; causes issues with the modularity plugin (no tests found etc)
// id("com.redock.classpathtofile") version "0.1.0"

id("org.beryx.jlink") version "3.1.1"
}

group = "org.jabref"
Expand Down Expand Up @@ -206,235 +204,6 @@ tasks.named<JavaExec>("run") {
}
}

tasks.named("jpackage") {
dependsOn("deleteInstallerTemp")
}

tasks.named("jlinkZip") {
dependsOn("jpackage")
}

tasks.register<Delete>("deleteInstallerTemp") {
delete(file("$buildDir/installer"))
}

jlink {
// https://github.com/beryx/badass-jlink-plugin/issues/61#issuecomment-504640018
addExtraDependencies(
"javafx"
)

// We keep debug statements - otherwise "--strip-debug" would be included
addOptions(
"--compress",
"zip-6",
"--no-header-files",
"--no-man-pages",
"--bind-services",
"--add-modules", "jdk.incubator.vector"
)

launcher {
name =
"JabRef"
}

// TODO: Remove as soon as dependencies are fixed (upstream)
forceMerge(
"controlsfx",
"bcprov",
"jaxb",
"istack",
"stax"
)

mergedModule {
requires("com.google.gson")
requires("com.fasterxml.jackson.annotation")
requires("com.fasterxml.jackson.databind")
requires("com.fasterxml.jackson.core")
requires("com.fasterxml.jackson.datatype.jdk8")
requires("jakarta.xml.bind")
requires("java.compiler")
requires("java.datatransfer")
requires("java.desktop")
requires("java.logging")
requires("java.management")
requires("java.naming")
requires("java.net.http")
requires("java.rmi")
requires("java.scripting")
requires("java.security.jgss")
requires("java.security.sasl")
requires("java.sql")
requires("java.sql.rowset")
requires("java.transaction.xa")
requires("java.xml")
requires("javafx.base")
requires("javafx.controls")
requires("javafx.fxml")
requires("javafx.graphics")
requires("javafx.media")
requires("javafx.swing")
requires("jdk.security.jgss")
requires("jdk.unsupported")
requires("jdk.unsupported.desktop")
requires("jdk.xml.dom")
requires("org.apache.commons.lang3")
requires("org.apache.commons.logging")
requires("org.apache.commons.text")
requires("org.apache.commons.codec")
requires("org.apache.commons.io")
requires("org.apache.commons.compress")
requires("org.freedesktop.dbus")
requires("org.jsoup")
requires("org.slf4j")
requires("org.tukaani.xz");

uses("ai.djl.engine.EngineProvider")
uses("ai.djl.repository.RepositoryFactory")
uses("ai.djl.repository.zoo.ZooProvider")
uses("dev.langchain4j.spi.prompt.PromptTemplateFactory")
uses("kong.unirest.core.json.JsonEngine")
uses("org.eclipse.jgit.lib.Signer")
uses("org.eclipse.jgit.transport.SshSessionFactory")
uses("org.postgresql.shaded.com.ongres.stringprep.Profile")

provides("java.sql.Driver").with(
"org.postgresql.Driver")
provides("java.security.Provider").with(
"org.bouncycastle.jce.provider.BouncyCastleProvider",
"org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider")
provides("kong.unirest.core.json.JsonEngine").with(
"kong.unirest.modules.gson.GsonEngine")
provides("ai.djl.repository.zoo.ZooProvider").with(
"ai.djl.engine.rust.zoo.RsZooProvider",
"ai.djl.huggingface.zoo.HfZooProvider",
"ai.djl.pytorch.zoo.PtZooProvider",
"ai.djl.repository.zoo.DefaultZooProvider")
provides("ai.djl.engine.EngineProvider").with(
"ai.djl.engine.rust.RsEngineProvider",
"ai.djl.pytorch.engine.PtEngineProvider")
}

jpackage {
outputDir =
"distribution"

if (OperatingSystem.current().isWindows) {
// This requires WiX to be installed: https://github.com/wixtoolset/wix3/releases
installerType = "msi"

imageOptions.addAll(
listOf(
"--icon", "${projectDir}/src/main/resources/icons/jabref.ico"
)
)

installerOptions.addAll(
listOf(
"--vendor", "JabRef",
"--app-version", "$version",
"--verbose",
"--win-upgrade-uuid", "d636b4ee-6f10-451e-bf57-c89656780e36",
"--win-dir-chooser",
"--win-shortcut",
"--win-menu",
"--win-menu-group", "JabRef",
"--temp", "${layout.buildDirectory.get()}/installer",
"--resource-dir", "$projectDir/buildres/windows",
"--license-file", "$projectDir/buildres/LICENSE_with_Privacy.md",
"--file-associations", "$projectDir/buildres/windows/bibtexAssociations.properties"
)
)
} else if (OperatingSystem.current().isLinux) {
imageOptions.addAll(
listOf(
"--icon", "$projectDir/src/main/resources/icons/JabRef-linux-icon-64.png",
"--app-version", "$version"
)
)

installerOptions.addAll(
listOf(
"--verbose",
"--vendor", "JabRef",
"--app-version", "$version",
// "--temp", "$buildDir/installer",
"--resource-dir", "$projectDir/buildres/linux",
"--linux-menu-group", "Office;",
"--linux-rpm-license-type", "MIT",
// "--license-file", "$projectDir/LICENSE.md",
"--description", "JabRef is an open source bibliography reference manager. Simplifies reference management and literature organization for academic researchers by leveraging BibTeX, native file format for LaTeX.",
"--linux-shortcut",
"--file-associations", "$projectDir/buildres/linux/bibtexAssociations.properties"
)
)
} else if (OperatingSystem.current().isMacOsX) {
imageOptions.addAll(
listOf(
"--icon", "$projectDir/src/main/resources/icons/jabref.icns",
"--resource-dir", "$projectDir/buildres/mac"
)
)

skipInstaller = true

installerOptions.addAll(
listOf(
"--verbose",
"--vendor", "JabRef",
"--mac-package-identifier", "JabRef",
"--mac-package-name", "JabRef",
"--app-version", "$version",
"--file-associations", "$projectDir/buildres/mac/bibtexAssociations.properties",
"--resource-dir", "$projectDir/buildres/mac"
)
)
}
}
}

if (OperatingSystem.current().isWindows) {
tasks.named("jpackageImage").configure {
doLast {
copy {
from(file("$projectDir/buildres/windows")) {
include(
"jabref-firefox.json",
"jabref-chrome.json",
"JabRefHost.bat",
"JabRefHost.ps1"
)
}
into(file("${layout.buildDirectory.get()}/distribution/JabRef"))
}
}
}
} else if (OperatingSystem.current().isLinux) {
tasks.named("jpackageImage").configure {
doLast {
copy {
from(file("$projectDir/buildres/linux")) {
include("native-messaging-host/**", "jabrefHost.py")
}
into(file("${layout.buildDirectory.get()}/distribution/JabRef/lib"))
}
}
}
} else if (OperatingSystem.current().isMacOsX) {
tasks.named("jpackageImage").configure {
doLast {
copy {
from(file("$projectDir/buildres/mac")) {
include("native-messaging-host/**", "jabrefHost.py")
}
into(file("${layout.buildDirectory.get()}/distribution/JabRef.app/Contents/Resources"))
}
}
}
}

javaModuleTesting.whitebox(testing.suites["test"]) {
requires.add("org.junit.jupiter.api")
requires.add("org.junit.jupiter.params")
Expand Down
123 changes: 0 additions & 123 deletions jabkit/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@ plugins {
id("buildlogic.java-common-conventions")

application

id("org.beryx.jlink") version "3.1.1"
}

group = "org.jabref.jabkit"
Expand Down Expand Up @@ -94,124 +92,3 @@ application {
"--enable-native-access=com.sun.jna,javafx.graphics,org.apache.lucene.core"
)
}

// This is more or less a clone of jabgui/build.gradle.kts -> jlink
jlink {
// https://github.com/beryx/badass-jlink-plugin/issues/61#issuecomment-504640018
addExtraDependencies(
"javafx"
)

mergedModuleName = "jabkit.merged.module"

// We keep debug statements - otherwise "--strip-debug" would be included
addOptions(
"--compress",
"zip-6",
"--no-header-files",
"--no-man-pages",
"--bind-services",
"--add-modules", "jdk.incubator.vector"
)

launcher {
name = "jabkit"
}

// TODO: Remove as soon as dependencies are fixed (upstream)
forceMerge(
"bcprov",
"jaxb",
"istack",
"stax"
)

mergedModule {
requires("com.google.gson")
requires("com.fasterxml.jackson.annotation")
requires("com.fasterxml.jackson.databind")
requires("com.fasterxml.jackson.core")
requires("com.fasterxml.jackson.datatype.jdk8")
requires("jakarta.xml.bind")
requires("java.compiler")
requires("java.datatransfer")
requires("java.desktop")
requires("java.logging")
requires("java.management")
requires("java.naming")
requires("java.net.http")
requires("java.rmi")
requires("java.scripting")
requires("java.security.jgss")
requires("java.security.sasl")
requires("java.sql")
requires("java.sql.rowset")
requires("java.transaction.xa")
requires("java.xml")
requires("javafx.base")
requires("javafx.controls")
requires("javafx.fxml")
requires("javafx.graphics")
requires("jdk.security.jgss")
requires("jdk.unsupported")
requires("jdk.unsupported.desktop")
requires("jdk.xml.dom")
requires("org.apache.commons.lang3")
requires("org.apache.commons.logging")
requires("org.apache.commons.text")
requires("org.apache.commons.codec")
requires("org.apache.commons.io")
requires("org.apache.commons.compress")
requires("org.freedesktop.dbus")
requires("org.jsoup")
requires("org.slf4j")
requires("org.tukaani.xz");
uses("ai.djl.engine.EngineProvider")
uses("ai.djl.repository.RepositoryFactory")
uses("ai.djl.repository.zoo.ZooProvider")
uses("dev.langchain4j.spi.prompt.PromptTemplateFactory")
uses("kong.unirest.core.json.JsonEngine")
uses("org.eclipse.jgit.lib.Signer")
uses("org.eclipse.jgit.transport.SshSessionFactory")
uses("org.postgresql.shaded.com.ongres.stringprep.Profile")
provides("java.sql.Driver").with(
"org.postgresql.Driver")
provides("java.security.Provider").with(
"org.bouncycastle.jce.provider.BouncyCastleProvider",
"org.bouncycastle.pqc.jcajce.provider.BouncyCastlePQCProvider")
provides("kong.unirest.core.json.JsonEngine").with(
"kong.unirest.modules.gson.GsonEngine")
provides("ai.djl.repository.zoo.ZooProvider").with(
"ai.djl.engine.rust.zoo.RsZooProvider",
"ai.djl.huggingface.zoo.HfZooProvider",
"ai.djl.pytorch.zoo.PtZooProvider",
"ai.djl.repository.zoo.DefaultZooProvider")
provides("ai.djl.engine.EngineProvider").with(
"ai.djl.engine.rust.RsEngineProvider",
"ai.djl.pytorch.engine.PtEngineProvider")

}
jpackage {
outputDir = "distribution"
skipInstaller = true

imageOptions.addAll(listOf(
"--java-options", "--enable-native-access=jabkit.merged.module"))

// See https://docs.oracle.com/en/java/javase/24/docs/specs/man/jpackage.html#platform-dependent-options-for-creating-the-application-package for available options
if (org.gradle.internal.os.OperatingSystem.current().isWindows) {
imageOptions.addAll(
listOf(
"--win-console"
)
)
} else if (org.gradle.internal.os.OperatingSystem.current().isLinux) {
imageOptions.addAll(
listOf(
"--icon", "$projectDir/../jabgui/src/main/resources/icons/JabRef-linux-icon-64.png",
"--app-version", "$version"
)
)
}
}
}
Loading
Loading