Modernize Gradle buildscript #71

Merged
zml2008 merged 4 commits from feature/gradle-modernization into master 2020-11-10 22:11:54 +00:00
6 changed files with 44 additions and 39 deletions
Showing only changes of commit 2691c40575 - Show all commits

View File

@ -3,15 +3,12 @@ plugins {
id 'maven-publish'
}
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
archivesBaseName = project.archives_base_name
version = project.mod_version
group = project.maven_group
dependencies {
//to change the versions see the gradle.properties file
// To change the versions see the gradle.properties file
minecraft "com.mojang:minecraft:${project.minecraft_version}"
mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2"
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
@ -31,23 +28,36 @@ processResources {
}
}
// ensure that the encoding is set to UTF-8, no matter what the system default is
// this fixes some edge cases with special characters not displaying correctly
// see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html
tasks.withType(JavaCompile) {
options.encoding = "UTF-8"
tasks.withType(JavaCompile).configureEach {
// ensure that the encoding is set to UTF-8, no matter what the system default is
// this fixes some edge cases with special characters not displaying correctly
// see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html
// If Javadoc is generated, this must be specified in that task too.
it.options.encoding = "UTF-8"
// The Minecraft launcher currently installs Java 8 for users, so your mod probably wants to target Java 8 too
// JDK 9 introduced a new way of specifying this that will make sure no newer classes or methods are used.
// We'll use that if it's available, but otherwise we'll use the older option.
def targetVersion = JavaVersion.VERSION_1_8
if (JavaVersion.current().isJava9Compatible()) {
it.options.release = targetVersion.ordinal() + 1
} else {
it.sourceCompatibility = targetVersion
it.targetCompatibility = targetVersion
}
}
// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task
// if it is present.
// If you remove this task, sources will not be generated.
task sourcesJar(type: Jar, dependsOn: classes) {
classifier = "sources"
from sourceSets.main.allSource
java {
// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task
// if it is present.
// If you remove this line, sources will not be generated.
withSourcesJar()
}
jar {
from "LICENSE"
from("LICENSE") {
rename { "${it}_${project.name}"}
}
}
// configure the maven publication
@ -65,8 +75,18 @@ publishing {
}
// select the repositories you want to publish to
// to just publish to maven local, no extra repositories are necessary. Just use the task `publishToMavenLocal`.
repositories {
// uncomment to publish to the local maven
// mavenLocal()
// An example of a standard Nexus setup, for those wishing to publish their mod artifacts
// maven {
// if (project.version.endsWith("-SNAPSHOT")) {
Juuxel commented 2020-11-02 17:02:55 +00:00 (Migrated from github.com)
Review

Does this work for sources in other source directories than java, like Kotlin sources?

Does this work for sources in other source directories than `java`, like Kotlin sources?
zml2008 commented 2020-11-03 05:21:39 +00:00 (Migrated from github.com)
Review
It does. `withSourcesJar()` [collects its source from `SourceSet.getAllSource()`](https://github.com/gradle/gradle/blob/a24197ee1f665acd9ed93f345eb5b7f788385151/subprojects/plugins/src/main/java/org/gradle/api/plugins/internal/DefaultJavaPluginExtension.java#L125)
// url = "https://nexus.myorganization.org/repository/maven-snapshots/"
// } else {
// url = "https://nexus.myorganization.org/repository/maven-releases/"
// }
// name = "myRepo"
// credentials(PasswordCredentials) // use the ${name}Username and ${name}Password properties for authentication
// }
}
}

Binary file not shown.

View File

@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.6.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

2
gradlew vendored
View File

@ -130,7 +130,7 @@ fi
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath

21
gradlew.bat vendored
View File

@ -40,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init
if "%ERRORLEVEL%" == "0" goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
@ -54,7 +54,7 @@ goto fail
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto init
if exist "%JAVA_EXE%" goto execute
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
@ -64,21 +64,6 @@ echo location of your Java installation.
goto fail
:init
@rem Get command-line arguments, handling Windows variants
if not "%OS%" == "Windows_NT" goto win9xME_args
:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2
:win9xME_args_slurp
if "x%~1" == "x" goto execute
set CMD_LINE_ARGS=%*
:execute
@rem Setup the command line
@ -86,7 +71,7 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end
@rem End local scope for the variables with windows NT shell

View File

@ -32,6 +32,6 @@
"minecraft": "1.16.x"
},
"suggests": {
"flamingo": "*"
"another-mod": "*"
}
}
modmuss50 commented 2020-11-02 09:59:24 +00:00 (Migrated from github.com)
Review

I would either keep this as flamingo or remote it all togeather.

I dont think many people use the suggests block, and there are 3 good examples on how to use the depends block so removing it seems fine. As good as flamingo is, its a bit of an in joke for the people that know about it, others it may just confuse.

I would either keep this as flamingo or remote it all togeather. I dont think many people use the suggests block, and there are 3 good examples on how to use the depends block so removing it seems fine. As good as flamingo is, its a bit of an in joke for the people that know about it, others it may just confuse.
zml2008 commented 2020-11-03 06:08:21 +00:00 (Migrated from github.com)
Review

will remove... if only JSON allowed comments, would be a good way to explain some things inline

will remove... if only JSON allowed comments, would be a good way to explain some things inline
altrisi commented 2020-11-15 11:58:19 +00:00 (Migrated from github.com)
Review

This ended up being merged with another-mod instead of flamingo or nothing...

This ended up being merged with `another-mod` instead of `flamingo` or nothing...