GithubHelp home page GithubHelp logo

kyoripowered / indra Goto Github PK

View Code? Open in Web Editor NEW
28.0 28.0 7.0 914 KB

A set of Gradle plugins to apply common organization build settings.

License: MIT License

Kotlin 0.14% Java 99.72% Groovy 0.11% Scala 0.03%
gradle-plugin hacktoberfest java kotlin

indra's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

indra's Issues

Look at moving the defaullt minimumToolchain to JDK 17

This does not affect which versions projects can target, but reflects that we are fairly rapidly nearing the time next fall when JDK 21 will be the most recent LTS, leaving Java 11 as the 3rd-most recent LTS release. The ecosystem has had a decent amount of time to catch up and our tooling all fully supports Java 17, with enough time to get the kinks worked out.

Individual projects are already using Java 17 as a minimum due to various bugfixes present in tools, so it would make sense to make it the default.

Module validation with jdeps

In a multi-release jar situation, we don't get automatic validation of modules by the compiler.

This means that module descriptor errors can end up in the published version of the module, causing problems for modular consumers. Using jdeps built into the JDK, we should be able to provide some verification.

Package sun.misc does not exist - Java 8

I'm unable to compile a project that targets Java 8 and requires access to the sun.misc package (for Unsafe).

I used the following command to get this exception: gradlew clean build, using: Tim203/Floodgate@866a297 (minus minimumToolchain(8) in floodgate.base-conventions.gradle.kts).
After that I tried adding minimumToolchain(8) as well (like the linked commit does), but with the same result.

After that I've added the strictMultireleaseVersions project property (full command: gradlew clean build -PstrictMultireleaseVersions=true) and I received the following error:

Could not determine the dependencies of task ':api:javadoc'.
> Could not resolve all dependencies for configuration ':api:compileClasspath'.
   > Failed to query the value of task ':api:compileJava' property 'options.release'.
      > java.lang.IllegalArgumentException (no error message)

Stacktrace:

