Switched from maven to gradle for builds
This commit is contained in:
136
build.gradle.kts
Normal file
136
build.gradle.kts
Normal file
@@ -0,0 +1,136 @@
|
||||
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.dragoon.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.dragoon.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")
|
||||
}
|
||||
Reference in New Issue
Block a user