Skip to content

Commit 7fd50ac

Browse files
committed
1 parent 35c1512 commit 7fd50ac

File tree

11 files changed

+423
-23
lines changed

11 files changed

+423
-23
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ jobs:
2323
java-version: ${{ matrix.java }}
2424
- uses: gradle/actions/setup-gradle@v4
2525
- run: ./gradlew build
26+
- run: cd reproduction-gradle-shadow-artifact-transform && ./gradlew build
2627

2728
publish-snapshot:
2829
needs: build

build-logic/src/main/kotlin/shadow.convention.publish.gradle.kts

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -41,29 +41,6 @@ tasks.publishPlugins {
4141
notCompatibleWithConfigurationCache("https://github.com/gradle/gradle/issues/21283")
4242
}
4343

44-
configurations {
45-
listOf(
46-
apiElements,
47-
runtimeElements,
48-
named("javadocElements"),
49-
named("sourcesElements"),
50-
).forEach {
51-
it.configure {
52-
outgoing {
53-
// Main/current capability
54-
capability("com.gradleup.shadow:shadow-gradle-plugin:$version")
55-
56-
// Historical capabilities
57-
capability("io.github.goooler.shadow:shadow-gradle-plugin:$version")
58-
capability("com.github.johnrengelman:shadow:$version")
59-
capability("gradle.plugin.com.github.jengelman.gradle.plugins:shadow:$version")
60-
capability("gradle.plugin.com.github.johnrengelman:shadow:$version")
61-
capability("com.github.jengelman.gradle.plugins:shadow:$version")
62-
}
63-
}
64-
}
65-
}
66-
6744
publishing.publications.withType<MavenPublication>().configureEach {
6845
// We don't care about capabilities being unmappable to Maven
6946
suppressPomMetadataWarningsFor("apiElements")
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
plugins {
2+
application
3+
id("com.gradleup.shadow")
4+
}
5+
6+
application {
7+
mainClass.set("com.company.Main")
8+
}
9+
10+
dependencies {
11+
implementation(project(":lib"))
12+
}
13+
14+
val transformedAttribute = Attribute.of("custom-transformed", Boolean::class.javaObjectType)
15+
16+
dependencies.artifactTypes.maybeCreate("jar").attributes.attribute(transformedAttribute, false)
17+
18+
dependencies.registerTransform(CustomTransformAction::class) {
19+
from.attributes.attribute(ArtifactTypeDefinition.ARTIFACT_TYPE_ATTRIBUTE, "jar").attribute(transformedAttribute, false)
20+
to.attributes.attribute(ArtifactTypeDefinition.ARTIFACT_TYPE_ATTRIBUTE, "jar").attribute(transformedAttribute, true)
21+
}
22+
23+
tasks.shadowJar {
24+
configurations = project.configurations.runtimeClasspath.map { listOf(it) }
25+
}
26+
27+
configurations.runtimeClasspath {
28+
attributes.attribute(transformedAttribute, true)
29+
}
30+
31+
abstract class CustomTransformAction : TransformAction<TransformParameters.None> {
32+
33+
@get:InputArtifact
34+
abstract val inputArtifact: Provider<FileSystemLocation>
35+
36+
override fun transform(outputs: TransformOutputs) {
37+
val originalJar = inputArtifact.get().asFile
38+
39+
// Omitted actual jar file transformation
40+
41+
outputs.file(originalJar)
42+
}
43+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.company;
2+
3+
public class Main {
4+
5+
public static void main(String[] args) {
6+
Utils.foo();
7+
}
8+
}
Binary file not shown.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
distributionBase=GRADLE_USER_HOME
2+
distributionPath=wrapper/dists
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
4+
networkTimeout=10000
5+
validateDistributionUrl=true
6+
zipStoreBase=GRADLE_USER_HOME
7+
zipStorePath=wrapper/dists

reproduction-gradle-shadow-artifact-transform/gradlew

Lines changed: 251 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)