org.gradle.api.internal.tasks.TaskDependencyResolveException: Could not determine the dependencies of task ':api:shadowJar'.
	at org.gradle.api.internal.tasks.CachingTaskDependencyResolveContext.getDependencies(CachingTaskDependencyResolveContext.java:71)
	at org.gradle.execution.plan.TaskDependencyResolver.resolveDependenciesFor(TaskDependencyResolver.java:46)
	at org.gradle.execution.plan.LocalTaskNode.getDependencies(LocalTaskNode.java:161)
	at org.gradle.execution.plan.LocalTaskNode.resolveDependencies(LocalTaskNode.java:129)
	at org.gradle.execution.plan.DefaultExecutionPlan.doAddNodes(DefaultExecutionPlan.java:186)
	at org.gradle.execution.plan.DefaultExecutionPlan.addEntryTasks(DefaultExecutionPlan.java:150)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph.addEntryTasks(DefaultTaskExecutionGraph.java:146)
	at org.gradle.execution.TaskNameResolvingBuildConfigurationAction.configure(TaskNameResolvingBuildConfigurationAction.java:49)
	at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:51)
	at org.gradle.execution.DefaultBuildConfigurationActionExecuter.access$000(DefaultBuildConfigurationActionExecuter.java:25)
	at org.gradle.execution.DefaultBuildConfigurationActionExecuter$1.proceed(DefaultBuildConfigurationActionExecuter.java:59)
	at org.gradle.execution.DefaultTasksBuildExecutionAction.configure(DefaultTasksBuildExecutionAction.java:48)
	at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:51)
	at org.gradle.execution.DefaultBuildConfigurationActionExecuter.lambda$select$0(DefaultBuildConfigurationActionExecuter.java:38)
	at org.gradle.internal.Factories$1.create(Factories.java:31)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry.withMutableStateOfAllProjects(DefaultProjectStateRegistry.java:160)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry.withMutableStateOfAllProjects(DefaultProjectStateRegistry.java:147)
	at org.gradle.execution.DefaultBuildConfigurationActionExecuter.select(DefaultBuildConfigurationActionExecuter.java:37)
	at org.gradle.initialization.DefaultTaskExecutionPreparer.prepareForTaskExecution(DefaultTaskExecutionPreparer.java:39)
	at org.gradle.initialization.VintageBuildModelController.lambda$prepareTaskExecution$3(VintageBuildModelController.java:101)
	at org.gradle.internal.build.StateTransitionController.lambda$doTransition$1(StateTransitionController.java:222)
	at org.gradle.internal.build.StateTransitionController.doTransition(StateTransitionController.java:243)
	at org.gradle.internal.build.StateTransitionController.doTransition(StateTransitionController.java:221)
	at org.gradle.internal.build.StateTransitionController.transitionIfNotPreviously(StateTransitionController.java:190)
	at org.gradle.initialization.VintageBuildModelController.prepareTaskExecution(VintageBuildModelController.java:101)
	at org.gradle.initialization.VintageBuildModelController.doBuildStages(VintageBuildModelController.java:85)
	at org.gradle.initialization.VintageBuildModelController.scheduleRequestedTasks(VintageBuildModelController.java:69)
	at org.gradle.internal.build.DefaultBuildLifecycleController.lambda$scheduleRequestedTasks$1(DefaultBuildLifecycleController.java:111)
	at org.gradle.internal.build.DefaultBuildWorkPreparer.populateWorkGraph(DefaultBuildWorkPreparer.java:28)
	at org.gradle.internal.build.BuildOperationFiringBuildWorkPreparer$PopulateWorkGraph.populateTaskGraph(BuildOperationFiringBuildWorkPreparer.java:120)
	at org.gradle.internal.build.BuildOperationFiringBuildWorkPreparer$PopulateWorkGraph.run(BuildOperationFiringBuildWorkPreparer.java:76)
	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.internal.build.BuildOperationFiringBuildWorkPreparer.populateWorkGraph(BuildOperationFiringBuildWorkPreparer.java:60)
	at org.gradle.internal.build.DefaultBuildLifecycleController.lambda$populateWorkGraph$2(DefaultBuildLifecycleController.java:116)
	at org.gradle.internal.build.StateTransitionController.inState(StateTransitionController.java:115)
	at org.gradle.internal.build.DefaultBuildLifecycleController.populateWorkGraph(DefaultBuildLifecycleController.java:116)
	at org.gradle.internal.build.DefaultBuildLifecycleController.scheduleRequestedTasks(DefaultBuildLifecycleController.java:111)
	at org.gradle.internal.buildtree.DefaultBuildTreeWorkPreparer.lambda$scheduleRequestedTasks$0(DefaultBuildTreeWorkPreparer.java:35)
	at org.gradle.composite.internal.DefaultIncludedBuildTaskGraph$1.run(DefaultIncludedBuildTaskGraph.java:113)
	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.composite.internal.DefaultIncludedBuildTaskGraph.lambda$prepareTaskGraph$0(DefaultIncludedBuildTaskGraph.java:110)
	at org.gradle.composite.internal.DefaultIncludedBuildTaskGraph.withState(DefaultIncludedBuildTaskGraph.java:236)
	at org.gradle.composite.internal.DefaultIncludedBuildTaskGraph.prepareTaskGraph(DefaultIncludedBuildTaskGraph.java:107)
	at org.gradle.internal.buildtree.DefaultBuildTreeWorkPreparer.scheduleRequestedTasks(DefaultBuildTreeWorkPreparer.java:34)
	at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.lambda$doScheduleAndRunTasks$2(DefaultBuildTreeLifecycleController.java:86)
	at org.gradle.composite.internal.DefaultIncludedBuildTaskGraph.withNewTaskGraph(DefaultIncludedBuildTaskGraph.java:94)
	at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.doScheduleAndRunTasks(DefaultBuildTreeLifecycleController.java:85)
	at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.lambda$runBuild$4(DefaultBuildTreeLifecycleController.java:103)
	at org.gradle.internal.build.StateTransitionController.lambda$transition$0(StateTransitionController.java:145)
	at org.gradle.internal.build.StateTransitionController.doTransition(StateTransitionController.java:243)
	at org.gradle.internal.build.StateTransitionController.transition(StateTransitionController.java:145)
	at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.runBuild(DefaultBuildTreeLifecycleController.java:100)
	at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.scheduleAndRunTasks(DefaultBuildTreeLifecycleController.java:66)
	at org.gradle.tooling.internal.provider.runner.BuildModelActionRunner.run(BuildModelActionRunner.java:53)
	at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
	at org.gradle.internal.buildtree.ProblemReportingBuildActionRunner.run(ProblemReportingBuildActionRunner.java:49)
	at org.gradle.launcher.exec.BuildOutcomeReportingBuildActionRunner.run(BuildOutcomeReportingBuildActionRunner.java:69)
	at org.gradle.tooling.internal.provider.FileSystemWatchingBuildActionRunner.run(FileSystemWatchingBuildActionRunner.java:114)
	at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.run(BuildCompletionNotifyingBuildActionRunner.java:41)
	at org.gradle.launcher.exec.RootBuildLifecycleBuildActionExecutor.lambda$execute$0(RootBuildLifecycleBuildActionExecutor.java:40)
	at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:155)
	at org.gradle.launcher.exec.RootBuildLifecycleBuildActionExecutor.execute(RootBuildLifecycleBuildActionExecutor.java:40)
	at org.gradle.internal.buildtree.DefaultBuildTreeContext.execute(DefaultBuildTreeContext.java:40)
	at org.gradle.launcher.exec.BuildTreeLifecycleBuildActionExecutor.lambda$execute$0(BuildTreeLifecycleBuildActionExecutor.java:65)
	at org.gradle.internal.buildtree.BuildTreeState.run(BuildTreeState.java:53)
	at org.gradle.launcher.exec.BuildTreeLifecycleBuildActionExecutor.execute(BuildTreeLifecycleBuildActionExecutor.java:65)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionExecutor$3.call(RunAsBuildOperationBuildActionExecutor.java:61)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionExecutor$3.call(RunAsBuildOperationBuildActionExecutor.java:57)
	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.launcher.exec.RunAsBuildOperationBuildActionExecutor.execute(RunAsBuildOperationBuildActionExecutor.java:57)
	at org.gradle.launcher.exec.RunAsWorkerThreadBuildActionExecutor.lambda$execute$0(RunAsWorkerThreadBuildActionExecutor.java:38)
	at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:211)
	at org.gradle.launcher.exec.RunAsWorkerThreadBuildActionExecutor.execute(RunAsWorkerThreadBuildActionExecutor.java:38)
	at org.gradle.tooling.internal.provider.ContinuousBuildActionExecutor.execute(ContinuousBuildActionExecutor.java:103)
	at org.gradle.tooling.internal.provider.SubscribableBuildActionExecutor.execute(SubscribableBuildActionExecutor.java:64)
	at org.gradle.internal.session.DefaultBuildSessionContext.execute(DefaultBuildSessionContext.java:46)
	at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter$ActionImpl.apply(BuildSessionLifecycleBuildActionExecuter.java:100)
	at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter$ActionImpl.apply(BuildSessionLifecycleBuildActionExecuter.java:88)
	at org.gradle.internal.session.BuildSessionState.run(BuildSessionState.java:69)
	at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter.execute(BuildSessionLifecycleBuildActionExecuter.java:62)
	at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter.execute(BuildSessionLifecycleBuildActionExecuter.java:41)
	at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36)
	at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25)
	at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:63)
	at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:31)
	at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:58)
	at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:42)
	at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:47)
	at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:31)
	at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:65)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:39)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:29)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:35)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:78)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:75)
	at org.gradle.util.internal.Swapper.swap(Swapper.java:38)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:75)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:63)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:84)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:52)
	at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:61)
