State of maven artifacts

Scott Palmer swpalmer at gmail.com
Mon Oct 1 01:41:38 UTC 2018


I stopped using Maven years ago after switching to Gradle. So that could be right.  I think there was an issue with Gradle processing transitive dependencies with a classifier or something.  Thankfully Gradle makes it easy to specify the right classifier.

Scott


> On Sep 30, 2018, at 7:01 PM, Michael Ennen <mike.ennen at gmail.com> wrote:
> 
> Scott,
> 
> It seems that, for me at least, specifying the platform manually is not necessary on
> Maven but is necessary on Gradle. Looking at the POMs themselves it seems that
> the javafx-graphics, javafx-controls, etc. modules declare a dependency on the
> platform specific artifacts:
> 
> <dependency>
>     <groupId>org.openjfx</groupId>
>     <artifactId>javafx-base</artifactId>
>     <version>11</version>
>     <classifier>${javafx.platform}</classifier>
> </dependency>
> 
> and declare as their parent:
> 
> <parent>
>     <groupId>org.openjfx</groupId>
>     <artifactId>javafx</artifactId>
>     <version>11</version>
> </parent>
> 
> and the POM for that parent has the platform-specific Maven profiles built-in.
> 
> So in other words the logic is already built in to the Maven POM and therefore
> works out of the box with Maven but Gradle does not re-use the Maven profile
> logic in the POM.
> 
> Regards,
> Michael Ennen
> 
> On Sun, Sep 30, 2018 at 2:19 PM Scott Palmer <swpalmer at gmail.com <mailto:swpalmer at gmail.com>> wrote:
> I thought he was saying the exact opposite.
> You must specify the platform by using some mechanism in Maven (profiles?) or Gradle.
> 
> That’s what worked for me anyway.
> 
> Scott
> 
> > On Sep 26, 2018, at 6:19 AM, Michael Ennen <mike.ennen at gmail.com <mailto:mike.ennen at gmail.com>> wrote:
> > 
> > And just to reiterate and confirm for anyone trying to get a handle on using
> > the Maven artifacts - it is *NOT* necessary to manually specify the platform
> > classifier when using maven or gradle (nor add the automatic tricks to your
> > own project) because the JavaFX artifacts will automatically detect the
> > platform you are building on and pull in the correct artifacts, right?
> > 
> > Thanks for your work in this area Johan.
> > 
> > On Wed, Sep 26, 2018 at 12:31 AM Johan Vos <johan at lodgon.com <mailto:johan at lodgon.com>> wrote:
> > 
> >> The problem with that is that there is no cross-platform version of the
> >> jars itself. The windows-jar for the graphics module contains different
> >> Java classes than the linux jar, for example.
> >> The top-level API's are the same of course, hence the logical Java module
> >> is the same, but different physical jars are really needed.
> >> I realise this may be strange at compile time, where you only care about
> >> the top-level API's. Therefore, people added nice "tricks" to both a
> >> pom.xml and build.gradle system to automatically detect the current (host)
> >> operating system, and making sure the correct artifacts are then used.
> >> 
> >> What I really wanted to avoid is that developers had to manually add their
> >> platform (e.g. "win") in the build files, as this would break
> >> cross-platform development (imagine you're in a team with a win and a linux
> >> user, and they constantly change the pom.xml or build.gradle file for
> >> this...).
> >> 
> >> I think the current solution deals pretty well with the current situations,
> >> where there are different concepts in gradle/maven/sonatype and in the Java
> >> module system.
> >> 
> >> - Johan
> >> 
> >> 
> >> 
> >> Op wo 26 sep. 2018 om 05:46 schreef Nir Lisker <nlisker at gmail.com <mailto:nlisker at gmail.com>>:
> >> 
> >>> Thanks Sam, that solved it. For some reason I was thinking that if you
> >>> don't specify the platform it downloads a version with all native
> >>> dependencies for cross compilation.
> >>> 
> >>> On Wed, Sep 26, 2018 at 2:37 AM Sam Carlberg <sam.carlberg at gmail.com <mailto:sam.carlberg at gmail.com>>
> >>> wrote:
> >>> 
> >>>> The libraries are in artifacts with platform-specific classifiers. The
> >>>> artifacts with no classifiers that you currently depend on are
> >> completely
> >>>> empty.
> >>>> 
> >>>> You need to depend on "org.openjfx:javafx-base:11:$platform", where the
> >>>> platform is one of "win", "mac", or "linux".
> >>>> 
> >>>> On Tue, Sep 25, 2018, 5:18 PM Nir Lisker <nlisker at gmail.com <mailto:nlisker at gmail.com>> wrote:
> >>>> 
> >>>>> Hi,
> >>>>> 
> >>>>> I haven't kept up with all of the Maven artifacts discussion. The
> >>> website
> >>>>> mentioned in 2 places that there are maven artifacts, but does not
> >>> mention
> >>>>> their ID's, group etc. These are the downloads page [1] and the
> >> getting
> >>>>> started page [2] (later you can see an example pom, but that doesn't
> >>>>> count).
> >>>>> 
> >>>>> I'm using "org.openjfx:javafx-base:11" (gradle syntax) etc. and it
> >> finds
> >>>>> the artifacts. It should be written in the above pages if this is
> >>> correct.
> >>>>> 
> >>>>> On the usability side it's worse. I'm using Eclipse and during
> >>> compilation
> >>>>> I'm getting error messages that JavaFX classes like BooleanProperty
> >>> can't
> >>>>> be found. Is it a JavaFX problem, Eclipse problem, or me problem?
> >>>>> 
> >>>>> If I use the SDKs, can I point Gradle and Maven to them if it will
> >> solve
> >>>>> the problem?
> >>>>> 
> >>>>> - Nir
> >>>>> 
> >>>>> [1] https://gluonhq.com/products/javafx/ <https://gluonhq.com/products/javafx/>
> >>>>> [2] https://openjfx.io/openjfx-docs/#introduction <https://openjfx.io/openjfx-docs/#introduction>
> >>>>> 
> >>>> 
> >>> 
> >> 
> > 
> > 
> > -- 
> > Michael Ennen
> 
> 
> 



More information about the openjfx-dev mailing list