Skip to content

Commit f78df62

Browse files
committed
MavenTask task for dependencies only module/pom
1 parent 018c6f4 commit f78df62

File tree

8 files changed

+103
-7
lines changed

8 files changed

+103
-7
lines changed

settings.gradle

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,11 @@ dependencyResolutionManagement.versionCatalogs.register('libs') {
4242
library 'srgutils', 'net.minecraftforge', 'srgutils' version '0.5.14'
4343
library 'fastcsv', 'de.siegmar', 'fastcsv' version '3.7.0'
4444

45-
library 'utils-data', 'net.minecraftforge', 'json-data-utils' version '0.2.1' // https://files.minecraftforge.net/net/minecraftforge/json-data-utils/index.html
46-
library 'utils-hash', 'net.minecraftforge', 'hash-utils' version '0.1.9' // https://files.minecraftforge.net/net/minecraftforge/hash-utils/index.html
47-
library 'utils-download', 'net.minecraftforge', 'download-utils' version '0.3.1' // https://files.minecraftforge.net/net/minecraftforge/download-utils/index.html
48-
library 'utils-files', 'net.minecraftforge', 'file-utils' version '0.3.1' // https://files.minecraftforge.net/net/minecraftforge/download-utils/index.html
49-
bundle 'utils', ['utils-data', 'utils-hash', 'utils-download', 'utils-files']
45+
library 'utils-data', 'net.minecraftforge', 'json-data-utils' version '0.4.1' // https://files.minecraftforge.net/net/minecraftforge/json-data-utils/index.html
46+
library 'utils-hash', 'net.minecraftforge', 'hash-utils' version '0.1.12' // https://files.minecraftforge.net/net/minecraftforge/hash-utils/index.html
47+
library 'utils-download', 'net.minecraftforge', 'download-utils' version '0.4.0' // https://files.minecraftforge.net/net/minecraftforge/download-utils/index.html
48+
library 'utils-files', 'net.minecraftforge', 'file-utils' version '0.3.2' // https://files.minecraftforge.net/net/minecraftforge/file-utils/index.html
49+
library 'utils-os', 'net.minecraftforge', 'os-utils' version '0.1.0' // https://files.minecraftforge.net/net/minecraftforge/os-utils/index.html
50+
bundle 'utils', ['utils-data', 'utils-hash', 'utils-download', 'utils-files', 'utils-os']
5051
}
5152
//@formatter:on

src/main/groovy/net/minecraftforge/forgedev/Constants.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ private Constants() { }
1212
static final String MAVEN_CENTRAL = "https://repo1.maven.org/maven2/";
1313

1414
static final String MAVENIZER_NAME = "mavenizer";
15-
static final String MAVENIZER_VERSION = "0.4.1";
15+
static final String MAVENIZER_VERSION = "0.4.2";
1616
static final String MAVENIZER_DL_URL = FORGE_MAVEN + "net/minecraftforge/minecraft-mavenizer/" + MAVENIZER_VERSION + "/minecraft-mavenizer-" + MAVENIZER_VERSION + ".jar";
1717
static final String MAVENIZER_MAIN = "net.minecraftforge.mcmaven.cli.Main";
1818
static final int MAVENIZER_JAVA = 25;