Caused by: org.gradle.api.internal.provider.AbstractProperty$PropertyQueryException: Failed to query the value of task ':api:compileJava' property 'options.release'.
	at org.gradle.api.internal.provider.AbstractProperty.calculatePresence(AbstractProperty.java:61)
	at org.gradle.api.internal.provider.AbstractMinimalProvider.isPresent(AbstractMinimalProvider.java:74)
	at org.gradle.api.plugins.jvm.internal.DefaultJvmPluginServices.lambda$configureDefaultTargetPlatform$5(DefaultJvmPluginServices.java:221)
	at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.preventFromFurtherMutation(DefaultConfiguration.java:1074)
	at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$1.call(DefaultConfiguration.java:639)
	at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$1.call(DefaultConfiguration.java:635)
	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.artifacts.configurations.DefaultConfiguration.resolveGraphIfRequired(DefaultConfiguration.java:635)
	at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.lambda$resolveExclusively$4(DefaultConfiguration.java:615)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry$CalculatedModelValueImpl.update(DefaultProjectStateRegistry.java:478)
	at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.resolveExclusively(DefaultConfiguration.java:612)
	at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.resolveToStateOrLater(DefaultConfiguration.java:599)
	at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.getResolvedConfiguration(DefaultConfiguration.java:574)
	at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration_Decorated.getResolvedConfiguration(Unknown Source)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at org.gradle.internal.metaobject.BeanDynamicObject$MetaClassAdapter.getProperty(BeanDynamicObject.java:233)
	at org.gradle.internal.metaobject.BeanDynamicObject.tryGetProperty(BeanDynamicObject.java:176)
	at org.gradle.internal.metaobject.CompositeDynamicObject.tryGetProperty(CompositeDynamicObject.java:55)
	at org.gradle.internal.metaobject.AbstractDynamicObject.getProperty(AbstractDynamicObject.java:60)
	at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration_Decorated.getProperty(Unknown Source)
	at com.github.jengelman.gradle.plugins.shadow.internal.AbstractDependencyFilter.resolve(AbstractDependencyFilter.groovy:30)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at com.github.jengelman.gradle.plugins.shadow.internal.AbstractDependencyFilter$_resolve_closure2.doCall(AbstractDependencyFilter.groovy:38)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at com.github.jengelman.gradle.plugins.shadow.internal.AbstractDependencyFilter.resolve(AbstractDependencyFilter.groovy:37)
	at com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar$1.call(ShadowJar.java:50)
	at com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar$1.call(ShadowJar.java:46)
	at org.gradle.util.internal.GUtil.uncheckedCall(GUtil.java:454)
	at org.gradle.util.internal.DeferredUtil.unpackNestableDeferred(DeferredUtil.java:83)
	at org.gradle.api.internal.file.collections.UnpackingVisitor.add(UnpackingVisitor.java:87)
	at org.gradle.api.internal.file.collections.DefaultConfigurableFileCollection$UnresolvedItemsCollector.visitContents(DefaultConfigurableFileCollection.java:372)
	at org.gradle.api.internal.file.collections.DefaultConfigurableFileCollection.visitChildren(DefaultConfigurableFileCollection.java:284)
	at org.gradle.api.internal.file.CompositeFileCollection.visitDependencies(CompositeFileCollection.java:108)
	at org.gradle.api.internal.file.collections.DefaultConfigurableFileCollection.visitDependencies(DefaultConfigurableFileCollection.java:290)
	at org.gradle.api.internal.tasks.CachingTaskDependencyResolveContext$TaskGraphImpl.getNodeValues(CachingTaskDependencyResolveContext.java:114)
	at org.gradle.internal.graph.CachingDirectedGraphWalker$GraphWithEmptyEdges.getNodeValues(CachingDirectedGraphWalker.java:213)
	at org.gradle.internal.graph.CachingDirectedGraphWalker.doSearch(CachingDirectedGraphWalker.java:121)
	at org.gradle.internal.graph.CachingDirectedGraphWalker.findValues(CachingDirectedGraphWalker.java:73)
	at org.gradle.api.internal.tasks.CachingTaskDependencyResolveContext.getDependencies(CachingTaskDependencyResolveContext.java:69)
	... 136 more
