Why are there only platform-specific Maven artifacts?

Sam Carlberg sam.carlberg at gmail.com
Fri Aug 24 21:23:20 UTC 2018

As I see it, providing only platform-specific artifacts makes it difficult
or impossible for third-party JavaFX libraries or frameworks to depend on
the JavaFX API and pass it along to consumers. Libraries don't care about
the platform-specific code - that's up the final application to determine -
but are forced to arbitrarily choose one of the Windows, Mac, or Linux JARs
anyway. I suppose they could use a compileOnly configuration, but that
forces all downstream consumers to re-declare the JavaFX dependencies (and
keep track of the dependencies of the library, too!)

IMO it makes more sense to publish the general API classes into a
classifier-less JAR (which are now the "empty JARs") and place the
platform-specific classes and binaries in platform-specific artifacts with
a different name. For example, JavaFX could have a "javafx-graphics"
artifact for the platform-agnostic classes, and a `java-graphics-platform"
for platform-specific code, with classifiers to specify the platform. This
does run into the "empty JAR" issue again, but it'd be limited in scope to
only the final application.

Sam Carlberg

More information about the openjfx-dev mailing list