Skip to content

Commit da41885

Browse files
committed
gradle-2.0 - Update the plugin to use Java 17 and Gradle 9
- Modernize buildscript, Gradle 9, GradleUtils 3 - Require :at-gradle-demo:assemble to pass before publishing
1 parent 6b7eb43 commit da41885

36 files changed

+569
-654
lines changed

.github/workflows/plugin-publish.yml

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@ on:
44
push:
55
branches: [ 'master' ]
66
paths:
7-
- at-gradle/**
7+
- 'at-gradle/**'
88
- '!.github/workflows/**'
9-
- '!settings.gradle'
9+
- '!docs/**'
10+
- '!README.md'
1011

1112
permissions:
1213
contents: read
@@ -16,15 +17,15 @@ jobs:
1617
uses: MinecraftForge/SharedActions/.github/workflows/gradle.yml@v0
1718
with:
1819
java: 17
19-
gradle_tasks: ':at-gradle:publish :at-gradle:publishPlugins'
20-
artifact_name: 'accesstransformers-gradle'
20+
gradle_tasks: ':at-gradle:check :at-gradle-demo:assemble :at-gradle:publish :at-gradle:publishPlugins'
2121
project_path: 'at-gradle'
2222
secrets:
2323
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
24+
MAVEN_USER: ${{ secrets.MAVEN_USER }}
25+
MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}
2426
PROMOTE_ARTIFACT_WEBHOOK: ${{ secrets.PROMOTE_ARTIFACT_WEBHOOK }}
2527
PROMOTE_ARTIFACT_USERNAME: ${{ secrets.PROMOTE_ARTIFACT_USERNAME }}
2628
PROMOTE_ARTIFACT_PASSWORD: ${{ secrets.PROMOTE_ARTIFACT_PASSWORD }}
27-
MAVEN_USER: ${{ secrets.MAVEN_USER }}
28-
MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}
2929
GRADLE_PUBLISH_KEY: ${{ secrets.GRADLE_PUBLISH_KEY }}
30-
GRADLE_PUBLISH_SECRET: ${{ secrets.GRADLE_PUBLISH_SECRET }}
30+
GRADLE_PUBLISH_SECRET: ${{ secrets.GRADLE_PUBLISH_SECRET }}
31+
GRADLE_CACHE_KEY: ${{ secrets.GRADLE_CACHE_KEY }}

.github/workflows/publish.yml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@ name: Publish
33
on:
44
push:
55
branches: [ 'master' ]
6+
paths-ignore:
7+
- '.github/workflows/**'
8+
- 'docs/**'
9+
- 'README.md'
610

711
permissions:
812
contents: read
@@ -12,12 +16,12 @@ jobs:
1216
uses: MinecraftForge/SharedActions/.github/workflows/gradle.yml@v0
1317
with:
1418
java: 17
15-
gradle_tasks: 'publish'
16-
artifact_name: 'accesstransformers'
19+
gradle_tasks: 'check publish'
1720
secrets:
1821
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
22+
MAVEN_USER: ${{ secrets.MAVEN_USER }}
23+
MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}
1924
PROMOTE_ARTIFACT_WEBHOOK: ${{ secrets.PROMOTE_ARTIFACT_WEBHOOK }}
2025
PROMOTE_ARTIFACT_USERNAME: ${{ secrets.PROMOTE_ARTIFACT_USERNAME }}
2126
PROMOTE_ARTIFACT_PASSWORD: ${{ secrets.PROMOTE_ARTIFACT_PASSWORD }}
22-
MAVEN_USER: ${{ secrets.MAVEN_USER }}
23-
MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}
27+
GRADLE_CACHE_KEY: ${{ secrets.GRADLE_CACHE_KEY }}
File renamed without changes.

at-gradle-demo/build.gradle

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
// TODO [AccessTransformers][at-gradle] Finish Demo project!
2-
// See rootProject's settings.gradle for includeBuild line
3-
41
plugins {
52
id 'java'
63
id 'net.minecraftforge.accesstransformers'
@@ -13,5 +10,6 @@ accessTransformers.register {
1310
}
1411

1512
dependencies {
16-
compileOnly accessTransformers.dep(libs.coremods)
13+
implementation accessTransformers.dep(libs.coremods)
14+
compileOnly libs.log4j.api
1715
}

at-gradle-demo/settings.gradle

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,31 @@
1-
import org.gradle.api.initialization.resolve.RepositoriesMode
2-
31
pluginManagement {
42
includeBuild '../at-gradle'
53

64
repositories {
5+
//mavenLocal()
6+
mavenCentral()
7+
gradlePluginPortal()
78
maven { url = 'https://maven.minecraftforge.net' }
89
}
910
}
1011

12+
plugins {
13+
id 'org.gradle.toolchains.foojay-resolver-convention' version '1.0.0'
14+
id 'net.minecraftforge.gradleutils' version '3.2.5'
15+
}
16+
1117
rootProject.name = 'at-gradle-demo'
1218

1319
dependencyResolutionManagement {
1420
repositories {
15-
maven { url = 'https://maven.minecraftforge.net' }
21+
mavenCentral()
22+
maven gradleutils.forgeMaven
1623
}
1724

18-
repositoriesMode = RepositoriesMode.FAIL_ON_PROJECT_REPOS
19-
2025
versionCatalogs.register('libs') {
2126
library 'coremods', 'net.minecraftforge', 'coremods' version '5.2.6'
27+
28+
version 'log4j', '2.19.0'
29+
library 'log4j-api', 'org.apache.logging.log4j', 'log4j-api' versionRef 'log4j'
2230
}
2331
}
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
package net.minecraftforge.debug.accesstransformers;
22

3-
import net.minecraftforge.coremod.CoreMod;
43
import net.minecraftforge.coremod.CoreModEngine;
54

65
public class TestClass {
76
public static void main(String[] args) {
8-
System.out.println(CoreMod.COREMODLOG);
7+
System.out.println(CoreModEngine.COREMOD);
98
System.out.println(CoreModEngine.LOGGER);
109
}
1110
}

at-gradle/build.gradle

Lines changed: 48 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,73 @@
1-
import org.gradle.util.GradleVersion
21
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
3-
import io.freefair.gradle.plugins.maven.javadoc.JavadocLinkUtil
2+
import com.github.jengelman.gradle.plugins.shadow.ShadowJavaPlugin
3+
import org.gradle.api.attributes.plugin.GradlePluginApiVersion
44

55
plugins {
6-
id 'dev.gradleplugins.java-gradle-plugin'
6+
id 'java-gradle-plugin'
77
id 'idea'
88
id 'eclipse'
99
id 'maven-publish'
10+
id 'io.freefair.javadoc-links'
11+
id 'net.minecraftforge.gradleutils'
12+
alias libs.plugins.gitversion
13+
alias libs.plugins.changelog
1014
alias libs.plugins.licenser
11-
alias libs.plugins.gradleutils
12-
alias libs.plugins.javadoc.links
1315
alias libs.plugins.plugin.publish
1416
alias libs.plugins.shadow
1517
}
1618

17-
final rootBuild = gradle.includedBuild('AccessTransformers')
18-
1919
final projectDisplayName = 'AccessTransformers Gradle Plugin'
20-
final projectArtifactId = base.archivesName = 'accesstransformers-gradle'
2120
description = 'Enables Gradle projects to use AccessTransformers on dependencies with minimal hassle.'
21+
base.archivesName = 'accesstransformers-gradle'
2222
group = 'net.minecraftforge'
2323
version = gitversion.tagOffset
2424

2525
println "Version: $version"
2626

27-
java.toolchain.languageVersion = JavaLanguageVersion.of 8
27+
java {
28+
toolchain.languageVersion = JavaLanguageVersion.of(17)
29+
withSourcesJar()
30+
withJavadocJar()
31+
}
2832

29-
repositories {
30-
maven { url = 'https://maven.minecraftforge.net' }
31-
mavenCentral()
33+
configurations {
34+
// Applies the "Gradle Plugin API Version" attribute to configuration
35+
// This was added in Gradle 7, gives consumers useful errors if they are on an old version
36+
def applyGradleVersionAttribute = { Configuration configuration ->
37+
configuration.attributes {
38+
attribute(GradlePluginApiVersion.GRADLE_PLUGIN_API_VERSION_ATTRIBUTE, objects.named(GradlePluginApiVersion, libs.versions.gradle.get()))
39+
}
40+
}
41+
42+
named(JavaPlugin.RUNTIME_ELEMENTS_CONFIGURATION_NAME, applyGradleVersionAttribute)
43+
named(ShadowJavaPlugin.SHADOW_RUNTIME_ELEMENTS_CONFIGURATION_NAME, applyGradleVersionAttribute)
3244
}
3345

3446
dependencies {
35-
// Utils
36-
implementation libs.bundles.utils
37-
3847
// Static Analysis
3948
compileOnly libs.nulls
49+
50+
// Gradle API
51+
compileOnly libs.gradle
52+
53+
// GradleUtils Shared Base
54+
implementation libs.gradleutils.shared
55+
56+
// Utils
57+
implementation libs.bundles.utils
4058
}
4159

4260
// Removes local Gradle API from compileOnly. This is a workaround for bugged plugins.
43-
// TODO [GradleUtils][GradleAPI] Remove this once they are fixed.
4461
// Publish Plugin: https://github.com/gradle/plugin-portal-requests/issues/260
4562
// Shadow: https://github.com/GradleUp/shadow/pull/1422
4663
afterEvaluate { project ->
4764
project.configurations.named(JavaPlugin.COMPILE_ONLY_CONFIGURATION_NAME) { compileOnly ->
48-
compileOnly.dependencies.remove project.dependencies.gradleApi()
65+
compileOnly.dependencies.remove(project.dependencies.gradleApi())
4966
}
5067
}
5168

5269
license {
53-
header = new File(rootBuild.projectDir, '/LICENSE-header.txt')
70+
header = rootProject.file('../LICENSE-header.txt')
5471
newLine = false
5572
exclude '**/*.properties'
5673
}
@@ -60,42 +77,27 @@ tasks.named('jar', Jar) {
6077
}
6178

