All checks were successful
Gitea Actions Build / build and releases (push) Successful in 5m3s
153 lines
5.1 KiB
Groovy
153 lines
5.1 KiB
Groovy
import java.security.MessageDigest
|
|
|
|
plugins {
|
|
id 'java'
|
|
id 'idea'
|
|
id 'com.github.johnrengelman.shadow' version '8.1.1'
|
|
}
|
|
|
|
String jarNameStr = "${GROUPSID}-${VERSIONS}"
|
|
String jarName = "${jarNameStr}.jar"
|
|
|
|
group = GROUPSID
|
|
version = VERSIONS
|
|
|
|
allprojects {
|
|
repositories {
|
|
maven { url 'https://maven.aliyun.com/repository/public' }
|
|
maven { url "https://maven.aliyun.com/repository/gradle-plugin" }
|
|
maven { name "M2"; url 'https://plugins.gradle.org/m2/' }
|
|
mavenCentral()
|
|
}
|
|
}
|
|
|
|
|
|
dependencies {
|
|
testImplementation platform('org.junit:junit-bom:5.10.0')
|
|
testImplementation 'org.junit.jupiter:junit-jupiter'
|
|
compileOnly 'org.projectlombok:lombok:1.18.36'
|
|
annotationProcessor 'org.projectlombok:lombok:1.18.36'
|
|
implementation 'com.squareup.okhttp3:okhttp:5.0.0-alpha.16'
|
|
implementation 'ch.qos.logback:logback-classic:1.2.12'
|
|
implementation 'org.slf4j:slf4j-api:1.7'
|
|
implementation 'args4j:args4j:2.37'
|
|
implementation 'com.alibaba.fastjson2:fastjson2:2.0.57'
|
|
implementation 'commons-cli:commons-cli:1.9.0'
|
|
}
|
|
|
|
test {
|
|
useJUnitPlatform()
|
|
}
|
|
|
|
ext.generateHash = { file, ads ->
|
|
MessageDigest md = MessageDigest.getInstance(ads)
|
|
file.eachByte(4096) { bytes, size ->
|
|
md.update(bytes, 0x00, size)
|
|
}
|
|
return md.digest().encodeHex().toString()
|
|
}
|
|
|
|
ext.getHash = {
|
|
File file ->
|
|
{
|
|
def path = rootDir.toPath().resolve("build").resolve("libs").toString()
|
|
String md5 = generateHash(file, "MD5")
|
|
String sha1 = generateHash(file, "SHA-1")
|
|
String sha256 = generateHash(file, "SHA-256")
|
|
File md5f = new File(path, file.getName() + ".MD5.txt")
|
|
File sha1f = new File(path, file.getName() + ".SHA1.txt")
|
|
File sha256f = new File(path, file.getName() + ".SHA256.txt")
|
|
md5f.text = md5
|
|
sha1f.text = sha1
|
|
sha256f.text = sha256
|
|
println ">>> 构建成功!"
|
|
println ">>> MD5: ${md5}"
|
|
println ">>> SHA1: ${sha1}"
|
|
println ">>> SHA256: ${sha256}"
|
|
println ">>> 输出文件: ${file.absolutePath}"
|
|
println ">>> 输出文件: ${md5f.absolutePath}"
|
|
println ">>> 输出文件: ${sha1f.absolutePath}"
|
|
println ">>> 输出文件: ${sha256f.absolutePath}"
|
|
println ">>> 文件大小: ${file.length() / 1024 / 1024} MB"
|
|
}
|
|
}
|
|
|
|
|
|
tasks.register("addfile", Copy) {
|
|
def path = rootDir.toPath().resolve("build").resolve("assets").toString()
|
|
from zipTree(tasks.shadowJar.archiveFile.get())
|
|
into path
|
|
dependsOn tasks.shadowJar
|
|
doFirst {
|
|
mkdir path
|
|
}
|
|
}
|
|
|
|
tasks.register("zipsrc", Zip) {
|
|
def path = rootDir.toPath().resolve("build").resolve("libs").resolve(jarNameStr).toString()
|
|
def pathsource = rootDir.toPath().resolve("src").resolve("main").resolve('java').toString()
|
|
def pathresources = rootDir.toPath().resolve("src").resolve("main").resolve('resources').toString()
|
|
archiveFileName = path + ".source.jar"
|
|
entryCompression = ZipEntryCompression.DEFLATED
|
|
from 'LICENSE' into '.'
|
|
from 'README.md' into '.'
|
|
from 'README_EN.md' into '.'
|
|
from fileTree(pathresources) into '.'
|
|
from fileTree(pathsource) into '.'
|
|
doLast {
|
|
getHash(new File(path + ".source.jar"))
|
|
}
|
|
}
|
|
|
|
tasks.register("zipJar", Zip) {
|
|
def path = rootDir.toPath().resolve("build").resolve("libs").toString()
|
|
def jarpath = rootDir.toPath().resolve("build").resolve("libs").resolve(jarName).toString()
|
|
def assetspath = rootDir.toPath().resolve("build").resolve("assets").toString()
|
|
delete fileTree(path)
|
|
archiveFileName = jarpath
|
|
entryCompression = ZipEntryCompression.DEFLATED
|
|
from fileTree(assetspath) into '.'
|
|
from 'LICENSE' into '.'
|
|
from 'README.md' into '.'
|
|
from 'README_EN.md' into '.'
|
|
dependsOn tasks.addfile
|
|
dependsOn tasks.zipsrc
|
|
}
|
|
|
|
tasks.register("build-jar") {
|
|
def path = rootDir.toPath().resolve("build").resolve("libs")
|
|
def pathassets = rootDir.toPath().resolve("build").resolve("assets").toString()
|
|
|
|
delete fileTree(path.toString())
|
|
dependsOn tasks.zipJar
|
|
|
|
doLast {
|
|
getHash(path.resolve(jarName).toFile())
|
|
delete pathassets
|
|
}
|
|
}
|
|
shadowJar {
|
|
archiveFileName = jarName
|
|
duplicatesStrategy = DuplicatesStrategy.INCLUDE
|
|
minimize()
|
|
manifest {
|
|
attributes 'Main-Class': MAIMCLASSSTR
|
|
attributes 'Implementation-Title': GROUPSID
|
|
attributes 'Implementation-Version': VERSIONS
|
|
attributes 'Email': 'minglipro@163.com'
|
|
attributes 'Implementation-Vendor': 'minglipro|Armamem0t'
|
|
attributes 'COPYRIGHT': 'Copyright 2026 minglipro All rights reserved.'
|
|
attributes 'Env': 'prod'
|
|
attributes 'LICENSE': 'Apache License 2.0'
|
|
attributes 'Created': '2025-06-18 13:05:06'
|
|
attributes 'Updated': new Date().format('yyyy-MM-dd HH:mm:ss')
|
|
}
|
|
from {
|
|
project.configurations.runtimeClasspath.collect {
|
|
it.isDirectory() ? it : zipTree(it)
|
|
}
|
|
}
|
|
exclude '**/LICENSE'
|
|
exclude '**/LICENSE.*'
|
|
exclude '**/NOTICE.*'
|
|
} |