Buildship problem with sub project after updating gradle wrapper from 7.2 to 8.9

After updating gradle wrapper from 7.2 to 8.9 buildship reports a problem in one of the subprojects

Synchronize Gradle projects with workspace failed due to an unexpected error.

Java Model Exception: Error in Java Model (code 964): Cannot nest ‘com.exoknox.fdm.shared/src/main/resources/com/exoknox/fdm/shared/util’ inside ‘com.exoknox.fdm.shared/src/main/resources’. To enable the nesting exclude ‘com/’ from ‘com.exoknox.fdm.shared/src/main/resources’

I’m using Buildship: Eclipse Plug-ins for Gradle 3.1.9.v20240116-1515

It is very inconvenient as it looks like the Project and external dependencies are not updated correctly.

Below you see the error from the log.

Regards
Marcel

eclipse.buildId=4.31.0.20240307-1200
java.version=17.0.11
java.vendor=Eclipse Adoptium
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_CH
Framework arguments:  -product org.eclipse.epp.package.rcp.product
Command-line arguments:  -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.rcp.product
 

org.eclipse.buildship.core
Error
Fri Jul 19 08:56:07 CEST 2024
Synchronize Gradle projects with workspace failed due to an unexpected error.

Java Model Exception: Error in Java Model (code 964): Cannot nest 'com.exoknox.fdm.shared/src/main/resources/com/exoknox/fdm/shared/util' inside 'com.exoknox.fdm.shared/src/main/resources'. To enable the nesting exclude 'com/' from 'com.exoknox.fdm.shared/src/main/resources'
	at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:804)
	at org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:3574)
	at org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:3534)
	at org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:3590)
	at org.eclipse.buildship.core.internal.workspace.SourceFolderUpdater.updateSourceFolders(SourceFolderUpdater.java:71)
	at org.eclipse.buildship.core.internal.workspace.SourceFolderUpdater.update(SourceFolderUpdater.java:178)
	at org.eclipse.buildship.core.internal.workspace.BaseConfigurator.synchronizeJavaProjectInTransaction(BaseConfigurator.java:116)
	at org.eclipse.buildship.core.internal.workspace.BaseConfigurator.access$000(BaseConfigurator.java:40)
	at org.eclipse.buildship.core.internal.workspace.BaseConfigurator$1.run(BaseConfigurator.java:105)
	at org.eclipse.jdt.internal.core.BatchOperation.executeOperation(BatchOperation.java:41)
	at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:742)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2448)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2473)
	at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:6082)
	at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:6038)
	at org.eclipse.buildship.core.internal.workspace.BaseConfigurator.synchronizeJavaProject(BaseConfigurator.java:101)
	at org.eclipse.buildship.core.internal.workspace.BaseConfigurator.configure(BaseConfigurator.java:91)
	at org.eclipse.buildship.core.internal.workspace.BaseConfigurator.configure(BaseConfigurator.java:66)
	at org.eclipse.buildship.core.internal.extension.InternalProjectConfigurator.configure(InternalProjectConfigurator.java:66)
	at org.eclipse.buildship.core.internal.workspace.ProjectConfigurators.configureConfigurators(ProjectConfigurators.java:70)
	at org.eclipse.buildship.core.internal.workspace.SynchronizeGradleBuildOperation.synchronizeOpenWorkspaceProject(SynchronizeGradleBuildOperation.java:163)
	at org.eclipse.buildship.core.internal.workspace.SynchronizeGradleBuildOperation.synchronizeWorkspaceProject(SynchronizeGradleBuildOperation.java:137)
	at org.eclipse.buildship.core.internal.workspace.SynchronizeGradleBuildOperation.synchronizeGradleProjectWithWorkspaceProject(SynchronizeGradleBuildOperation.java:127)
	at org.eclipse.buildship.core.internal.workspace.SynchronizeGradleBuildOperation.access$000(SynchronizeGradleBuildOperation.java:42)
	at org.eclipse.buildship.core.internal.workspace.SynchronizeGradleBuildOperation$1.run(SynchronizeGradleBuildOperation.java:85)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2448)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2468)
	at org.eclipse.buildship.core.internal.workspace.SynchronizeGradleBuildOperation.synchronizeProjectsWithWorkspace(SynchronizeGradleBuildOperation.java:82)
	at org.eclipse.buildship.core.internal.workspace.SynchronizeGradleBuildOperation.run(SynchronizeGradleBuildOperation.java:64)
	at org.eclipse.buildship.core.internal.DefaultGradleBuild$SynchronizeOperation.runInToolingApi(DefaultGradleBuild.java:238)
	at org.eclipse.buildship.core.internal.operation.DefaultToolingApiOperationManager$WorkspaceRunnableAdapter.run(DefaultToolingApiOperationManager.java:58)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2448)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2473)
	at org.eclipse.buildship.core.internal.operation.DefaultToolingApiOperationManager.run(DefaultToolingApiOperationManager.java:39)
	at org.eclipse.buildship.core.internal.DefaultGradleBuild$SynchronizeOperation.run(DefaultGradleBuild.java:197)
	at org.eclipse.buildship.core.internal.DefaultGradleBuild.synchronize(DefaultGradleBuild.java:105)
	at org.eclipse.buildship.core.internal.workspace.SynchronizationJob.runInToolingApi(SynchronizationJob.java:64)
	at org.eclipse.buildship.core.internal.workspace.SynchronizationJob.runInToolingApi(SynchronizationJob.java:30)
	at org.eclipse.buildship.core.internal.operation.ToolingApiJob$1.runInToolingApi(ToolingApiJob.java:54)
	at org.eclipse.buildship.core.internal.operation.DefaultToolingApiOperationManager$WorkspaceRunnableAdapter.run(DefaultToolingApiOperationManager.java:58)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2448)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2473)
	at org.eclipse.buildship.core.internal.operation.DefaultToolingApiOperationManager.run(DefaultToolingApiOperationManager.java:39)
	at org.eclipse.buildship.core.internal.operation.ToolingApiJob.run(ToolingApiJob.java:65)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)

Can you provide a minimal reproducible example?

Hope this helps.

Hi @MarcelRueedi

The gradle-git-properties plugin configures a second source folder src/main/resources/com/karakun/shared/util to the existing folder src/main/resources:

This is probably not intended an cannot handled by Eclipse:

Cannot nest ‘com.karakun.shared/src/main/resources/com/karakun/shared/util’ inside ‘com.karakun.shared/src/main/resources’.

From the description of the plugin:

// Customize file name (could be a file name or a relative file path below gitPropertiesResourceDir dir)
gitPropertiesName = "my-git-file.properties"

Using gitPropertiesName instead of gitPropertiesResourceDir no additional folder will be introduced:

gitProperties {
    // gitPropertiesResourceDir = file("${sourceSets.main.resources.srcDirs[0]}/com/karakun/shared/util")
    gitPropertiesName = "com/karakun/shared/util/git.properties"

    // [...]
}

Hi @oleosterhagen
Thanks for your help. As we need the file to be in the resources directory the solution is actually this.

gitPropertiesResourceDir = file("${sourceSets.main.resources.srcDirs[0]}")
gitPropertiesName = "/com/karakun/shared/util/git.properties"

Unfortunately - this seems only working on windows
linux/macs get
Execution failed for task ‘:com.exoknox.fdm.shared:generateGitProperties’. org.gradle.api.UncheckedIOException: Failed to create parent directory ‘/com’ when creating directory ‘/com/exoknox/fdm/shared/util’

my bad with

gitPropertiesName = "com/karakun/shared/util/git.properties"

its working