You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
There should be a way to write Gradle plugins with Kotlin. com.gradle.plugin-publish should refrain from adding configurations in afterEvaluate.
Frankly speaking, I would be fine if plugin-publish added javadocElements always, however, the current behaviour is surprising, it causes warnings, and it will probably cause failures with Gradle 8.0
Current Behavior
I used my own configuration to publish javadoc files generated by Dokka
// https://github.com/gradle/gradle/pull/16627inlinefun <reifiedT: Named> AttributeContainer.attribute(attr:Attribute<T>, value:String) =
attribute(attr, objects.named<T>(value))
val javadocMainElements by configurations.creating {
isVisible =false
description ="Javadoc code elements"
isCanBeResolved =false
isCanBeConsumed =true
attributes {
attribute(Category.CATEGORY_ATTRIBUTE, Category.DOCUMENTATION)
attribute(DocsType.DOCS_TYPE_ATTRIBUTE, DocsType.JAVADOC)
attribute(Usage.USAGE_ATTRIBUTE, Usage.JAVA_RUNTIME)
attribute(Bundling.BUNDLING_ATTRIBUTE, Bundling.EXTERNAL)
}
}
val javadocJar by tasks.registering(Jar::class) {
group =LifecycleBasePlugin.BUILD_GROUP
description ="Assembles a jar archive containing javadoc"
from(tasks.dokkaJavadoc)
archiveClassifier.set("javadoc")
}
javadocMainElements.outgoing.artifact(javadocJar)
(components["java"] asAdhocComponentWithVariants).addVariantsFromConfiguration(javadocMainElements) {
mapToOptional()
mapToMavenScope("runtime")
}
Unfortunately, it causes a warning:
Consumable configurations with identical capabilities within a project must have unique attributes, but configuration ':sigstore-gradle:sigstore-gradle-sign-base-plugin:javadocMainElements' and configuration ':sigstore-gradle:sigstore-gradle-sign-base-plugin:javadocElements' contain identical attribute sets.
This will fail with an error in Gradle 8.0. Consider adding an additional attribute to one of the configurations to disambiguate them. Run the 'outgoingVariants' task for more details. Consult the upgrading guide for further information: https://docs.gradle.org/7.4.2/userguide/upgrading_version_7.html#unique_attribute_sets
As I tried to figure out what adds javadocElements configuration, I found it was plugin-publish:
configurations.all{
if (name =="javadocElements") {
TODO("javadocElements should not be created")
}
}
org.gradle.internal.event.ListenerNotificationException: Failed to notify project evaluation listener.
at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:89)
at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:346)
at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:249)
at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:141)
at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:37)
at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
at org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate$1.execute(LifecycleProjectEvaluator.java:247)
at org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate$1.execute(LifecycleProjectEvaluator.java:244)
at org.gradle.api.internal.project.DefaultProject.stepEvaluationListener(DefaultProject.java:1433)
at org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate.run(LifecycleProjectEvaluator.java:253)
... 139 more
kotlin.NotImplementedError: An operation is not implemented: javadocElements should not be created
at Build_logic_kotlin_gradle$2.execute(build-logic.kotlin.gradle.kts:13)
at Build_logic_kotlin_gradle$2.execute(build-logic.kotlin.gradle.kts:1)
at org.gradle.configuration.internal.DefaultUserCodeApplicationContext$CurrentApplication$1.execute(DefaultUserCodeApplicationContext.java:123)
at org.gradle.api.internal.DefaultCollectionCallbackActionDecorator$BuildOperationEmittingAction$1.run(DefaultCollectionCallbackActionDecorator.java:110)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68)
at org.gradle.api.internal.DefaultCollectionCallbackActionDecorator$BuildOperationEmittingAction.execute(DefaultCollectionCallbackActionDecorator.java:107)
at org.gradle.internal.ImmutableActionSet$SetWithManyActions.execute(ImmutableActionSet.java:329)
at org.gradle.api.internal.DefaultDomainObjectCollection.doAdd(DefaultDomainObjectCollection.java:262)
at org.gradle.api.internal.DefaultNamedDomainObjectCollection.doAdd(DefaultNamedDomainObjectCollection.java:113)
at org.gradle.api.internal.DefaultDomainObjectCollection.add(DefaultDomainObjectCollection.java:251)
at org.gradle.api.internal.AbstractNamedDomainObjectContainer.create(AbstractNamedDomainObjectContainer.java:79)
at org.gradle.api.internal.AbstractValidatingNamedDomainObjectContainer.create(AbstractValidatingNamedDomainObjectContainer.java:47)
at org.gradle.api.internal.AbstractNamedDomainObjectContainer.create(AbstractNamedDomainObjectContainer.java:56)
at org.gradle.api.internal.AbstractNamedDomainObjectContainer.maybeCreate(AbstractNamedDomainObjectContainer.java:65)
at org.gradle.api.plugins.internal.JvmPluginsHelper.maybeCreateInvisibleConfig(JvmPluginsHelper.java:261)
at org.gradle.api.plugins.internal.JvmPluginsHelper.configureDocumentationVariantWithArtifact(JvmPluginsHelper.java:224)
at org.gradle.api.plugins.internal.DefaultJavaPluginExtension.withJavadocJar(DefaultJavaPluginExtension.java:215)
at com.gradle.publish.PublishPlugin.forceJavadocAndSourcesJars(PublishPlugin.java:125)
at com.gradle.publish.PublishPlugin.lambda$apply$3(PublishPlugin.java:104)
at org.gradle.configuration.internal.DefaultUserCodeApplicationContext$CurrentApplication$1.execute(DefaultUserCodeApplicationContext.java:123)
at org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction$1.run(DefaultListenerBuildOperationDecorator.java:171)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68)
at org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction.execute(DefaultListenerBuildOperationDecorator.java:168)
at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:95)
at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:83)
at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:43)
at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:245)
at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:157)
at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:61)
... 148 more
Expected Behavior
There should be a way to write Gradle plugins with Kotlin.
com.gradle.plugin-publish
should refrain from adding configurations inafterEvaluate
.Frankly speaking, I would be fine if
plugin-publish
addedjavadocElements
always, however, the current behaviour is surprising, it causes warnings, and it will probably cause failures with Gradle 8.0Current Behavior
I used my own configuration to publish javadoc files generated by Dokka
Unfortunately, it causes a warning:
As I tried to figure out what adds
javadocElements
configuration, I found it wasplugin-publish
:Note
PublishPlugin.forceJavadocAndSourcesJars
below.Context
See sigstore/sigstore-java#98
Steps to Reproduce
Create a plugin in Kotlin (==no regular javadoc jar). There should be a way to add dokka-generated jar to javadocs.
Your Environment
Gradle 7.4.2
com.gradle.plugin-publish.gradle.plugin:1.0.0
The text was updated successfully, but these errors were encountered: