plugins { id 'jacoco' id 'java' id 'refinery-eclipse' } repositories { mavenCentral() maven { url 'https://repo.eclipse.org/content/groups/releases/' } } dependencies { compileOnly libs.jetbrainsAnnotations testCompileOnly libs.jetbrainsAnnotations testImplementation libs.hamcrest testImplementation libs.junit.api testRuntimeOnly libs.junit.engine testImplementation libs.junit.params testImplementation libs.mockito.core testImplementation libs.mockito.junit } java.toolchain { languageVersion = JavaLanguageVersion.of(19) } tasks.withType(JavaCompile) { options.release = 17 } def jacocoTestReport = tasks.named('jacocoTestReport') jacocoTestReport.configure { dependsOn test reports { xml.required = true } } tasks.named('test') { useJUnitPlatform { excludeTags 'slow' } finalizedBy jacocoTestReport } tasks.register('slowTest', Test) { useJUnitPlatform() finalizedBy jacocoTestReport } tasks.named('jar') { manifest { attributes( 'Bundle-SymbolicName': "${project.group}.${project.name}", 'Bundle-Version': project.version ) } } def generateEclipseSourceFolders = tasks.register('generateEclipseSourceFolders') tasks.register('prepareEclipse') { dependsOn generateEclipseSourceFolders dependsOn tasks.named('eclipseJdt') } tasks.named('eclipseClasspath') { dependsOn generateEclipseSourceFolders } eclipse { classpath.file.whenMerged { for (entry in entries) { if (entry.path.endsWith('-gen')) { entry.entryAttributes['ignore_optional_problems'] = true } // If a project has a main dependency on a project and an test dependency on the testFixtures of a project, // it will be erroneously added as a test-only dependency to Eclipse. // As a workaround, we add all project dependencies as main dependencies // (we do not deliberately use test-only project dependencies). if (entry in org.gradle.plugins.ide.eclipse.model.ProjectDependency) { entry.entryAttributes.remove('test') } } } jdt.file.withProperties { properties -> // Allow @SuppressWarnings to suppress SonarLint warnings properties['org.eclipse.jdt.core.compiler.problem.unhandledWarningToken'] = 'ignore' } }