Skip to content

Commit 9d3c2d6

Browse files
committed
Port FG7's ATs to its own Gradle plugin
Also: - Modernize buildscripts - Demo project (disabled for now)
1 parent 36c6ff9 commit 9d3c2d6

30 files changed

+1849
-217
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
name: Publish Gradle Plugin
2+
3+
on:
4+
push:
5+
branches: [ 'master' ]
6+
paths:
7+
- at-gradle/**
8+
- '!.github/workflows/**'
9+
- '!settings.gradle'
10+
11+
permissions:
12+
contents: read
13+
14+
jobs:
15+
build:
16+
uses: MinecraftForge/SharedActions/.github/workflows/gradle.yml@v0
17+
with:
18+
java: 17
19+
gradle_tasks: ':at-gradle:publish :at-gradle:publishPlugins'
20+
artifact_name: 'accesstransformers-gradle'
21+
project_path: 'at-gradle'
22+
secrets:
23+
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
24+
PROMOTE_ARTIFACT_WEBHOOK: ${{ secrets.PROMOTE_ARTIFACT_WEBHOOK }}
25+
PROMOTE_ARTIFACT_USERNAME: ${{ secrets.PROMOTE_ARTIFACT_USERNAME }}
26+
PROMOTE_ARTIFACT_PASSWORD: ${{ secrets.PROMOTE_ARTIFACT_PASSWORD }}
27+
MAVEN_USER: ${{ secrets.MAVEN_USER }}
28+
MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}
29+
GRADLE_PUBLISH_KEY: ${{ secrets.GRADLE_PUBLISH_KEY }}
30+
GRADLE_PUBLISH_SECRET: ${{ secrets.GRADLE_PUBLISH_SECRET }}

.github/workflows/publish.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,18 @@ name: Publish
22

33
on:
44
push:
5-
branches: [ "master" ]
5+
branches: [ 'master' ]
66

77
permissions:
88
contents: read
99

1010
jobs:
1111
build:
12-
uses: MinecraftForge/SharedActions/.github/workflows/gradle.yml@main
12+
uses: MinecraftForge/SharedActions/.github/workflows/gradle.yml@v0
1313
with:
1414
java: 17
15-
gradle_tasks: "publish"
16-
artifact_name: "accesstransformers"
15+
gradle_tasks: 'publish'
16+
artifact_name: 'accesstransformers'
1717
secrets:
1818
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
1919
PROMOTE_ARTIFACT_WEBHOOK: ${{ secrets.PROMOTE_ARTIFACT_WEBHOOK }}

.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,5 @@
2828
/forge-deobfed-new.jar
2929
/forge-deobfed.jar
3030
/out.log
31-
gradle.properties
3231
/**/logs/
3332
/test_results.html

.gitversion

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[gradlePlugin]
2+
path = "at-gradle"
3+
tag = "gradle"
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
public net.minecraftforge.coremod.CoreModEngine LOGGER
2+
public-f net.minecraftforge.coremod.CoreModEngine COREMOD

at-gradle-demo/build.gradle

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// TODO [AccessTransformers][at-gradle] Finish Demo project!
2+
// See rootProject's settings.gradle for includeBuild line
3+
4+
plugins {
5+
id 'java'
6+
id 'net.minecraftforge.accesstransformers'
7+
}
8+
9+
java.toolchain.languageVersion = JavaLanguageVersion.of(17)
10+
11+
accessTransformers.register {
12+
config = project.file('accesstransformer.cfg')
13+
}
14+
15+
dependencies {
16+
compileOnly accessTransformers.dep(libs.coremods)
17+
}

