mirror of
https://github.com/architectury/architectury-loom.git
synced 2026-04-03 05:57:42 -05:00
Change how include disables transitive dependencies to allow platform dependencies to work (#838)
* Change how `include` disables transitive dependencies to allow platform dependencies to work * style fix * Cleanup and add test * spotlessApply --------- Co-authored-by: modmuss50 <modmuss50@gmail.com>
This commit is contained in:
@@ -81,7 +81,8 @@ public abstract class LoomConfigurations implements Runnable {
|
||||
registerNonTransitive(Constants.Configurations.LOADER_DEPENDENCIES, Role.RESOLVABLE);
|
||||
|
||||
registerNonTransitive(Constants.Configurations.MINECRAFT, Role.NONE);
|
||||
registerNonTransitive(Constants.Configurations.INCLUDE, Role.RESOLVABLE);
|
||||
// We don't need to make this non-transitive due to the way we resolve it. Also, doing so would break platform dependencies.
|
||||
register(Constants.Configurations.INCLUDE, Role.RESOLVABLE);
|
||||
registerNonTransitive(Constants.Configurations.MAPPING_CONSTANTS, Role.RESOLVABLE);
|
||||
|
||||
register(Constants.Configurations.NAMED_ELEMENTS, Role.CONSUMABLE).configure(configuration -> {
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
/*
|
||||
* This file is part of fabric-loom, licensed under the MIT License (MIT).
|
||||
*
|
||||
* Copyright (c) 2023 FabricMC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package net.fabricmc.loom.test.integration
|
||||
|
||||
import spock.lang.Specification
|
||||
import spock.lang.Unroll
|
||||
|
||||
import net.fabricmc.loom.test.util.GradleProjectTestTrait
|
||||
|
||||
import static net.fabricmc.loom.test.LoomTestConstants.STANDARD_TEST_VERSIONS
|
||||
import static org.gradle.testkit.runner.TaskOutcome.SUCCESS
|
||||
|
||||
class IncludedJarsTest extends Specification implements GradleProjectTestTrait {
|
||||
@Unroll
|
||||
def "included jars (gradle #version)"() {
|
||||
setup:
|
||||
def gradle = gradleProject(project: "includedJars", version: version)
|
||||
|
||||
when:
|
||||
def result = gradle.run(tasks: ["remapJar"])
|
||||
|
||||
then:
|
||||
result.task(":remapJar").outcome == SUCCESS
|
||||
|
||||
// Assert directly declared dependencies are present
|
||||
gradle.hasOutputZipEntry("includedJars.jar", "META-INF/jars/log4j-core-2.22.0.jar")
|
||||
gradle.hasOutputZipEntry("includedJars.jar", "META-INF/jars/adventure-text-serializer-gson-4.14.0.jar")
|
||||
|
||||
// But not transitives.
|
||||
!gradle.hasOutputZipEntry("includedJars.jar", "META-INF/jars/log4j-api-2.22.0.jar")
|
||||
!gradle.hasOutputZipEntry("includedJars.jar", "META-INF/jars/adventure-api-4.14.0.jar")
|
||||
|
||||
where:
|
||||
version << STANDARD_TEST_VERSIONS
|
||||
}
|
||||
}
|
||||
@@ -53,7 +53,7 @@ class MultiProjectTest extends Specification implements GradleProjectTestTrait {
|
||||
|
||||
gradle.hasOutputZipEntry("multiproject-1.0.0.jar", "META-INF/jars/example-1.0.0.jar")
|
||||
gradle.hasOutputZipEntry("multiproject-1.0.0.jar", "META-INF/jars/core-1.0.0.jar")
|
||||
gradle.hasOutputZipEntry("multiproject-1.0.0.jar", "META-INF/jars/fabric-api-base-0.2.1+9354966b7d.jar")
|
||||
gradle.hasOutputZipEntry("multiproject-1.0.0.jar", "META-INF/jars/fabric-api-base-0.3.0+f74f7c7d7d.jar")
|
||||
|
||||
where:
|
||||
version << STANDARD_TEST_VERSIONS
|
||||
|
||||
21
src/test/resources/projects/includedJars/build.gradle
Normal file
21
src/test/resources/projects/includedJars/build.gradle
Normal file
@@ -0,0 +1,21 @@
|
||||
plugins {
|
||||
id 'fabric-loom'
|
||||
}
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
minecraft 'com.mojang:minecraft:1.18.2'
|
||||
mappings 'net.fabricmc:yarn:1.18.2+build.1:v2'
|
||||
modImplementation 'net.fabricmc:fabric-loader:0.13.3'
|
||||
|
||||
include 'org.apache.logging.log4j:log4j-core:2.22.0'
|
||||
|
||||
// Test bom/platform dependencies
|
||||
include platform('net.kyori:adventure-bom:4.14.0')
|
||||
|
||||
// bom provides version
|
||||
include 'net.kyori:adventure-text-serializer-gson'
|
||||
}
|
||||
1
src/test/resources/projects/includedJars/settings.gradle
Normal file
1
src/test/resources/projects/includedJars/settings.gradle
Normal file
@@ -0,0 +1 @@
|
||||
rootProject.name = 'includedJars'
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"id": "modid",
|
||||
"version": "0.0.0",
|
||||
|
||||
"name": "Example Mod",
|
||||
"description": "This is an example description! Tell everyone what your mod is about!",
|
||||
"environment": "*"
|
||||
}
|
||||
Reference in New Issue
Block a user