[nbdev] Re: Maven Netbeans builds and dependencies issues (especially transitive ones)

  • From: Milos Kleint < >
  • To:
  • Subject: [nbdev] Re: Maven Netbeans builds and dependencies issues (especially transitive ones)
  • Date: Thu, 28 Feb 2013 15:36:31 +0100

On Thu, Feb 28, 2013 at 3:03 PM, Jean-Marc Borer 
< >
 wrote:
> Hello all,
>
> I am currently trying to reuse the XML editor features provided by NB
> IDE in my platform app.
>
> I've followed Geertjan example at
> https://blogs.oracle.com/geertjan/entry/xml_editor_in_maven
>
> I tried then to reduce the number of dependencies declaration and
> started wondering how all this is supposed to work with Maven. I have
> a good understanding how dependencies work with an usual use of the
> modules (ant build). However I am really puzzled with Maven.
>
> Firstable in Geertjan's project the dependencies declare the type jar.
> When you look at the platform or ide cluster, there the type used is
> nbm-file. There is also the type nbm which I have already seen in some
> pom.xml
>
> When you try to integrate a feature like XML editor from the IDE, it
> is very difficult to know which dependencies are required.  I read
> somewhere on the internet that you are supposed to explicitly include
> every single dependency. Transitive dependencies are not supported by
> NB.I thought naively that thanks to Maven you only need to, say,
> depend on some top modules and then nbm plugin will use Maven and
> resolve all the transitive dependencies  and add them to your module.
> This seems not really be the case, but somehow it does partially work.
> If you look at Geertjan's project you can see that not ALL modules are
> listed but only some of them. A lot of lower level dependencies are
> included anyway.
>
> I have also read that at build time, the nbm plugin is supposed to
> warn about missing dependencies. It is not the case. Errors appear
> only at runtime.

Only at single module's level we check if your classes are only using
dependency classes from direct dependencies. Because only direct
dependencies get resolved to Class-Path and
OpenIDE-Module-Dependencies entries in the manifest. That's a sort of
workaround to the transitive nature of maven dependencies. Without
this approach, a single dependency to o.n.modules.j2ee.something would
result in tens to hundreds of dependencies on modules. Some of which
your module is not friend of  or which don't provide public api..

No checks are done on the application level.

>
> Can someone here on list give me some insights how dependencies are
> supposed to work with Maven and what are finally the differences
> between the artifact types: pom, jar, nbm and nbm-file and when each
> should be used.

in your module (nbm packaging), use just jar dependencies, these will
transitively include the entire dependency tree. jars is what you need
on on classpath

in your application (nbm-application), use pom dependencies on
clusters you want to include (org.netbeans.cluster) and on your own
nbm packaging projects (preferably with <type>jar</type>  to include
the transitive tree again.
To exclude a module from the application, use <exclusions> on the
org.netbeans.cluster dependencies.

That's about the minimal workflow that is required/expected.

Now the gory details.
the poms for org.netbeans.cluster contain references to "nbm-file"
type of artifacts. That type gets resolved internally by
ArtifactHandler  to nbm extension and doesn't contain transitive
dependencies. That's useful there because you only need to exclude a
module from a single cluster this way, with transitivity on, you would
have to exclude it from all pom dependencies.
Internally the nbm-application project constructs your application
from the nbm files, so even your jar dependencies get converted to nbm
files behind the scenes.
"nbm" dependency type is an old attempt to limit the transitivity of
maven dependencies to better map to netbeans' own idea about
transitivity. "In your module yuo only see what you explicitly depend
on". Internally the "nbm" type gets converted to "jar" file extension,
but unlike jar it doens't contain transitive dependencies. It sort of
worked, but fell apart when library wrappers are thrown into the game.
That's why I would not recommend it to use extensively. But because we
have the "nbm" type first, we had to come up with "nbm-file" for nbm
files themselves later. Just a backward compatibility gig.

Theoretically it should be enough for your application to depend on
your modules and their transitive dependencies, However maven cannot
entirely express the full range of module dependencies. You will miss
out some essential modules (of "eager" kind) that noone depends on but
that provide vital servises and automatically get enabled when some
other module requires such service. eg. output window, window
system,master filesystem and other modules

 Hope that helps

Milos


>
> Thank you in advance for your help.
>
> PS: I use the nbm-plugin 6.9 and NB 7.3
>
> Cheers,
>
> Jean-Marc


[nbdev] Maven Netbeans builds and dependencies issues (especially transitive ones)

Jean-Marc Borer 02/28/2013

[nbdev] Re: Maven Netbeans builds and dependencies issues (especially transitive ones)

Milos Kleint 02/28/2013

[nbdev] Re: Maven Netbeans builds and dependencies issues (especially transitive ones)

Jean-Marc Borer 02/28/2013

[nbdev] Re: Maven Netbeans builds and dependencies issues (especially transitive ones)

Milos Kleint 02/28/2013

[nbdev] Re: Maven Netbeans builds and dependencies issues (especially transitive ones)

02/28/2013

[nbdev] Re: Maven Netbeans builds and dependencies issues (especially transitive ones)

Jean-Marc Borer 02/28/2013

[nbdev] Re: Maven Netbeans builds and dependencies issues (especially transitive ones)

Jean-Marc Borer 02/28/2013

[nbdev] Re: Maven Netbeans builds and dependencies issues (especially transitive ones)

Jean-Marc Borer 02/28/2013

[nbdev] Re: Maven Netbeans builds and dependencies issues (especially transitive ones)

02/28/2013

Project Features

About this Project

www was started in November 2009, is owned by jpirek, and has 21 members.
By use of this website, you agree to the NetBeans Policies and Terms of Use (revision 20140418.2d69abc). © 2013, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo
 
 
Close
loading
Please Confirm
Close