Caused by: java.lang.IllegalArgumentException
	at org.gradle.api.internal.provider.ValueSupplier$Value.of(ValueSupplier.java:215)
	at org.gradle.api.internal.provider.BiProvider.calculateOwnValue(BiProvider.java:56)
	at org.gradle.api.internal.provider.AbstractMinimalProvider.calculatePresence(AbstractMinimalProvider.java:79)
	at org.gradle.api.internal.provider.MappingProvider.calculatePresence(MappingProvider.java:50)
	at org.gradle.api.internal.provider.AbstractProperty.calculatePresence(AbstractProperty.java:58)
	... 187 more

Enable preview features?

Should we add something to Indra to prevent the need to do this in individual projects?

tasks.withType(JavaCompile).each {
  it.options.compilerArgs.add("--enable-preview")
}

tasks.withType(Javadoc).each {
  it.options {
    addBooleanOption("-enable-preview", true)
  }
}

Handle multirelease jars as input to jacoco tasks

Right now, when test coverage tasks are run jacoco doesn't know about multirelease sources, so it detects a mismatch between the executed bytecode and the source in the case of any class file using multirelease variants.

This results in error messages like:

> Task :core:jacocoTestReport
[ant:jacocoReport] Classes in bundle 'core' do not match with execution data. For report generation the same class files must be used as at runtime.
[ant:jacocoReport] Execution data for class org/spongepowered/configurate/objectmapping/RecordFieldDiscoverer$1 does not match.
[ant:jacocoReport] Execution data for class org/spongepowered/configurate/util/UnmodifiableCollections does not match.
[ant:jacocoReport] Execution data for class org/spongepowered/configurate/objectmapping/RecordFieldDiscoverer does not match.

