Files
dragoon/build.gradle.kts

137 lines
2.8 KiB
Kotlin

import com.netflix.gradle.plugins.deb.Deb
import com.netflix.gradle.plugins.rpm.Rpm
import org.gradle.jvm.tasks.Jar
plugins {
java
application
id("com.netflix.nebula.ospackage") version "12.3.0"
}
group = "tech.bitgoblin"
version = "0.3.13"
description = "Automated video transcoder service"
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(21))
}
}
application {
mainClass.set("tech.bitgoblin.Main")
}
repositories {
mavenCentral()
}
dependencies {
implementation("commons-cli:commons-cli:1.3.1")
implementation("org.tomlj:tomlj:1.0.0")
implementation("org.apache.logging.log4j:log4j-api:2.19.0")
implementation("org.apache.logging.log4j:log4j-core:2.19.0")
testImplementation("junit:junit:4.11")
}
tasks.test {
useJUnit()
}
// Fat JAR
val fatJar by tasks.registering(Jar::class) {
archiveBaseName.set("dragoon")
archiveClassifier.set("")
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
manifest {
attributes["Main-Class"] = "tech.bitgoblin.Main"
}
from(sourceSets.main.get().output)
dependsOn(configurations.runtimeClasspath)
from({
configurations.runtimeClasspath.get()
.filter { it.name.endsWith("jar") }
.map { zipTree(it) }
})
}
// ---------------- Deb ----------------
tasks.register<Deb>("build-deb") {
dependsOn(fatJar)
// Required package metadata
packageName = project.name
version = project.version.toString()
release = "1"
requires("openjdk-21-jre")
requires("ffmpeg")
user = project.name
permissionGroup = project.name
// Copy app files
from(fatJar)
into("/opt/dragoon") {
rename { "dragoon.jar" }
}
from("packaging/opt/dragoon/log4j2.xml") {
into("/opt/dragoon")
}
// config files
from("packaging/etc/dragoon") {
into("/etc/dragoon")
}
// systemd
from("packaging/systemd/dragoon.service") {
into("/etc/systemd/system")
}
}
// ---------------- Rpm ----------------
tasks.register<Rpm>("build-rpm") {
dependsOn(fatJar)
packageName = project.name
version = project.version.toString()
release = "1"
requires("java-21-openjdk")
requires("ffmpeg-free")
user = project.name
permissionGroup = project.name
from(fatJar)
into("/opt/dragoon") {
rename { "dragoon.jar" }
}
from("packaging/opt/dragoon/log4j2.xml") {
into("/opt/dragoon")
}
from("packaging/etc/dragoon") {
into("/etc/dragoon")
}
from("packaging/systemd/dragoon.service") {
into("/etc/systemd/system")
}
postInstall(file("packaging/scripts/postinstall.sh"))
}
// Task to build both
tasks.register("package-all") {
dependsOn("build-deb", "build-rpm")
}