Export-Package from depended-upon jars in PDE project

The WALA project has a fairly complex Gradle 6.3 build system with more than two dozen Gradle subprojects. Most of these subprojects do not necessarily need to be Eclipse PDE plug-in projects, but a few are, such as com.ibm.wala.ide. We we have a com.ibm.wala.ide/META-INF/MANIFEST.MF file containing a long Export-Package list. Some of the packages on that list are implemented within the com.ibm.wala.ide code, but most come from other WALA Gradle subprojects. For example, we want to export com.ibm.wala.ide.ui (implemented within the com.ibm.wala.ide Gradle subproject) and also com.ibm.wala.util.graph (implemented within the com.ibm.wala.util Gradle subproject).

When we bring this all into Eclipse 2020-03 via Buildship 3.1.3, the long Export-Package list shows over one hundred error markers, one for each exported package that did not come from com.ibm.wala.ide itself. For example, the line that exports com.ibm.wala.util.graph reports that “Package ‘com.ibm.wala.util.graph’ does not exist in this plug-in”.

We are already listing project(':com.ibm.wala.util') as an API dependency in com.ibm.wala.ide/build.gradle, along with all of the other jar-producing subprojects that we want to export for the IDE plugin, but that doesn’t seem to help:

dependencies {
	api(
			project(':com.ibm.wala.cast'),
			project(':com.ibm.wala.core'),
			project(':com.ibm.wala.shrike'),
			project(':com.ibm.wala.util'),
			testFixtures(project(':com.ibm.wala.cast')),
	)
}

I’ve also added the built jar files to build.properties:

jars.extra.classpath = \
 ../com.ibm.wala.cast/build/libs/com.ibm.wala.cast-1.5.6-SNAPSHOT.jar,\
 ../com.ibm.wala.cast/build/libs/com.ibm.wala.cast-1.5.6-SNAPSHOT-test-fixtures.jar,\
 ../com.ibm.wala.core/build/libs/com.ibm.wala.core-1.5.6-SNAPSHOT.jar,\
 ../com.ibm.wala.shrike/build/libs/com.ibm.wala.shrike-1.5.6-SNAPSHOT.jar,\
 ../com.ibm.wala.util/build/libs/com.ibm.wala.util-1.5.6-SNAPSHOT.jar

and to META-INF/MANIFEST.MF:

Bundle-ClassPath: .,
 ../com.ibm.wala.cast/build/libs/com.ibm.wala.cast-1.5.6-SNAPSHOT.jar,
 ../com.ibm.wala.cast/build/libs/com.ibm.wala.cast-1.5.6-SNAPSHOT-test-fixtures.jar,
 ../com.ibm.wala.core/build/libs/com.ibm.wala.core-1.5.6-SNAPSHOT.jar,
 ../com.ibm.wala.shrike/build/libs/com.ibm.wala.shrike-1.5.6-SNAPSHOT.jar,
 ../com.ibm.wala.util/build/libs/com.ibm.wala.util-1.5.6-SNAPSHOT.jar

None of this helps: we still get a “does not exist in this plug-in” error for each exported package that should come from from a sibling subproject’s jar instead of from com.ibm.wala.ide.

I’ll be the first to admit that I understand very little about Eclipse-specific Java things: PDE, OSGi, bundles, manifests, etc. I barely even know how to ask the right questions. At this point I feel like I’m casting about randomly, hoping to get lucky and stumble upon a way to communicate our dependencies to Eclipse and Buildship correctly. So far, no luck. Can someone who knows this world better than I do please give us a bit of help?