Is it possible to resolve this, and (potentially) run coverage reports for every multirelease variant?

docs?

Any documentation or example anywhere?

Migrate source/toolchain handling into multirelease plugin

It seems to make more sense to consolidate all handling of releases into one place, in the multirelease plugin.

Some of the versioning logic is pretty closely interconnected, so some versions are based on the lowest target, but others are based on the highest version used within a source set.

This would also allow the multirelease plugin to be used separately from the rest of indra.

dependency locking handling

add an additional plugin to configure dependency locking based on what I've tried out in Configurate:

  • require that the one lockfile per-project feature is enabled (this has to be done in settings.gradle.kts I think)
  • lock all configurations
  • add a new task called resolveAllForLocking that resolves all declared resolvable configurations
  • adjust the location of dependency lockfile to rootProject.file("gradle/dependencies/${absolute path to project}.dependency.lock")
  • Configure the publication to publish using resolved versions

Target J11

Now that the latest versions of several of our dependencies (Spotless, JGit) target Java 11 as a minimum, and many people are developing software targeting even Java 17, we might as well bump our required Java runtime to J11.

Add a validation that all packages in a module are exported

For modules where all or almost all of the packages should be expocted, it would be helpful to have a task to automatically validate that every package that should be exported, is exported.

This task should be able to take a list of exceptions -- as a list of prefixes, or perhaps a regex (though probably the prefix list is more appropriate), so we can allow for a list of internal packages.

multi-release jars

make it easy to produce multi-release jars

  • allow producing jars off of a single source set
  • have this configuration be source-set local
  • allow registering additional configuration actions for versions (for example, adjusting the compatibility level of an associated check task)
  • allow having per-version test sources, that are executed against the multi-release jar
  • support for producing multi-release modular jars
    • this will require passing the module name in the buildscript -- we should verify that the provided module name matches the actual module name in the produced module-info.class maybe?

Indra Incorrectly Sets Libraries as Modules on Eclipse in Non-Modular Project

Indra seems to add dependencies to the module path in via the Gradle eclipse plugin even when a project has no module-info.java or automatic module name set. This can lead to the project failing to be compiled in eclipse due to JPMS errors.

Geyser is an example of this, which recently moved to Indra for builds but does not declare modules. I opened a PR there to temporarily mitigate this GeyserMC/Geyser#3584 but they advised I open a bug on Indra. It can also be mitigated by temporarily setting inferModulePath to false, as that ensures the check for if a library should be added to the module path returns false.

Relevant code:
https://github.com/KyoriPowered/indra/blob/main/3.x/indra-common/src/main/java/net/kyori/indra/internal/multirelease/IndraMultireleasePlugin.java#L540-L569
https://github.com/KyoriPowered/indra/blob/main/3.x/indra-common/src/main/java/net/kyori/indra/internal/ModularityDetecter.java#L53-L117

I also discussed in the Adventure Discord. See https://discord.com/channels/319355592605040642/923221456073150525/1079701892550103040.

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Awaiting Schedule

These updates are awaiting their schedule. Click on a checkbox to get an update now.

  • chore(deps): Update dependency org.junit:junit-bom to v5.10.2

Warning

Renovate failed to look up the following dependencies: Failed to look up maven package gradle.plugin.org.cadixdev.gradle:licenser, Failed to look up maven package org.gradlex:java-ecosystem-capabilities, Failed to look up maven package com.gradle.publish:plugin-publish-plugin, Failed to look up maven package io.github.gradle-nexus:publish-plugin.

Files affected: gradle/libs.versions.toml


Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

github-actions
.github/workflows/build.yml
.github/workflows/test-gradle-rc.yml
gradle
gradle.properties
settings.gradle
  • org.gradle.toolchains.foojay-resolver-convention 0.7.0
