sourceSets { main { java { exclude 'com/twinsoft/convertigo/engine/plugins/**' srcDir 'patch' } resources { exclude 'com/twinsoft/convertigo/engine/plugins/**' srcDir 'patch' } } } eclipse { project { linkedResource name: 'patch/com', type: '2', locationUri: 'PARENT-1-PROJECT_LOC/patches/src/com' linkedResource name: 'patch/org', type: '2', locationUri: 'PARENT-1-PROJECT_LOC/patches/src/org' linkedResource name: 'src/com/twinsoft/convertigo/engine', type: '2', locationUri: 'PARENT-1-PROJECT_LOC/engine/src/com/twinsoft/convertigo/engine' linkedResource name: 'src/com/twinsoft/convertigo/beans', type: '2', locationUri: 'PARENT-1-PROJECT_LOC/engine/src/com/twinsoft/convertigo/beans' // providers linked as sources only on demand (c8o.localProviders in gradle.properties) rootProject.localProviders.each { linkedResource name: it.path, type: '2', location: it.sources.path } } classpath { file { withXml { rootProject.applyLocalProvidersToClasspath(it) def node = it.asNode() node.classpathentry.findAll { it.@path.contains('lib/dependencies') }.each { depJar -> depJar.@sourcepath = project(':engine').tasks.findByName('dependenciesSourceJar').archiveFile.get().asFile.path } def rp = node.classpathentry.find { it.@path == 'org.eclipse.pde.core.requiredPlugins' } ?: node.appendNode('classpathentry', [kind: 'con', path: 'org.eclipse.pde.core.requiredPlugins']) def accessrules = rp.appendNode('accessrules') accessrules.appendNode('accessrule', [kind: 'accessible', pattern: 'org/eclipse/egit/ui/**']) accessrules.appendNode('accessrule', [kind: 'accessible', pattern: 'org/eclipse/e4/ui/**']) accessrules.appendNode('accessrule', [kind: 'accessible', pattern: 'org/eclipse/ui/internal/genericeditor/**']) } } } } tasks['eclipse'].dependsOn ':engine:dependenciesSourceJar' dependencies { toSync project(':engine') toSync "${jxBrowserGroup}:jxbrowser:${jxBrowserVersion}" toSync "${jxBrowserGroup}:jxbrowser-swt:${jxBrowserVersion}" toSync 'org.apache.tomcat.embed:tomcat-embed-core:' + tomcatVersion toSync project.property('sapjco3Version') toSync 'com.convertigo.lib:jxbrowser-license:2026.04.27' implementation fileTree(dir: 'lib', include: '*.jar') } task writeManifest(dependsOn: ['copyLicense', 'syncLib', ':engine:unzipSwaggerUI']) { group = 'convertigo' doLast { def manifest = file 'META-INF/MANIFEST.MF' java.manifest { from sharedManifest attributes( 'Automatic-Module-Name': 'com.twinsoft.convertigo.studio', 'Bundle-Name': 'C-EMS studio plugin', 'Bundle-SymbolicName': 'com.twinsoft.convertigo.studio; singleton:=true', 'Eclipse-BundleShape': 'dir', 'Bundle-Activator': 'com.twinsoft.convertigo.eclipse.ConvertigoPlugin', 'Bundle-ActivationPolicy': 'lazy', 'Bundle-ClassPath': 'bin/,icons/,tomcat/webapps/convertigo/WEB-INF/classes,lib/convertigo-eclipse.jar,lib/convertigo-provider-plugins.jar,' + fileTree(dir: 'lib') .findAll { it.name != 'convertigo-provider-plugins.jar' } .collect { 'lib/' + it.name } .toSorted {a, b -> a.startsWith('lib/convertigo') ? -1 : b.startsWith('lib/convertigo') ? 1 : a <=> b } .join(','), 'Require-Bundle': ['org.eclipse.core.expressions', 'org.eclipse.core.resources', 'org.eclipse.core.runtime', 'org.eclipse.debug.ui', 'org.eclipse.e4.ui.css.core', 'org.eclipse.e4.ui.css.swt', 'org.eclipse.e4.ui.css.swt.theme', 'org.eclipse.e4.ui.model.workbench', 'org.eclipse.e4.ui.workbench', 'org.eclipse.egit.core', 'org.eclipse.egit.ui', 'org.eclipse.emf.common', 'org.eclipse.emf.ecore', 'org.eclipse.jface.text', 'org.eclipse.jgit', 'org.eclipse.search', 'org.eclipse.swt', 'org.eclipse.ui', 'org.eclipse.ui.console', 'org.eclipse.ui.editors', 'org.eclipse.ui.genericeditor', 'org.eclipse.ui.ide', 'org.eclipse.ui.navigator', 'org.eclipse.ui.navigator.resources', 'org.eclipse.ui.workbench.texteditor', 'org.eclipse.ui.views', 'org.eclipse.wst.sse.ui', 'org.eclipse.wst.sse.core' ].join(',') ) }.writeTo(manifest) manifest.text = manifest.text.replaceAll("Import-Package: .*\\s+", "") } } task copyLicense(type: Copy, dependsOn: [':checkLicenseDate']) { group = 'convertigo' from('../legal/dual-license.txt') { rename { 'license.txt' } } into 'src/com/twinsoft/convertigo/eclipse/wizards/setup' } project(':engine').afterEvaluate { syncLib { // the coordinates, not the toString of the dependency objects, which changes on each build inputs.property('engine-dependency', project(':engine').configurations.runtimeClasspath.allDependencies.collect { "${it.group}:${it.name}:${it.version}" }.sort().join(',')) } }