src/main/groovy/net/minecraftforge/forgedev/ForgeDevExtension.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import net.minecraftforge.forgedev.tasks.mappings.LegacyApplyMappings;
1212
import net.minecraftforge.forgedev.tasks.mappings.LegacyGenerateSRG;
1313
import net.minecraftforge.forgedev.tasks.mcp.MavenizerMCPDataTask;
14+
import net.minecraftforge.forgedev.tasks.mcp.MavenizerMCPMaven;
1415
import net.minecraftforge.forgedev.tasks.mcp.MavenizerMCPSetup;
1516
import net.minecraftforge.forgedev.tasks.mcp.MavenizerRawArtifact;
1617
import net.minecraftforge.forgedev.tasks.mcp.MavenizerSyncMappings;
@@ -21,9 +22,12 @@
2122
import net.minecraftforge.forgedev.tasks.patching.diff.GeneratePatches;
2223
import net.minecraftforge.forgedev.tasks.srg2source.ApplyRangeMap;
2324
import net.minecraftforge.forgedev.tasks.srg2source.ExtractRangeMap;
25+
import net.minecraftforge.gradleutils.shared.Closures;
2426
import org.gradle.api.Action;
2527
import org.gradle.api.Project;
28+
import org.gradle.api.artifacts.ExternalModuleDependency;
2629
import org.gradle.api.artifacts.repositories.MavenArtifactRepository;
30+
import org.gradle.api.attributes.Attribute;
2731
import org.gradle.api.file.Directory;
2832
import org.gradle.api.file.DirectoryProperty;
2933
import org.gradle.api.model.ObjectFactory;
@@ -50,6 +54,10 @@
5054
public abstract class ForgeDevExtension {
5155
public static final String NAME = "forgedev";
5256

57+
private static final Attribute<String> OS = Attribute.of("net.minecraftforge.native.operatingSystem", String.class);
58+
private static final Attribute<String> MAPPINGS_CHANNEL = Attribute.of("net.minecraftforge.mappings.channel", String.class);
59+
private static final Attribute<String> MAPPINGS_VERSION = Attribute.of("net.minecraftforge.mappings.version", String.class);
60+
5361
private final ForgeDevProblems problems = this.getObjects().newInstance(ForgeDevProblems.class);
5462

5563
private final DirectoryProperty mavenizerRepo = this.getObjects().directoryProperty();
@@ -92,7 +100,9 @@ private void setup(ForgeDevPlugin plugin, Project project) {
92100
// TODO STOP DOING THAT SHIT
93101
var setupMCP = tasks.register("setupMCP", MavenizerMCPSetup.class);
94102

103+
var syncMavenizer = tasks.register("syncMavenizer", MavenizerMCPMaven.class);
95104
var syncMappingsMaven = tasks.register("syncMappingsMaven", MavenizerSyncMappings.class);
105+
Util.runFirst(project, syncMavenizer);
96106
Util.runFirst(project, syncMappingsMaven);
97107
var mappingsConfiguration = project.getConfigurations().detachedConfiguration();
98108
var mappingsZipFile = this.getProviders().provider(mappingsConfiguration::getSingleFile);
@@ -237,12 +247,25 @@ private void setup(ForgeDevPlugin plugin, Project project) {
237247
var release = tasks.register("release", task -> task.dependsOn(srgSourcesJar, universalJar, userdevJar));
238248

239249
project.afterEvaluate(p -> {
250+
// TODO Add mappings as a dependency to FG7???
240251
// Add mappings so that it can be used by reflection tools.
241252
// net.minecraft:mappings_CHANNEL:VERSION@zip
242253
var mappingsDependency = project.getDependencies().create(
243254
"net.minecraft:mappings_%s:%s@zip".formatted(legacyPatcher.getMappingChannel().get(), legacyPatcher.getMappingVersion().get())
244255
);
256+
var minecraftDependency = project.getDependencies().create(
257+
"net.minecraft:joined:%s".formatted(legacyMcp.getVersion().get()),
258+
Closures.<ExternalModuleDependency>consumer(dependency -> {
259+
dependency.attributes(a -> {
260+
a.attributeProvider(OS, getProviders().of(OSValueSource.class, spec -> {}));
261+
a.attributeProvider(MAPPINGS_CHANNEL, legacyPatcher.getMappingChannel());
262+
a.attributeProvider(MAPPINGS_VERSION, legacyPatcher.getMappingVersion());
263+
});
264+
})
265+
);
266+
syncMavenizer.configure(task -> task.getArtifact().set(legacyMcp.getVersion()));
245267
syncMappingsMaven.configure(task -> task.getVersion().set(legacyPatcher.getMappingVersion()));
268+
project.getDependencies().add(JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME, minecraftDependency);
246269
project.getDependencies().add(JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME, mappingsDependency);
247270
mappingsConfiguration.withDependencies(d -> d.add(mappingsDependency));
248271

src/main/groovy/net/minecraftforge/forgedev/LegacyMCPExtension.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,25 @@ public abstract class LegacyMCPExtension {
1616
public static final String EXTENSION_NAME = "mcp";
1717

1818
private final Property<String> config = this.getObjects().property(String.class);
19+
private final Property<String> version = this.getObjects().property(String.class).value(
20+
config.map(s -> (s.endsWith("@zip") ? s.substring(0, s.length() - "@zip".length()) : s).split(":")[2])
21+
);
1922

2023
protected abstract @Inject ObjectFactory getObjects();
2124

2225
protected abstract @Inject ProviderFactory getProviders();
2326

2427
@Inject
25-
public LegacyMCPExtension(final Project project) { }
28+
public LegacyMCPExtension() { }
2629

2730
public Property<String> getConfig() {
2831
return this.config;
2932
}
3033

34+
public Property<String> getVersion() {
35+
return this.version;
36+
}
37+
3138
public void setConfig(Provider<String> value) {
3239
getConfig().set(value.map(s -> {
3340
if (s.indexOf(':') != -1) { // Full artifact
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package net.minecraftforge.forgedev;
2+
3+
import net.minecraftforge.util.os.OS;
4+
import org.gradle.api.provider.ValueSource;
5+
import org.gradle.api.provider.ValueSourceParameters;
6+
7+
import javax.inject.Inject;
8+
9+
abstract class OSValueSource implements ValueSource<String, ValueSourceParameters.None> {
10+
@Inject
11+
public OSValueSource() { }
12+
13+
@Override
14+
public String obtain() {
15+
return OS.current(OS.WINDOWS, OS.MACOS, OS.LINUX).key();
16+
}
17+
}

src/main/groovy/net/minecraftforge/forgedev/tasks/jarcompat/CheckJarCompatibility.groovy

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
/*
2+
* Copyright (c) Forge Development LLC and contributors
3+
* SPDX-License-Identifier: LGPL-2.1-only
4+
*/
15
package net.minecraftforge.forgedev.tasks.jarcompat
26

37
import groovy.transform.CompileStatic;

src/main/groovy/net/minecraftforge/forgedev/tasks/mcp/MCPSetupFiles.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
/*
2+
* Copyright (c) Forge Development LLC and contributors
3+
* SPDX-License-Identifier: LGPL-2.1-only
4+
*/
15
package net.minecraftforge.forgedev.tasks.mcp;
26

37
public class MCPSetupFiles {
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/*
2+
* Copyright (c) Forge Development LLC and contributors
3+
* SPDX-License-Identifier: LGPL-2.1-only
4+
*/
5+
package net.minecraftforge.forgedev.tasks.mcp
6+
7+
import groovy.transform.CompileStatic
8+
import net.minecraftforge.forgedev.ForgeDevExtension
9+
import org.gradle.api.file.DirectoryProperty
10+
import org.gradle.api.provider.Property
11+
import org.gradle.api.tasks.Input
12+
import org.gradle.api.tasks.Internal
13+
14+
import javax.inject.Inject
15+
16+
@CompileStatic
17+
abstract class MavenizerMCPMaven extends MavenizerExec {
18+
abstract @Input Property<String> getArtifact()
19+
abstract @Internal DirectoryProperty getOutput()
20+
21+
@Inject
22+
MavenizerMCPMaven() {
23+
this.output.convention(this.project.extensions.getByType(ForgeDevExtension).mavenizerRepo)
24+
}
25+
26+
@Override
27+
protected void addArguments() {
28+
super.addArguments()
29+
30+
this.args('--maven', '--global-auxiliary-variants', '--dependencies-only')
31+
this.args('--output', output)
32+
33+
if (!artifact.get().contains(':')) {
34+
this.args('--artifact', 'net.minecraft:joined')
35+
this.args('--version', artifact)
36+
} else {
37+
this.args('--artifact', artifact)
38+
}
39+
}
40+
}

0 commit comments

Comments
 (0)