build.gradle
gradle/libs.versions.toml
  • org.junit:junit-bom 5.10.1
  • org.immutables:builder 2.10.0
  • org.immutables:value 2.10.0
  • org.jetbrains:annotations 24.1.0
  • net.kyori:mammoth 1.3.1
  • org.ow2.asm:asm 9.6
  • gradle.plugin.org.cadixdev.gradle:licenser 0.6.1
  • org.gradlex:java-ecosystem-capabilities 1.3.1
  • org.jetbrains.kotlin:kotlin-gradle-plugin 1.9.22
  • org.eclipse.jgit:org.eclipse.jgit 6.8.0.+
  • com.gradle.publish:plugin-publish-plugin 1.2.1
  • io.github.gradle-nexus:publish-plugin 1.3.0
  • net.kyori:mammoth-test 1.3.1
  • com.diffplug.eclipse.apt 3.42.2
  • com.gradle.plugin-publish 1.2.1
  • net.kyori.indra 3.1.3
  • net.kyori.indra.licenser.spotless 3.1.3
  • net.kyori.indra.publishing.gradle-plugin 3.1.3
  • com.diffplug.spotless 6.21.0
indra-common/build.gradle
indra-crossdoc/build.gradle
indra-git/build.gradle
indra-licenser-cadix/build.gradle
indra-licenser-spotless/build.gradle
indra-publishing-gradle-plugin/build.gradle
indra-publishing-sonatype/build.gradle
indra-testlib/gradle.properties
indra-testlib/build.gradle
gradle-wrapper
gradle/wrapper/gradle-wrapper.properties
  • gradle 8.4

  • Check this box to trigger a request for Renovate to run again on this repository

s01 sonatype support

It'd be nice to have an easy way to configure the indra sonatype publishing to point to the new s01.oss.sonatype.org snapshot/release repository. Perhaps just a function you can call to set that instead of the normal one.

Functional tests

With mammoth-test, there is a lot less boilerplate to creating Gradle functional tests.

We should do some of these to validate plugin functionality automatically.

new module: jarsigning

There's a very rough version of this in the Configurate codebase at https://github.com/SpongePowered/Configurate/blob/ea78b5c003ecf917b1081da24a01619bc2d22743/build-logic/src/main/groovy/org.spongepowered.configurate.build.publishing.gradle#L22

This implementation is quite brittle at the moment, rough improvements:

The plugin doesn't work with Gradle 7.1.x anymore

After upgrading to Gradle 7.1.x my project cannot be built (>= Gradle 7.1.0).
Th error log is:

Failed to apply plugin class 'org.cadixdev.gradle.licenser.Licenser'.
> Could not get unknown property 'header' for extension 'base' of type org.gradle.api.plugins.internal.DefaultBasePluginExtension.

Apply Java/JVM target settings to Kotlin, Groovy, and Scala plugins

Currently, Indra's java versioning only applies to Java targets. We should extend this to apply to all common JVM-targeting plugins.

This is relatively easy for Groovy and Scala, since their plugins are built into Gradle.

Kotlin requires a few more tricks -- we'll run into classloader issues in cases where indra is applied to the root project plus subprojects, but the kotlin plugin is only applied to a subproject, so that needs to be worked around

Need to confirm which gradle versions support toolchains for groovy/scala, and which kotlin plugin versions support toolchains.

Remove manual Kotlin extension functions for repositories

With Gradle 7.4, Kotlin buildscripts will now have accessors generated for repositories extensions. This means we don't have to provide our own extension functions anymore.

With this change, we can work towards removing all references to the Kotlin plugin from our build. This will improve build times and reduce the potential for classpath conflicts that we currently have.

The repositories extension generation might need to be changed to use something other than a Groovy Closure -- but that can be tested whenever we're ready to start work on Indra 3.

Annotated tags do not qualify for release requirements

indra-publishing requires that the repository is tagged, but only accepts lightweight tags.

Annotated tags, either signed git tag v1.0.0 -s or commented git tag v1.0.0 -m "first release", are not accepted.
Deleting the tag and recreating a lightweight one then causes the configured repository to be added ("is in a release state").

Log property finalization

To detect cases where properties are finalized before the project buildscript has a chance to execute

Add a module to auto-apply Eclipse code style settings

Because Eclipse does codestyle configuration per-project, it can be annoying to override specific settings. We should be able to configure the appropriate JDT options for codestyle and import order automatically as part of the project import.

multirelease: Handle module detection for the eclipse classpath

Currently, the eclipse plugin will not put any dependencies on the module path if they don't see the main source set as having a module-info.java. However, with the multirelease plugin we can have a module-info in a secondary source set, so we need to take on this module detection ourselves (and/or file a Gradle issue)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.