mirror of
https://github.com/GravitLauncher/Launcher
synced 2024-12-23 09:01:08 +03:00
214 lines
7.5 KiB
Groovy
214 lines
7.5 KiB
Groovy
def mainClassName = "pro.gravit.launchserver.LaunchServerStarter"
|
|
def mainAgentName = "pro.gravit.launchserver.StarterAgent"
|
|
|
|
evaluationDependsOn(':Launcher')
|
|
|
|
repositories {
|
|
maven {
|
|
url "https://oss.sonatype.org/content/repositories/snapshots"
|
|
}
|
|
maven {
|
|
url "https://maven.geomajas.org/"
|
|
}
|
|
}
|
|
|
|
sourceCompatibility = '11'
|
|
targetCompatibility = '11'
|
|
|
|
configurations {
|
|
compileOnlyA
|
|
bundleOnly
|
|
bundle
|
|
hikari
|
|
pack
|
|
launch4j
|
|
bundleOnly.extendsFrom bundle
|
|
api.extendsFrom bundle, hikari, pack, launch4j
|
|
}
|
|
|
|
jar {
|
|
dependsOn parent.childProjects.Launcher.tasks.assemble
|
|
from { configurations.pack.collect { it.isDirectory() ? it : zipTree(it) } }
|
|
from(parent.childProjects.Launcher.tasks.shadowJar)
|
|
from(parent.childProjects.Launcher.tasks.genRuntimeJS)
|
|
manifest.attributes("Main-Class": mainClassName,
|
|
"Premain-Class": mainAgentName,
|
|
"Multi-Release": "true",
|
|
"Can-Redefine-Classes": "true",
|
|
"Can-Retransform-Classes": "true",
|
|
"Can-Set-Native-Method-Prefix": "true"
|
|
)
|
|
}
|
|
|
|
test {
|
|
useJUnitPlatform()
|
|
testLogging {
|
|
events "passed", "skipped", "failed"
|
|
}
|
|
}
|
|
|
|
task sourcesJar(type: Jar) {
|
|
from sourceSets.main.allJava
|
|
archiveClassifier = 'sources'
|
|
}
|
|
|
|
task javadocJar(type: Jar) {
|
|
from javadoc
|
|
archiveClassifier = 'javadoc'
|
|
}
|
|
|
|
task cleanjar(type: Jar, dependsOn: jar) {
|
|
classifier = 'clean'
|
|
manifest.attributes("Main-Class": mainClassName,
|
|
"Premain-Class": mainAgentName,
|
|
"Can-Redefine-Classes": "true",
|
|
"Can-Retransform-Classes": "true",
|
|
"Can-Set-Native-Method-Prefix": "true"
|
|
)
|
|
from sourceSets.main.output
|
|
}
|
|
|
|
|
|
dependencies {
|
|
pack project(':LauncherAPI')
|
|
bundle group: 'org.fusesource.jansi', name: 'jansi', version: rootProject['verJansi']
|
|
bundle group: 'org.jline', name: 'jline', version: rootProject['verJline']
|
|
bundle group: 'org.jline', name: 'jline-reader', version: rootProject['verJline']
|
|
bundle group: 'org.jline', name: 'jline-terminal', version: rootProject['verJline']
|
|
bundle group: 'org.bouncycastle', name: 'bcpkix-jdk15on', version: rootProject['verBcpkix']
|
|
bundle group: 'org.ow2.asm', name: 'asm-commons', version: rootProject['verAsm']
|
|
bundle group: 'io.netty', name: 'netty-all', version: rootProject['verNetty']
|
|
bundle group: 'org.slf4j', name: 'slf4j-simple', version: rootProject['verSlf4j']
|
|
bundle group: 'org.slf4j', name: 'slf4j-api', version: rootProject['verSlf4j']
|
|
bundle group: 'org.hibernate', name: 'hibernate-core', version: rootProject['verHibernate']
|
|
bundle group: 'org.hibernate', name: 'hibernate-hikaricp', version: rootProject['verHibernate']
|
|
bundle group: 'mysql', name: 'mysql-connector-java', version: rootProject['verMySQLConn']
|
|
bundle group: 'org.postgresql', name: 'postgresql', version: rootProject['verPostgreSQLConn']
|
|
bundle group: 'net.sf.proguard', name: 'proguard-base', version: rootProject['verProguard']
|
|
testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter', version: rootProject['verJunit']
|
|
|
|
hikari 'io.micrometer:micrometer-core:1.0.6'
|
|
hikari('com.zaxxer:HikariCP:3.4.1') {
|
|
exclude group: 'javassist'
|
|
exclude group: 'io.micrometer'
|
|
exclude group: 'org.slf4j'
|
|
}
|
|
|
|
launch4j('net.sf.launch4j:launch4j:' + rootProject['verLaunch4j']) {
|
|
exclude group: 'org.apache.ant'
|
|
exclude group: 'net.java.abeille'
|
|
exclude group: 'foxtrot'
|
|
exclude group: 'com.jgoodies'
|
|
exclude group: 'org.slf4j'
|
|
}
|
|
launch4j('net.sf.launch4j:launch4j:' + rootProject['verLaunch4j'] + ':workdir-win32') { transitive = false }
|
|
launch4j('net.sf.launch4j:launch4j:' + rootProject['verLaunch4j'] + ':workdir-linux64') { transitive = false }
|
|
|
|
compileOnlyA group: 'com.google.guava', name: 'guava', version: rootProject['verGuavaC']
|
|
// Do not update (laggy deps).
|
|
compileOnlyA 'log4j:log4j:1.2.17'
|
|
compileOnlyA 'org.apache.logging.log4j:log4j-core:2.11.2'
|
|
}
|
|
|
|
task hikari(type: Copy) {
|
|
duplicatesStrategy = 'EXCLUDE'
|
|
into "$buildDir/libs/libraries/hikaricp"
|
|
from configurations.hikari
|
|
}
|
|
|
|
task launch4j(type: Copy) {
|
|
duplicatesStrategy = 'EXCLUDE'
|
|
into "$buildDir/libs/libraries/launch4j"
|
|
from(configurations.launch4j.collect {
|
|
it.isDirectory() ? it : ((it.getName().startsWith("launch4j") && it.getName().contains("workdir")) ? zipTree(it) : it)
|
|
})
|
|
includeEmptyDirs false
|
|
eachFile { FileCopyDetails fcp ->
|
|
if (fcp.relativePath.pathString.startsWith("launch4j-") &&
|
|
fcp.relativePath.pathString.contains("workdir")) {
|
|
def segments = fcp.relativePath.segments
|
|
def pathSegments = segments[1..-1] as String[]
|
|
fcp.relativePath = new RelativePath(!fcp.file.isDirectory(), pathSegments)
|
|
} else if (fcp.relativePath.pathString.contains("META-INF")) fcp.exclude()
|
|
fcp.mode = 0755
|
|
}
|
|
}
|
|
|
|
task dumpLibs(type: Copy) {
|
|
duplicatesStrategy = 'EXCLUDE'
|
|
dependsOn tasks.hikari, tasks.launch4j
|
|
into "$buildDir/libs/libraries"
|
|
from configurations.bundleOnly
|
|
}
|
|
|
|
task dumpCompileOnlyLibs(type: Copy) {
|
|
duplicatesStrategy = 'EXCLUDE'
|
|
into "$buildDir/libs/launcher-libraries-compile"
|
|
from configurations.compileOnlyA
|
|
}
|
|
|
|
task bundle(type: Zip) {
|
|
duplicatesStrategy = 'EXCLUDE'
|
|
dependsOn parent.childProjects.Launcher.tasks.build, tasks.dumpLibs, tasks.dumpCompileOnlyLibs, tasks.jar
|
|
archiveFileName = 'LaunchServer.zip'
|
|
destinationDirectory = file("$buildDir")
|
|
from(tasks.dumpLibs.destinationDir) { into 'libraries' }
|
|
from(tasks.dumpCompileOnlyLibs.destinationDir) { into 'launcher-libraries-compile' }
|
|
from(tasks.jar)
|
|
from(parent.childProjects.Launcher.tasks.dumpLibs) { into 'launcher-libraries' }
|
|
}
|
|
|
|
task dumpClientLibs(type: Copy) {
|
|
dependsOn parent.childProjects.Launcher.tasks.build
|
|
into "$buildDir/libs/launcher-libraries"
|
|
from parent.childProjects.Launcher.tasks.dumpLibs
|
|
}
|
|
|
|
assemble.dependsOn tasks.dumpLibs, tasks.dumpCompileOnlyLibs, tasks.dumpClientLibs, tasks.bundle, tasks.cleanjar
|
|
|
|
|
|
publishing {
|
|
publications {
|
|
launchserverapi(MavenPublication) {
|
|
artifactId = 'launchserver-api'
|
|
artifact(cleanjar) {
|
|
classifier ""
|
|
}
|
|
artifact sourcesJar
|
|
artifact javadocJar
|
|
pom {
|
|
name = 'GravitLauncher LaunchServer API'
|
|
description = 'GravitLauncher LaunchServer Module API'
|
|
url = 'https://launcher.gravit.pro'
|
|
licenses {
|
|
license {
|
|
name = 'GNU General Public License, Version 3.0'
|
|
url = 'https://www.gnu.org/licenses/gpl-3.0.html'
|
|
}
|
|
}
|
|
developers {
|
|
developer {
|
|
id = 'gravita'
|
|
name = 'Gravita'
|
|
email = 'gravita@gravit.pro'
|
|
}
|
|
developer {
|
|
id = 'zaxar163'
|
|
name = 'Zaxar163'
|
|
email = 'zahar.vcherachny@yandex.ru'
|
|
}
|
|
}
|
|
|
|
scm {
|
|
connection = 'scm:git:https://github.com/GravitLauncher/Launcher.git'
|
|
developerConnection = 'scm:git:ssh://git@github.com:GravitLauncher/Launcher.git'
|
|
url = 'https://launcher.gravit.pro/'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
signing {
|
|
sign publishing.publications.launchserverapi
|
|
}
|