The project I intend to include is the latest version of splain:
Which is built with gradle, and has the following extra task definition (in gradle kts):
// invoke
task("dependencyTree") {
dependsOn("dependencies")
}
If I include it (in another gradle project):
include("splain")
I will encounter 2 problems:
any build plugin used by splain that works only in root project (e.g. the "io.github.gradle-nexus.publish-plugin") will throw an error, because apparently splain is no longer a root project in this case (it is not a submodule either, so not sure how it is classified)
if the new project also define the task "dependencyTree" it will cause a naming conflict:
org.gradle.api.internal.tasks.DefaultTaskContainer$DuplicateTaskException: Cannot add task 'dependencyTree' as a task with that name already exists.
at org.gradle.api.internal.tasks.DefaultTaskContainer.failOnDuplicateTask(DefaultTaskContainer.java:257)
at org.gradle.api.internal.tasks.DefaultTaskContainer.addTask(DefaultTaskContainer.java:250)
at org.gradle.api.internal.tasks.DefaultTaskContainer.access$400(DefaultTaskContainer.java:76)
at org.gradle.api.internal.tasks.DefaultTaskContainer$2.call(DefaultTaskContainer.java:298)
at org.gradle.api.internal.tasks.DefaultTaskContainer$2.call(DefaultTaskContainer.java:292)
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.DefaultTaskContainer.doCreate(DefaultTaskContainer.java:292)
at org.gradle.api.internal.tasks.DefaultTaskContainer.create(DefaultTaskContainer.java:334)
at org.gradle.api.internal.tasks.DefaultTaskContainer.create(DefaultTaskContainer.java:75)
at org.gradle.api.internal.project.DefaultProject.task(DefaultProject.java:1270)
Apparently gradle task names have to be unique per each run, there is no design of scope or namespace for names.
I need the gradle to be able to declare any other gradle project that compiles successfully on its own as "included", instead of adding a lot of extra constraint that no one used to worry about. Is it possible? If not, what can be possibly done to mitigate the above 2 problems?