Make it easy to consume e(fx)clipse libraries in maven (or gradle)


In the past we now and then published some of our artifacts on maven central but because this was a manual process we’ve often been too lazy leading to do it on each release. This leads frustration because while we’ve released e(fx)clipse 2.5.0 already, the maven bits are stuck on 2.2.0.

I think not being able to consume our code outside the OSGi world has led to the false impression that e(fx)clipse runtime is just about OSGi although central parts of our framework happily run outside OSGi and so can be used like any other library:

  • We have additional layout containers like RowLayoutPane, FillLayoutPane, GridLayoutPane, SashPane
  • We have additional controls like FileSystemViewers, StyledTextArea, FontIconNode
  • We have a complete code editor framework with syntax highlighting, auto-complete, line/error markers, hover-support, navigation support, …
  • A Service Registry supporting a subset of the OSGi-Declarative-Service Framework outside the OSGi world in plain Java – say good bye to ServiceLoader once you used our service stuff

Solving this problem was at the top of my list for the Q1/2017 and I’m happy to announce that the complete e(fx)clipse runtime target platform is available from a maven-repository starting from today.

We’ve chose to publish the artifacts to one of our own public servers (http://maven.bestsolution.at/) instead of maven-central and there are multiple reasons for that:

  • We need to get confidence that our OSGi-To-Maven-Dependency translation is correct
  • We need to extract more meta-information to publish accurate informations like Developers, SCM-URLs
  • We need to refine how we deal with none Eclipse dependencies like apache-commons, …

It’s a nice coincidence that Stephan Herrmann did the same for the Eclipse Platform, JDT and PDE but there are some differences (today) from what I read on his blog entry (don’t shoot me Stephan if I got it wrong):

  • Stephan uses some CBI-stuff to translate the OSGi-Dependencies to maven pom dependencies, we use a simple helper library to do the same thing
  • Stephan replaces OSS-Dependencies like Apache-Commons through the direct maven substitutions, we are republishing the dependencies as we publish them from the Eclipse Orbit Project or any other Eclipse project.
    The reason is that we want the maven artifact repository to contain 100% the same bits as our p2-update-site and r5-repository. That’s the current state and it might change in future!
This entry was posted in e(fx)clipse. Bookmark the permalink.

7 Responses to Make it easy to consume e(fx)clipse libraries in maven (or gradle)

  1. Hi Tom, nice coincidence, indeed πŸ™‚
    You’re right about both differences.
    Re CBI aggregator: yes, it already did most of what we need, and in fact I’m working on still improving that tool as we speak (see https://bugs.eclipse.org/510186). The fact that it’s based on EMF is quite convenient, btw…
    Re 3rd party dependencies: yes that was a main goal in my approach: to avoid that clients will ever have on their classpath two copies of the same library on which they already have a (possibly indirect) dependency via regular maven channels.
    cheers

  2. Pingback: JavaFX links of the week, January 30 | JavaFX News, Demos and Insight // FX Experience

  3. Maxim says:

    I have created test project with `org.eclipse.fx.ui.controls` Maven dependency and specify repository described above. All works fine. Thank you a lot! πŸ™‚

    I have several questions too:
    1) As I understand I can use these libraries in commercial products because they under EPL license which allow to do it: https://eclipse.org/legal/eplfaq.php#COMPILEWOMOD?
    2) If I have noticed a problem (i.e. in StyledTextArea) where can I create issue about it?

    • Tom Schindl says:

      on 1. – Yes you can and you have the extra safety that code from Eclipse.org is run through IP-Processes
      on 2. – We current still use bugzilla but soon we’ll move our source and bug system to github

  4. maxd says:

    I have created test project with `org.eclipse.fx.ui.controls` Maven dependency and specify repository described above. All works fine. Thank you a lot! πŸ™‚

    I have several questions too:
    1) As I understand I can use these libraries in commercial products because they under EPL license which allow to do it: https://eclipse.org/legal/eplfaq.php#COMPILEWOMOD?
    2) If I have noticed a problem (i.e. in StyledTextArea) where can I create issue about it?

  5. Pingback: e(fx)clipse runtime library – Dealing with listeners on JavaFX-Observables | Tomsondev Blog

  6. Pingback: e(fx)clipse and the future of e4 on JavaFX | Tomsondev Blog

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.