axion-release-plugin icon indicating copy to clipboard operation
axion-release-plugin copied to clipboard

KotlinDSL preRelease fileUpdate cannot be cast to groovy.lang.Closure

Open JayBur opened this issue 2 years ago • 4 comments

Hi, Inspired to using Kotlin DSL and the recent additions to the plugin I started using the new Kotlin DSL methods. They seem to work except for fileUpdate. I considered writing this in #449 , however since it's released I decided this might be better reported on its own.

With v1.13.14 I get a ClassCastException Build_gradle$1$1$3$1$1 cannot be cast to groovy.lang.Closure for the following fileUpdate:

scmVersion {
    hooks {
         // [..] logging and custom context calls for addCommitPattern()

        preRelease {
            fileUpdate {
                file("src/main/resources/specs/some_api.yaml")
                file("src/main/resources/specs/some_other_api.yaml")
                pattern = { previousVersion, _ -> "version: '$previousVersion'" }
                replacement = { currentVersion, _ -> "version: '$currentVersion'" }
            }
        }

        pre("commit")
    }
}

Full stacktrace:

* Exception is:                                                                                                                                   
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':release'.                                                                
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:147)        
        at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:282)                                                                       
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:145)                 
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:133)                        
        at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:77)                       
        at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)                 
        at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)             
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)                   
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)                                 
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)                         
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)                         
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)                                
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)                                
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)  
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)  
        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.call(DefaultBuildOperationRunner.java:53)                                   
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)                               
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)                               
        at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:74)                                                 
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:333)         
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:320)         
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:313)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:299)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:143)                                
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:227)                                     
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:218)                             
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:140)                                         
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)                                 
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)                                                  
Caused by: java.lang.ClassCastException: Build_gradle$1$1$3$1$1 cannot be cast to groovy.lang.Closure                                             
        at pl.allegro.tech.build.axion.release.domain.hooks.FileUpdateHookAction.updateInFile(FileUpdateHookAction.java:34)                       
        at pl.allegro.tech.build.axion.release.domain.hooks.FileUpdateHookAction.lambda$act$1(FileUpdateHookAction.java:27)                       
        at pl.allegro.tech.build.axion.release.domain.hooks.FileUpdateHookAction.act(FileUpdateHookAction.java:27)                                
        at pl.allegro.tech.build.axion.release.domain.hooks.ReleaseHooksRunner.lambda$runPreReleaseHooks$0(ReleaseHooksRunner.java:25)            
        at pl.allegro.tech.build.axion.release.domain.hooks.ReleaseHooksRunner.runPreReleaseHooks(ReleaseHooksRunner.java:25)                     
        at pl.allegro.tech.build.axion.release.domain.Releaser.release(Releaser.java:34)                                                          
        at pl.allegro.tech.build.axion.release.domain.Releaser.releaseAndPush(Releaser.java:49)                                                   
        at pl.allegro.tech.build.axion.release.domain.Releaser$releaseAndPush.call(Unknown Source)                                                
        at pl.allegro.tech.build.axion.release.ReleaseTask.release(ReleaseTask.groovy:24)                                                         
        at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:104)                                                                     
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:58)                                   
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51)                                     
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29)                                     
        at org.gradle.api.internal.tasks.execution.TaskExecution$3.run(TaskExecution.java:242)                                                    
        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.tasks.execution.TaskExecution.executeAction(TaskExecution.java:227)                                            
        at org.gradle.api.internal.tasks.execution.TaskExecution.executeActions(TaskExecution.java:210)                                           
        at org.gradle.api.internal.tasks.execution.TaskExecution.executeWithPreviousOutputFiles(TaskExecution.java:193)                           
        at org.gradle.api.internal.tasks.execution.TaskExecution.execute(TaskExecution.java:171)                                                  
        at org.gradle.internal.execution.steps.ExecuteStep.executeInternal(ExecuteStep.java:89)                                                   
        at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:40)                                                        
        at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:53)                                                            
        at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:50)                                                            
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)  
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)  
        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.call(DefaultBuildOperationRunner.java:53)                                   
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)                               
        at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:50)                                                           
        at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:40)                                                           
        at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:68)                               
        at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:38)                               
        at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:48)                                   
        at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:36)                                   
        at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:41)                                           
        at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:74)                                             
        at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:55)                                                           
        at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:51)                                               
        at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:29)                                               
        at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:61)                     
        at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:42)                     
        at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:60)                         
        at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:27)                         
        at org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:180)                                        
        at org.gradle.internal.execution.steps.BuildCacheStep.lambda$execute$1(BuildCacheStep.java:75)                                            
        at org.gradle.internal.Either$Right.fold(Either.java:175)                                                                                 
        at org.gradle.internal.execution.caching.CachingState.fold(CachingState.java:59)                                                          
        at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:73)                                                     
        at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:48)                                                     
        at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:36)                                   
        at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:25)                                   
        at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:36)                                               
        at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:22)                                               
        at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:110)                                         
        at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$2(SkipUpToDateStep.java:56)                                        
        at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:56)                                                 
        at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:38)                                                 
        at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:73)                                             
        at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:44)                                             
        at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:37)      
        at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:27)      
        at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:89)                                   
        at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:50)                                   
        at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:114)                                                        
        at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:57)                                                         
        at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:76)                   
        at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:50)                   
        at org.gradle.internal.execution.steps.SkipEmptyWorkStep.executeWithNoEmptySources(SkipEmptyWorkStep.java:249)                            
        at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:86)                                               
        at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:54)                                               
        at org.gradle.internal.execution.steps.RemoveUntrackedExecutionStateStep.execute(RemoveUntrackedExecutionStateStep.java:32)               
        at org.gradle.internal.execution.steps.RemoveUntrackedExecutionStateStep.execute(RemoveUntrackedExecutionStateStep.java:21)               
        at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38)        
        at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:43)                     
        at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:31)                     
        at org.gradle.internal.execution.steps.AssignWorkspaceStep.lambda$execute$0(AssignWorkspaceStep.java:40)                                  
        at org.gradle.api.internal.tasks.execution.TaskExecution$4.withWorkspace(TaskExecution.java:287)                                          
        at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:40)                                           
        at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:30)                                           
        at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:37)                                               
        at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:27)                                               
        at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:44)                                                         
        at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:33)                                                         
        at org.gradle.internal.execution.impl.DefaultExecutionEngine$1.execute(DefaultExecutionEngine.java:76)                                    
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:144)                 
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:133)                        
        at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:77)                       
        at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)                 
        at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)             
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)                   
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)                                 
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)                         
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)                         
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)                                
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)                                
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)  
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)  
        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.call(DefaultBuildOperationRunner.java:53)                                   
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)                               
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)                               
        at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:74)                                                 
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:333)         
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:320)         
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:313)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:299)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:143)                                
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:227)                                     
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:218)                             
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:140)                                         
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)                                 
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)                                                  

