Skip to content

Commit 5039552

Browse files
committed
Add flag to set publication artifact ID from base.archivesName
Apologies for forgetting how unbelievably inconsistent Gradle can be. The project's `base.archivesName` is used as the base name for archives, but that name isn't used for publications even though it's used for the archives. It's deep in internals, but publication name is set by `project.name`. When writing our buildscripts, I was under the impression that `base.archivesName` was used for the artifact ID for publications. Thankfully, most of our projects already use the project name as the artifact ID, so there has been no impact. I've added it in GradleUtils but it's disabled by default. You can use it by setting this flag in your `gradle.properties`: ```properties net.minecraftforge.gradleutils.publishing.use-base-archives-name=true ```
1 parent bbad8b1 commit 5039552

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

src/main/groovy/net/minecraftforge/gradleutils/GradleUtilsExtensionImpl.groovy

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,12 @@ import org.gradle.api.file.DirectoryProperty
1414
import org.gradle.api.flow.FlowProviders
1515
import org.gradle.api.flow.FlowScope
1616
import org.gradle.api.model.ObjectFactory
17+
import org.gradle.api.plugins.BasePluginExtension
1718
import org.gradle.api.plugins.ExtensionAware
1819
import org.gradle.api.provider.Property
1920
import org.gradle.api.provider.Provider
2021
import org.gradle.api.provider.ProviderFactory
22+
import org.gradle.api.publish.PublishingExtension
2123
import org.gradle.api.publish.maven.MavenPublication
2224
import org.gradle.api.publish.maven.tasks.PublishToMavenRepository
2325
import org.gradle.api.tasks.TaskProvider
@@ -119,14 +121,28 @@ import static net.minecraftforge.gradleutils.GradleUtilsPlugin.LOGGER
119121

120122
@CompileStatic
121123
@PackageScope static abstract class ForProjectImpl extends GradleUtilsExtensionImpl implements GradleUtilsExtensionInternal.ForProject {
124+
private final GradleUtilsProblems problems
125+
122126
private final Project project
123127

124128
@Inject
125129
ForProjectImpl(Project project) {
126130
super(project)
127131
this.project = project
128132

133+
this.problems = this.objects.newInstance(GradleUtilsProblems)
134+
129135
project.tasks.register(GenerateActionsWorkflow.NAME, GenerateActionsWorkflowImpl)
136+
137+
project.afterEvaluate { this.finish(it) }
138+
}
139+
140+
private void finish(Project project) {
141+
if (this.problems.test('net.minecraftforge.gradleutils.publishing.use-base-archives-name')) {
142+
project.extensions.getByType(PublishingExtension).publications.withType(MavenPublication).configureEach {
143+
it.artifactId = project.extensions.getByType(BasePluginExtension).archivesName
144+
}
145+
}
130146
}
131147

132148
@Override

0 commit comments

Comments
 (0)