at-gradle-demo/settings.gradle

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import org.gradle.api.initialization.resolve.RepositoriesMode
2+
3+
pluginManagement {
4+
includeBuild '../at-gradle'
5+
6+
repositories {
7+
maven { url = 'https://maven.minecraftforge.net' }
8+
}
9+
}
10+
11+
rootProject.name = 'at-gradle-demo'
12+
13+
dependencyResolutionManagement {
14+
repositories {
15+
maven { url = 'https://maven.minecraftforge.net' }
16+
}
17+
18+
repositoriesMode = RepositoriesMode.FAIL_ON_PROJECT_REPOS
19+
20+
versionCatalogs.register('libs') {
21+
library 'coremods', 'net.minecraftforge', 'coremods' version '5.2.6'
22+
}
23+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package net.minecraftforge.debug.accesstransformers;
2+
3+
import net.minecraftforge.coremod.CoreMod;
4+
import net.minecraftforge.coremod.CoreModEngine;
5+
6+
public class TestClass {
7+
public static void main(String[] args) {
8+
System.out.println(CoreMod.COREMODLOG);
9+
System.out.println(CoreModEngine.LOGGER);
10+
}
11+
}

at-gradle/build.gradle

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
import org.gradle.util.GradleVersion
2+
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
3+
import io.freefair.gradle.plugins.maven.javadoc.JavadocLinkUtil
4+
5+
plugins {
6+
id 'dev.gradleplugins.java-gradle-plugin'
7+
id 'idea'
8+
id 'eclipse'
9+
id 'maven-publish'
10+
alias libs.plugins.licenser
11+
alias libs.plugins.gradleutils
12+
alias libs.plugins.javadoc.links
13+
alias libs.plugins.plugin.publish
14+
alias libs.plugins.shadow
15+
}
16+
17+
final rootBuild = gradle.includedBuild('AccessTransformers')
18+
19+
final projectDisplayName = 'AccessTransformers Gradle Plugin'
20+
final projectArtifactId = base.archivesName = 'accesstransformers-gradle'
21+
description = 'Enables Gradle projects to use AccessTransformers on dependencies with minimal hassle.'
22+
group = 'net.minecraftforge'
23+
version = gitversion.tagOffset
24+
25+
println "Version: $version"
26+
27+
java.toolchain.languageVersion = JavaLanguageVersion.of 8
28+
29+
repositories {
30+
maven { url = 'https://maven.minecraftforge.net' }
31+
mavenCentral()
32+
}
33+
34+
dependencies {
35+
// Utils
36+
implementation libs.bundles.utils
37+
38+
// Static Analysis
39+
compileOnly libs.nulls
40+
}
41+
42+
// Removes local Gradle API from compileOnly. This is a workaround for bugged plugins.
43+
// TODO [GradleUtils][GradleAPI] Remove this once they are fixed.
44+
// Publish Plugin: https://github.com/gradle/plugin-portal-requests/issues/260
45+
// Shadow: https://github.com/GradleUp/shadow/pull/1422
46+
afterEvaluate { project ->
47+
project.configurations.named(JavaPlugin.COMPILE_ONLY_CONFIGURATION_NAME) { compileOnly ->
48+
compileOnly.dependencies.remove project.dependencies.gradleApi()
49+
}
50+
}
51+
52+
license {
53+
header = new File(rootBuild.projectDir, '/LICENSE-header.txt')
54+
newLine = false
55+
exclude '**/*.properties'
56+
}
57+
58+
tasks.named('jar', Jar) {
59+
archiveClassifier = 'thin'
60+
}
61+
62+
tasks.named('shadowJar', ShadowJar) {
63+
enableRelocation = true
64+
archiveClassifier = null
65+
relocationPrefix = 'net.minecraftforge.accesstransformers.gradle.shadow'
66+
}
67+
68+
tasks.withType(Javadoc).configureEach {
69+
javadocTool = javaToolchains.javadocToolFor { languageVersion = JavaLanguageVersion.of 23 }
70+
71+
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+
77+
options.windowTitle = projectDisplayName + project.version
78+
options.tags 'apiNote:a:API Note:', 'implNote:a:Implementation Note:'
79+
}
80+
}
81+
82+
changelog {
83+
fromBase()
84+
publishAll = false
85+
}
86+
87+
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+
100+
plugins.register('accesstransformers') {
101+
id = 'net.minecraftforge.accesstransformers'
102+
implementationClass = 'net.minecraftforge.accesstransformers.gradle.AccessTransformersPlugin'
103+
displayName = projectDisplayName
104+
description = project.description
105+
tags = ['minecraftforge']
106+
}
107+
}
108+
109+
publishing {
110+
publications.register('pluginMaven', MavenPublication) {
111+
artifactId = projectArtifactId
112+
113+
changelog.publish it
114+
115+
pom { pom ->
116+
name = projectDisplayName
117+
description = project.description
118+
119+
gradleutils.pom.setGitHubDetails pom
120+
121+
licenses {
122+
license gradleutils.pom.licenses.LGPLv2_1
123+
}
124+
125+
developers {
126+
developer gradleutils.pom.developers.Jonathing
127+
}
128+
}
129+
}
130+
131+
repositories {
132+
maven gradleutils.getPublishingForgeMaven(new File(rootBuild.projectDir, 'repo'))
133+
}
134+
}
135+
136+
idea.module { downloadSources = downloadJavadoc = true }

at-gradle/gradle.properties

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
org.gradle.caching=true
2+
#org.gradle.parallel=true
3+
#org.gradle.configureondemand=true
4+
5+
#org.gradle.configuration-cache=true
6+
#org.gradle.configuration-cache.parallel=true
7+
8+
systemProp.org.gradle.unsafe.suppress-gradle-api=true

0 commit comments

Comments
 (0)