I'm able to work around it using the methods described initially in #449

  preFileUpdate(
      file = src/main/resources/specs/some_api.yaml,
      pattern = { previousVersion, _ -> "version: '$previousVersion'" },
      replacement = { currentVersion, _ -> "version: '$currentVersion'" }
  )
  preFileUpdate(
      file = "src/main/resources/specs/some_other_api.yaml",
      pattern = { previousVersion, _ -> "version: '$previousVersion'" },
      replacement = { currentVersion, _ -> "version: '$currentVersion'" }
  )

JayBur avatar Jun 22 '22 18:06 JayBur

hi, thx for pointing out, this should be fixed as part of kotlin dsl support ;)

bgalek avatar Oct 02 '22 20:10 bgalek

Hi,

I'm still seeing this exact same error on 1.14.4 when using the fileUpdate in a pre-release hook...

scmVersion {
    hooks {
        preRelease {
            fileUpdate {
                file("README.md")
                encoding = "utf-8"
                pattern = { pv, _ -> "v$pv" }
                replacement = { cv, _ -> "v$cv" }
            }
        }
        pre("commit")
    }
}

This gives me the same error...

Caused by: java.lang.ClassCastException: class Build_gradle$1$4$1$1$1 cannot be cast to class groovy.lang.Closure

I was able to get it working with the work around described above from #449

pwheimann avatar Feb 13 '23 21:02 pwheimann

@pwheimann maybe you would like to update docs with this info? :)

bgalek avatar Feb 13 '23 22:02 bgalek

@bgalek Sure, but what info exactly? The final comment prior to my update implied it should have been fixed. I figured I'd comment as it still seemed to be an issue. So, the work around that I used is...

 scmVersion {
    tag { prefix.set("v") }
    hooks {
        pre(
            "fileUpdate", mapOf(
                "encoding" to "utf-8",
                "file" to file("README.md"),
                "pattern" to KotlinClosure2({ pv: String, _: HookContext -> "v$pv" }),
                "replacement" to KotlinClosure2({ cv: String, _: HookContext -> "v$cv" })

            )   
        )
        pre("commit")
    }
}

Are you saying this is the way to use the fileUpdate action w/ Kotlin? And you'd like it in the doc? Like maybe here - https://github.com/allegro/axion-release-plugin/blob/main/docs/examples/examples.md under Use with Gradle Kotlin DSL.

pwheimann avatar Feb 13 '23 22:02 pwheimann