2024-09-06 01:36:06 +02:00
/ *
* STAROPENSOURCE ENGINEMC SOURCE FILE
* Copyright ( c ) 2024 The StarOpenSource EngineMC Authors
* Licensed under the GNU Affero General Public License v3
*
* This program is free software: you can redistribute it and / or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation , either version 3 of the
* License , or ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU Affero General Public License for more details .
*
* You should have received a copy of the GNU Affero General Public License
* along with this program . If not , see < https: //www.gnu.org/licenses/>.
* /
import java.nio.file.Files
// Plugins
plugins {
id ( "java" )
id ( "io.freefair.lombok" ) version ( "${pluginLombok}" )
id ( "com.gorylenko.gradle-git-properties" ) version ( "${pluginGitProperties}" )
id ( "maven-publish" )
}
// Project dependencies
dependencies {
// Lombok
compileOnly ( "org.projectlombok:lombok:${dependencyLombok}" )
annotationProcessor ( "org.projectlombok:lombok:${dependencyLombok}" )
// JetBrains Annotations
compileOnly ( "org.jetbrains:annotations:${dependencyJetbrainsAnnotations}" )
// StarOpenSource Engine
2024-10-03 21:24:45 +02:00
compileOnly ( "de.staropensource.sosengine:base:${dependencyStarOpenSourceEngine}" )
2024-09-06 01:36:06 +02:00
// Adventure
2024-10-03 21:24:45 +02:00
compileOnly ( "net.kyori:adventure-api:${dependencyAdventure}" )
compileOnly ( "net.kyori:adventure-text-minimessage:${dependencyAdventure}" )
2024-09-06 01:36:06 +02:00
}
// Fix delombok task
delombok . doFirst {
File target = file ( "${project.projectDir}/src/main/module-info.java" )
File source = file ( "${project.projectDir}/src/main/java/module-info.java" )
target . delete ( )
source . renameTo ( target )
}
delombok . doLast {
File target = file ( "${project.projectDir}/src/main/java/module-info.java" )
File source = file ( "${project.projectDir}/src/main/module-info.java" )
target . delete ( )
source . renameTo ( target )
}
// Copy gradle.properties file
// for inclusion in final build
tasks . register ( "copyGradleProperties" ) {
doFirst {
File target = file ( "${project.projectDir}/src/main/resources/sosenginemc-gradle.properties" )
File source = file ( project ( ":" ) . projectDir . getPath ( ) + "/gradle.properties" )
target . delete ( )
Files . copy ( source . toPath ( ) , target . toPath ( ) )
}
outputs . upToDateWhen ( { false } ) // Force task execution
}
processResources . dependsOn ( copyGradleProperties )
// Git properties configuration
// Allows us to embed git commit information in the engine build
gitProperties {
dotGitDirectory = file ( "${rootProject.rootDir}/.git" )
failOnNoGitDirectory = false // Allow continuing if .git directory is missing for the few who use tarballs
extProperty = "gitProps"
dateFormat = "yyyy-MM-dd'T'HH:mmZ"
dateFormatTimeZone = "UTC"
}
tasks . register ( "writeGitProperties" ) { // This task's only purpose is to copy the git.properties from our git properties plugin to the resources directory so it's included in the final build
doLast {
File target = file ( "${project.projectDir}/src/main/resources/sosenginemc-git.properties" )
File source = file ( "${project.projectDir}/build/resources/main/git.properties" )
target . delete ( )
source . renameTo ( target )
}
outputs . upToDateWhen ( { false } ) // Force task execution
}
generateGitProperties . outputs . upToDateWhen ( { false } ) // Force task execution
processResources . dependsOn ( writeGitProperties ) // Ensure git.properties file is present
// Javadoc configuration
javadoc {
outputs . upToDateWhen { false } // Force task execution
dependsOn ( delombok ) // Make sure the source is delomboked first
javadoc {
setClasspath ( files ( project . sourceSets . main . compileClasspath ) ) // Include dependencies
options {
if ( new File ( projectDir , "src/main/javadoc/theme.css" ) . exists ( ) )
stylesheetFile = new File ( projectDir , "src/main/javadoc/theme.css" ) // Theming is cool :3
setMemberLevel ( JavadocMemberLevel . PUBLIC ) // Only display public stuff
setOverview ( "src/main/javadoc/overview.html" ) // We want a custom overview page to greet the visitor
setLocale ( "en_US" ) // 你好
addStringOption ( "Xwerror" , "-quiet" ) // Fail build on warning
setJFlags ( [
"-Duser.language=en_US" // See above
] )
}
}
}
// Include javadoc and source jar during publishing
java {
withJavadocJar ( )
withSourcesJar ( )
}
// Build publishing configuration
// Note: You can safely ignore any errors or warnings thrown by your IDE here
publishing {
repositories {
maven {
name = "staropensource"
url = uri ( "https://mvn.staropensource.de/sosengine" )
credentials ( org . gradle . api . credentials . PasswordCredentials )
authentication {
//noinspection GroovyAssignabilityCheck
basic ( BasicAuthentication )
}
}
}
publications {
//noinspection GroovyAssignabilityCheck
maven ( MavenPublication ) {
groupId = group
artifactId = project . getName ( )
version = version
//noinspection GroovyAssignabilityCheck
from components . java
}
}
}