6279
tasks.named('shadowJar', ShadowJar) {
63-
enableRelocation = true
80+
enableAutoRelocation = true
6481
archiveClassifier = null
6582
relocationPrefix = 'net.minecraftforge.accesstransformers.gradle.shadow'
6683
}
6784

6885
tasks.withType(Javadoc).configureEach {
69-
javadocTool = javaToolchains.javadocToolFor { languageVersion = JavaLanguageVersion.of 23 }
86+
javadocTool = javaToolchains.javadocToolFor { languageVersion = JavaLanguageVersion.of(24) }
7087

7188
options { StandardJavadocDocletOptions options ->
72-
options.links(
73-
// Manually included here, since the one at javadoc.io is ass
74-
JavadocLinkUtil.getGradleApiLink(GradleVersion.version(libs.versions.gradle.get()))
75-
)
76-
7789
options.windowTitle = projectDisplayName + project.version
78-
options.tags 'apiNote:a:API Note:', 'implNote:a:Implementation Note:'
90+
options.tags 'apiNote:a:API Note:', 'implNote:a:Implementation Note:', 'implSpec:a:Implementation Requirements:'
7991
}
8092
}
8193

8294
changelog {
8395
fromBase()
84-
publishAll = false
8596
}
8697

8798
gradlePlugin {
88-
website.set gitversion.url
89-
vcsUrl.set gitversion.url + '.git'
90-
91-
compatibility {
92-
minimumGradleVersion = libs.versions.gradle.get()
93-
}
94-
95-
java {
96-
withSourcesJar()
97-
withJavadocJar()
98-
}
99+
website = gitversion.url
100+
vcsUrl = gitversion.url + '.git'
99101

100102
plugins.register('accesstransformers') {
101103
id = 'net.minecraftforge.accesstransformers'
@@ -107,16 +109,19 @@ gradlePlugin {
107109
}
108110

109111
publishing {
110-
publications.register('pluginMaven', MavenPublication) {
111-
artifactId = projectArtifactId
112+
repositories {
113+
maven gradleutils.getPublishingForgeMaven(rootProject.file('../repo'))
114+
}
112115

113-
changelog.publish it
116+
publications.register('pluginMaven', MavenPublication) {
117+
changelog.publish(it)
118+
gradleutils.promote(it)
114119

115120
pom { pom ->
116121
name = projectDisplayName
117122
description = project.description
118123

119-
gradleutils.pom.setGitHubDetails pom
124+
gradleutils.pom.addRemoteDetails(pom)
120125

121126
licenses {
122127
license gradleutils.pom.licenses.LGPLv2_1
@@ -127,10 +132,7 @@ publishing {
127132
}
128133
}
129134
}
130-
131-
repositories {
132-
maven gradleutils.getPublishingForgeMaven(new File(rootBuild.projectDir, 'repo'))
133-
}
134135
}
135136

136137
idea.module { downloadSources = downloadJavadoc = true }
138+
eclipse.classpath { downloadSources = downloadJavadoc = true }

at-gradle/gradle.properties

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
org.gradle.caching=true
2-
#org.gradle.parallel=true
3-
#org.gradle.configureondemand=true
2+
org.gradle.parallel=true
3+
org.gradle.configureondemand=true
44

5-
#org.gradle.configuration-cache=true
6-
#org.gradle.configuration-cache.parallel=true
5+
org.gradle.configuration-cache=true
6+
org.gradle.configuration-cache.parallel=true
7+
org.gradle.configuration-cache.problems=warn
78

89
systemProp.org.gradle.unsafe.suppress-gradle-api=true

at-gradle/settings.gradle

Lines changed: 31 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,45 @@
1-
import org.gradle.api.initialization.resolve.RepositoriesMode
2-
31
plugins {
4-
id 'dev.gradleplugins.gradle-plugin-development' version '1.9.0'
5-
id 'org.gradle.toolchains.foojay-resolver-convention' version '0.10.0'
2+
id 'org.gradle.toolchains.foojay-resolver-convention' version '1.0.0'
3+
4+
// NOTE: We need to load this into the classpath before GradleUtils for the service to load correctly
5+
id 'io.freefair.javadoc-links' version '8.14' apply false // https://plugins.gradle.org/plugin/io.freefair.javadoc-links
6+
7+
id 'net.minecraftforge.gradleutils' version '3.2.5' // https://plugins.gradle.org/plugin/net.minecraftforge.gradleutils
68
}
79

810
rootProject.name = 'at-gradle'
911

10-
includeBuild '..'
11-
1212
dependencyResolutionManagement {
13-
// Repositories are located in build.gradle for this project
14-
// dev.gradleplugins.groovy-gradle-plugin is bugged and force adds repositories on the project
15-
// so, we can't declare the repositories in here
16-
repositoriesMode = RepositoriesMode.PREFER_PROJECT
13+
repositories {
14+
//mavenLocal()
15+
mavenCentral()
16+
maven gradleutils.forgeMaven
17+
maven { url = 'https://maven.moddinglegacy.com/maven' } // Gradle API
18+
}
1719

20+
//@formatter:off
1821
versionCatalogs.register('libs') {
19-
plugin 'licenser', 'net.minecraftforge.licenser' version '1.2.0'
20-
plugin 'gradleutils', 'net.minecraftforge.gradleutils' version '2.6.0'
21-
plugin 'javadoc-links', 'io.freefair.javadoc-links' version '8.13.1'
22-
plugin 'plugin-publish', 'com.gradle.plugin-publish' version '1.3.1'
23-
plugin 'shadow', 'com.gradleup.shadow' version '9.0.0-beta13'
22+
plugin 'licenser', 'net.minecraftforge.licenser' version '1.2.0' // https://plugins.gradle.org/plugin/net.minecraftforge.licenser
23+
plugin 'gitversion', 'net.minecraftforge.gitversion' version '3.0.3' // https://plugins.gradle.org/plugin/net.minecraftforge.changelog
24+
plugin 'changelog', 'net.minecraftforge.changelog' version '3.0.3' // https://plugins.gradle.org/plugin/net.minecraftforge.changelog
25+
plugin 'plugin-publish', 'com.gradle.plugin-publish' version '1.3.1' // https://plugins.gradle.org/plugin/com.gradle.plugin-publish
26+
plugin 'shadow', 'com.gradleup.shadow' version '9.0.2' // https://plugins.gradle.org/plugin/com.gradleup.shadow
27+
28+
// Static Analysis
29+
library 'nulls', 'org.jetbrains', 'annotations' version '26.0.2'
2430

2531
// Gradle API
26-
version 'gradle', '7.3'
32+
// Original: https://github.com/remal-gradle-api/packages/packages/760197?version=9.0.0
33+
// Mirror: https://repos.moddinglegacy.com/#/modding-legacy/name/remal/gradle-api/gradle-api/9.0.0
34+
version 'gradle', '9.0.0'
35+
library 'gradle', 'name.remal.gradle-api', 'gradle-api' versionRef 'gradle'
2736

28-
// Utils
29-
library 'utils-hash', 'net.minecraftforge', 'hash-utils' version '0.1.9'
30-
library 'utils-download', 'net.minecraftforge', 'download-utils' version '0.3.1'
31-
bundle 'utils', ['utils-hash', 'utils-download']
37+
// GradleUtils Shared Base
38+
library 'gradleutils-shared', 'net.minecraftforge', 'gradleutils-shared' version '3.2.5'
3239

33-
// Static Analysis
34-
library 'nulls', 'org.jetbrains', 'annotations' version '26.0.2'
40+
// Utils
41+
library 'utils-hash', 'net.minecraftforge', 'hash-utils' version '0.1.9'
42+
bundle 'utils', ['utils-hash']
3543
}
44+
//@formatter:on
3645
}

0 commit comments

Comments
 (0)