SlideShare uma empresa Scribd logo
1 de 203
Baixar para ler offline
Efficient development
                     of large NetBeans Platform
                             applications
                              with Maven
                                Fabrizio Giudici, Senior Java Architect
                             Tidalwave s.a.s - fabrizio.giudici@tidalwave.it



Friday, September 24, 2010
Agenda




  Efficient development of large NetBeans Platform applications with Maven   2
Friday, September 24, 2010
Agenda

       •       Introducing the NetBeans Platform




  Efficient development of large NetBeans Platform applications with Maven   2
Friday, September 24, 2010
Agenda

       •       Introducing the NetBeans Platform
       •       The NetBeans Platform Ant Build Harness




  Efficient development of large NetBeans Platform applications with Maven   2
Friday, September 24, 2010
Agenda

       •       Introducing the NetBeans Platform
       •       The NetBeans Platform Ant Build Harness
       •       Limitations of the NetBeans Platform Ant Build Harness




  Efficient development of large NetBeans Platform applications with Maven   2
Friday, September 24, 2010
Agenda

       •       Introducing the NetBeans Platform
       •       The NetBeans Platform Ant Build Harness
       •       Limitations of the NetBeans Platform Ant Build Harness
       •       Introducing Maven




  Efficient development of large NetBeans Platform applications with Maven   2
Friday, September 24, 2010
Agenda

       •       Introducing the NetBeans Platform
       •       The NetBeans Platform Ant Build Harness
       •       Limitations of the NetBeans Platform Ant Build Harness
       •       Introducing Maven
       •       The NetBeans Platform Maven Plugin




  Efficient development of large NetBeans Platform applications with Maven   2
Friday, September 24, 2010
Agenda

       •       Introducing the NetBeans Platform
       •       The NetBeans Platform Ant Build Harness
       •       Limitations of the NetBeans Platform Ant Build Harness
       •       Introducing Maven
       •       The NetBeans Platform Maven Plugin
       •       Optimizing NetBeans Platform Maven projects




  Efficient development of large NetBeans Platform applications with Maven   2
Friday, September 24, 2010
Agenda

       •       Introducing the NetBeans Platform
       •       The NetBeans Platform Ant Build Harness
       •       Limitations of the NetBeans Platform Ant Build Harness
       •       Introducing Maven
       •       The NetBeans Platform Maven Plugin
       •       Optimizing NetBeans Platform Maven projects
       •       Reuse of third parties’ libraries (NBPWR project, optional)


  Efficient development of large NetBeans Platform applications with Maven    2
Friday, September 24, 2010
Agenda

       •       Introducing the NetBeans Platform
       •       The NetBeans Platform Ant Build Harness
       •       Limitations of the NetBeans Platform Ant Build Harness
       •       Introducing Maven
       •       The NetBeans Platform Maven Plugin
       •       Optimizing NetBeans Platform Maven projects
       •       Reuse of third parties’ libraries (NBPWR project, optional)
       •       Conclusions

  Efficient development of large NetBeans Platform applications with Maven    2
Friday, September 24, 2010
About the speaker




  Efficient development of large NetBeans Platform applications with Maven   3
Friday, September 24, 2010
About the speaker

       •       Senior Software Architect, Mentor, Technical Writer
       •       Fourteen years of Java Experience (JSE, JEE, JME, etc...)
       •       Sun Consultant since 1998, Oracle consultant since 2010
       •       Author of a number of open source projects
       •       Speaker at JavaOne, Devoxx, Jazoon, JAX Italia and other events
       •       Member of the NetBeans Dream Team
       •       Co-leader of JUG Milano
       •       Java.Net blogger at http://www.java.net/blogs/fabriziogiudici

  Efficient development of large NetBeans Platform applications with Maven        3
Friday, September 24, 2010
Ant vs Maven?




  Efficient development of large NetBeans Platform applications with Maven   4
Friday, September 24, 2010
Ant vs Maven?

       •       What this presentation is not:




  Efficient development of large NetBeans Platform applications with Maven   4
Friday, September 24, 2010
Ant vs Maven?

       •       What this presentation is not:
             •       A “X is better than Y” sermon




  Efficient development of large NetBeans Platform applications with Maven   4
Friday, September 24, 2010
Ant vs Maven?

       •       What this presentation is not:
             •       A “X is better than Y” sermon

       •       What this presentation is:




  Efficient development of large NetBeans Platform applications with Maven   4
Friday, September 24, 2010
Ant vs Maven?

       •       What this presentation is not:
             •       A “X is better than Y” sermon

       •       What this presentation is:
             •       An analysis of scenarios where Maven may serve better than Ant
             •       An analysis of Maven-based NetBeans Platform projects




  Efficient development of large NetBeans Platform applications with Maven             4
Friday, September 24, 2010
Ant vs Maven?

       •       What this presentation is not:
             •       A “X is better than Y” sermon

       •       What this presentation is:
             •       An analysis of scenarios where Maven may serve better than Ant
             •       An analysis of Maven-based NetBeans Platform projects

       •       Some basics about the NetBeans Platform and Maven assumed




  Efficient development of large NetBeans Platform applications with Maven             4
Friday, September 24, 2010
Ant vs Maven?

       •       What this presentation is not:
             •       A “X is better than Y” sermon

       •       What this presentation is:
             •       An analysis of scenarios where Maven may serve better than Ant
             •       An analysis of Maven-based NetBeans Platform projects

       •       Some basics about the NetBeans Platform and Maven assumed
       •       Based on the speaker’s experience of four years with Ant &
               the Platform, then replaced by Maven

  Efficient development of large NetBeans Platform applications with Maven             4
Friday, September 24, 2010
Related talks at JavaOne 2010

       •       S314388: Maven 3.x: The Evolution of Enterprise Java Build
               Infrastructures
       •       S314711: Building Software with Rich Client Platforms
       •       S313667: Swing OSGi Modular Desktop Application Framework
       •       S314266: The Cutting Edge of Desktop Software: The
               NetBeans Platform in Practice
       •       S314141: Patterns for Modularity
       •       S313338 Getting More Out of Your Hudson

  Efficient development of large NetBeans Platform applications with Maven   5
Friday, September 24, 2010
The NetBeans Platform




  Efficient development of large NetBeans Platform applications with Maven   6
Friday, September 24, 2010
The NetBeans Platform


       •       The best framework for Swing desktop applications




  Efficient development of large NetBeans Platform applications with Maven   6
Friday, September 24, 2010
The NetBeans Platform


       •       The best framework for Swing desktop applications
       •       Provides “plumbing” for many common tasks




  Efficient development of large NetBeans Platform applications with Maven   6
Friday, September 24, 2010
The NetBeans Platform


       •       The best framework for Swing desktop applications
       •       Provides “plumbing” for many common tasks
       •       Modular, plugin-oriented, scalable




  Efficient development of large NetBeans Platform applications with Maven   6
Friday, September 24, 2010
The NetBeans Platform


       •       The best framework for Swing desktop applications
       •       Provides “plumbing” for many common tasks
       •       Modular, plugin-oriented, scalable
       •       Since 6.9 provides integration with the OSGi framework




  Efficient development of large NetBeans Platform applications with Maven   6
Friday, September 24, 2010
The NetBeans Platform


       •       The best framework for Swing desktop applications
       •       Provides “plumbing” for many common tasks
       •       Modular, plugin-oriented, scalable
       •       Since 6.9 provides integration with the OSGi framework
       •       Used also as the foundation of the Oracle NetBeans IDE




  Efficient development of large NetBeans Platform applications with Maven   6
Friday, September 24, 2010
The NetBeans Platform


       •       The best framework for Swing desktop applications
       •       Provides “plumbing” for many common tasks
       •       Modular, plugin-oriented, scalable
       •       Since 6.9 provides integration with the OSGi framework
       •       Used also as the foundation of the Oracle NetBeans IDE
       •       Very popular in all the industrial segments


  Efficient development of large NetBeans Platform applications with Maven   6
Friday, September 24, 2010
The NetBeans Platform
                  ... more success stories at
     http://netbeans.org/features/platform/showcase.html


       •       The best framework for Swing desktop applications
       •       Provides “plumbing” for many common tasks
       •       Modular, plugin-oriented, scalable
       •       Since 6.9 provides integration with the OSGi framework
       •       Used also as the foundation of the Oracle NetBeans IDE
       •       Very popular in all the industrial segments


  Efficient development of large NetBeans Platform applications with Maven   6
Friday, September 24, 2010
The Platform Ant Build Harness




  Efficient development of large NetBeans Platform applications with Maven   7
Friday, September 24, 2010
The Platform Ant Build Harness
       •       By default, the NetBeans Platform uses Ant




  Efficient development of large NetBeans Platform applications with Maven   7
Friday, September 24, 2010
The Platform Ant Build Harness
       •       By default, the NetBeans Platform uses Ant
             •       for building itself (together with the IDE)




  Efficient development of large NetBeans Platform applications with Maven   7
Friday, September 24, 2010
The Platform Ant Build Harness
       •       By default, the NetBeans Platform uses Ant
             •       for building itself (together with the IDE)
             •       for building Platform-based applications




  Efficient development of large NetBeans Platform applications with Maven   7
Friday, September 24, 2010
The Platform Ant Build Harness
       •       By default, the NetBeans Platform uses Ant
             •       for building itself (together with the IDE)
             •       for building Platform-based applications

       •       NetBeans Platform Ant Build Harness




  Efficient development of large NetBeans Platform applications with Maven   7
Friday, September 24, 2010
The Platform Ant Build Harness
       •       By default, the NetBeans Platform uses Ant
             •       for building itself (together with the IDE)
             •       for building Platform-based applications

       •       NetBeans Platform Ant Build Harness
             •       Set of standard Ant scripts, tasks and extensions




  Efficient development of large NetBeans Platform applications with Maven   7
Friday, September 24, 2010
The Platform Ant Build Harness
       •       By default, the NetBeans Platform uses Ant
             •       for building itself (together with the IDE)
             •       for building Platform-based applications

       •       NetBeans Platform Ant Build Harness
             •       Set of standard Ant scripts, tasks and extensions
             •       Can be used from the IDE or by the command line




  Efficient development of large NetBeans Platform applications with Maven   7
Friday, September 24, 2010
The Platform Ant Build Harness
       •       By default, the NetBeans Platform uses Ant
             •       for building itself (together with the IDE)
             •       for building Platform-based applications

       •       NetBeans Platform Ant Build Harness
             •       Set of standard Ant scripts, tasks and extensions
             •       Can be used from the IDE or by the command line
                   •         A minimum preliminary setup is required




  Efficient development of large NetBeans Platform applications with Maven   7
Friday, September 24, 2010
The Platform Ant Build Harness
       •       By default, the NetBeans Platform uses Ant
             •       for building itself (together with the IDE)
             •       for building Platform-based applications

       •       NetBeans Platform Ant Build Harness
             •       Set of standard Ant scripts, tasks and extensions
             •       Can be used from the IDE or by the command line
                   •         A minimum preliminary setup is required

             •       Very good starting point for beginners


  Efficient development of large NetBeans Platform applications with Maven   7
Friday, September 24, 2010
The Platform Ant Build Harness
       •       By default, the NetBeans Platform uses Ant
             •       for building itself (together with the IDE)
             •       for building Platform-based applications

       •       NetBeans Platform Ant Build Harness
             •       Set of standard Ant scripts, tasks and extensions
             •       Can be used from the IDE or by the command line
                   •         A minimum preliminary setup is required

             •       Very good starting point for beginners
             •       Many people use it even for complex applications

  Efficient development of large NetBeans Platform applications with Maven   7
Friday, September 24, 2010
Using the Ant Build Harness




  Efficient development of large NetBeans Platform applications with Maven   8
Friday, September 24, 2010
Using the Ant Build Harness


       •       Two ways of using the harness




  Efficient development of large NetBeans Platform applications with Maven   8
Friday, September 24, 2010
Using the Ant Build Harness


       •       Two ways of using the harness
       •       Supplied with the IDE and referred to by the project




  Efficient development of large NetBeans Platform applications with Maven   8
Friday, September 24, 2010
Using the Ant Build Harness


       •       Two ways of using the harness
       •       Supplied with the IDE and referred to by the project
             •       Needs a local environment setup to “point” to the IDE installation folder




  Efficient development of large NetBeans Platform applications with Maven                        8
Friday, September 24, 2010
Using the Ant Build Harness


       •       Two ways of using the harness
       •       Supplied with the IDE and referred to by the project
             •       Needs a local environment setup to “point” to the IDE installation folder

       •       Embedded with the project




  Efficient development of large NetBeans Platform applications with Maven                        8
Friday, September 24, 2010
Using the Ant Build Harness


       •       Two ways of using the harness
       •       Supplied with the IDE and referred to by the project
             •       Needs a local environment setup to “point” to the IDE installation folder

       •       Embedded with the project
             •       Possible clashes if the used Platform version is different than the
                     NetBeans IDE version




  Efficient development of large NetBeans Platform applications with Maven                        8
Friday, September 24, 2010
Using the Ant Build Harness


       •       Two ways of using the harness
       •       Supplied with the IDE and referred to by the project
             •       Needs a local environment setup to “point” to the IDE installation folder

       •       Embedded with the project
             •       Possible clashes if the used Platform version is different than the
                     NetBeans IDE version




  Efficient development of large NetBeans Platform applications with Maven                        8
Friday, September 24, 2010
Using the Ant Build Harness


       •       Two ways of using the harness
       •       Supplied with the IDE and referred to by the project
             •       Needs a local environment setup to “point” to the IDE installation folder

       •       Embedded with the project
             •       Possible clashes if the used Platform version is different than the
                     NetBeans IDE version
                             Key concept: the Ant build harness is
                       a specific build system for the Platform projects

  Efficient development of large NetBeans Platform applications with Maven                        8
Friday, September 24, 2010
When Ant might not scale




  Efficient development of large NetBeans Platform applications with Maven   9
Friday, September 24, 2010
When Ant might not scale

       •       With a large number of modules




  Efficient development of large NetBeans Platform applications with Maven   9
Friday, September 24, 2010
When Ant might not scale

       •       With a large number of modules
             •       Good design practices lead to many small packages




  Efficient development of large NetBeans Platform applications with Maven   9
Friday, September 24, 2010
When Ant might not scale

       •       With a large number of modules
             •       Good design practices lead to many small packages

       •       With multiple projects with many inter-dependencies




  Efficient development of large NetBeans Platform applications with Maven   9
Friday, September 24, 2010
When Ant might not scale

       •       With a large number of modules
             •       Good design practices lead to many small packages

       •       With multiple projects with many inter-dependencies
                                                                       In other words: how to reuse modules?




  Efficient development of large NetBeans Platform applications with Maven                                  9
Friday, September 24, 2010
When Ant might not scale

       •       With a large number of modules
             •       Good design practices lead to many small packages

       •       With multiple projects with many inter-dependencies
                                                                       In other words: how to reuse modules?
             •       Might be a single project that’s worth while splitting




  Efficient development of large NetBeans Platform applications with Maven                                  9
Friday, September 24, 2010
When Ant might not scale

       •       With a large number of modules
             •       Good design practices lead to many small packages

       •       With multiple projects with many inter-dependencies
                                                                       In other words: how to reuse modules?
             •       Might be a single project that’s worth while splitting

       •       What’s a module of the NetBeans Platform, BTW?




  Efficient development of large NetBeans Platform applications with Maven                                  9
Friday, September 24, 2010
When Ant might not scale

       •       With a large number of modules
             •       Good design practices lead to many small packages

       •       With multiple projects with many inter-dependencies
                                                                       In other words: how to reuse modules?
             •       Might be a single project that’s worth while splitting

       •       What’s a module of the NetBeans Platform, BTW?
             •       A collection of cohese packages exposing an API




  Efficient development of large NetBeans Platform applications with Maven                                  9
Friday, September 24, 2010
When Ant might not scale

       •       With a large number of modules
             •       Good design practices lead to many small packages

       •       With multiple projects with many inter-dependencies
                                                                       In other words: how to reuse modules?
             •       Might be a single project that’s worth while splitting

       •       What’s a module of the NetBeans Platform, BTW?
             •       A collection of cohese packages exposing an API
             •       Packed in .nbm files (.jar + metadata)


  Efficient development of large NetBeans Platform applications with Maven                                  9
Friday, September 24, 2010
When Ant might not scale
                             Only a subset of dependencies shown



                                                                            OpenBlueSky



       •       With a large number blueMarine
                          blueMarine
                                     of modules
                                              blueMarine                                             blueMarine
                                               Metadata            Semantic                Media        PDF

             •       Good design practices lead to many small packages
                                              blueMarine           blueMarine         blueMarine     blueMarine

       •
                                                 Core                Catalog            Gallery      LightTable
               With multiple projects with many inter-dependencies
                                                                                      In other words: how to reuse modules?
                                                                                          forceTen
             •       Might be a single project that’s worth while splitting
                                           blueMarine
                                                                      Geo


       •       What’s a module of the NetBeans Platform, BTW?
                                                                   blueMarine

             •       A collection of cohese packages exposing an API
             •       Packed in .nbm files (.jar + metadata) for
                            blueOcean blueBill Server
                                                       blueBill
                                                        Android




  Efficient development of large NetBeans Platform applications with Maven                                                 9
Friday, September 24, 2010
When Ant might not scale

       •       With a large number of modules
             •       Good design practices lead to many small packages

       •       With multiple projects with many inter-dependencies
                                                                       In other words: how to reuse modules?
             •       Might be a single project that’s worth while splitting

       •       What’s a module of the NetBeans Platform, BTW?
             •       A collection of cohese packages exposing an API
             •       Packed in .nbm files (.jar + metadata)


  Efficient development of large NetBeans Platform applications with Maven                                  9
Friday, September 24, 2010
Pushing the Ant Build: Suite Chaining




                                                                            Slide in a graph showing a
                                                                            dependency graph: Suite
                                                                            --> Platform




  Efficient development of large NetBeans Platform applications with Maven                                10
Friday, September 24, 2010
Pushing the Ant Build: Suite Chaining

       •       Platform: a self-contained set of .nbm modules




                                                                            Slide in a graph showing a
                                                                            dependency graph: Suite
                                                                            --> Platform




  Efficient development of large NetBeans Platform applications with Maven                                10
Friday, September 24, 2010
Pushing the Ant Build: Suite Chaining

       •       Platform: a self-contained set of .nbm modules
             •       The NetBeans Platform is obviously one example of a platform




                                                                            Slide in a graph showing a
                                                                            dependency graph: Suite
                                                                            --> Platform




  Efficient development of large NetBeans Platform applications with Maven                                10
Friday, September 24, 2010
Pushing the Ant Build: Suite Chaining

       •       Platform: a self-contained set of .nbm modules
             •       The NetBeans Platform is obviously one example of a platform

       •       Module Suite: a set of .nbm modules depending on a Platform



                                                                            Slide in a graph showing a
                                                                            dependency graph: Suite
                                                                            --> Platform




  Efficient development of large NetBeans Platform applications with Maven                                10
Friday, September 24, 2010
Pushing the Ant Build: Suite Chaining

       •       Platform: a self-contained set of .nbm modules
             •       The NetBeans Platform is obviously one example of a platform

       •       Module Suite: a set of .nbm modules depending on a Platform
             •       Any NetBeans Platform-based project is a suite


                                                                            Slide in a graph showing a
                                                                            dependency graph: Suite
                                                                            --> Platform




  Efficient development of large NetBeans Platform applications with Maven                                10
Friday, September 24, 2010
Pushing the Ant Build: Suite Chaining

       •       Platform: a self-contained set of .nbm modules
             •       The NetBeans Platform is obviously one example of a platform

       •       Module Suite: a set of .nbm modules depending on a Platform
             •       Any NetBeans Platform-based project is a suite

       •       It is possible to have a Suite depending on a Platform +
               another Suite (“Suite Chaining”)                   Slide in a graph showing a
                                                                  dependency graph: Suite
                                                                             --> Platform




  Efficient development of large NetBeans Platform applications with Maven                      10
Friday, September 24, 2010
Pushing the Ant Build: Suite Chaining

       •       Platform: a self-contained set of .nbm modules
             •       The NetBeans Platform is obviously one example of a platform

       •       Module Suite: a set of .nbm modules depending on a Platform
             •       Any NetBeans Platform-based project is a suite

       •       It is possible to have a Suite depending on a Platform +
               another Suite (“Suite Chaining”)                   Slide in a graph showing a
                                                                  dependency graph: Suite
                                                                             --> Platform
             •       Doable, but cumbersome



  Efficient development of large NetBeans Platform applications with Maven                      10
Friday, September 24, 2010
Pushing the Ant Build: Suite Chaining

       •       Platform: a self-contained set of .nbm modules
             •       The NetBeans Platform is obviously one example of a platform

       •       Module Suite: a set of .nbm modules depending on a Platform
             •       Any NetBeans Platform-based project is a suite

       •       It is possible to have a Suite depending on a Platform +
               another Suite (“Suite Chaining”)                   Slide in a graph showing a
                                                                  dependency graph: Suite
                                                                             --> Platform
             •       Doable, but cumbersome
             •       Doesn’t scale well with multiple suite levels


  Efficient development of large NetBeans Platform applications with Maven                      10
Friday, September 24, 2010
Reusing modules with the Ant build harness




  Efficient development of large NetBeans Platform applications with Maven   11
Friday, September 24, 2010
Reusing modules with the Ant build harness

       •       It’s possible to create a custom platform, assembling
               arbitrary .nbm modules




  Efficient development of large NetBeans Platform applications with Maven   11
Friday, September 24, 2010
Reusing modules with the Ant build harness

       •       It’s possible to create a custom platform, assembling
               arbitrary .nbm modules
             •       Of course, dependencies must be satisfied




  Efficient development of large NetBeans Platform applications with Maven   11
Friday, September 24, 2010
Reusing modules with the Ant build harness

       •       It’s possible to create a custom platform, assembling
               arbitrary .nbm modules
             •       Of course, dependencies must be satisfied

       •       You can assemble a Platform feeding the .nbm artifacts from a
               project to another project




  Efficient development of large NetBeans Platform applications with Maven   11
Friday, September 24, 2010
Reusing modules with the Ant build harness

       •       It’s possible to create a custom platform, assembling
               arbitrary .nbm modules
             •       Of course, dependencies must be satisfied

       •       You can assemble a Platform feeding the .nbm artifacts from a
               project to another project
       •       This approach (apparently) scales well beyond the first level




  Efficient development of large NetBeans Platform applications with Maven     11
Friday, September 24, 2010
Reusing modules with the Ant build harness

       •       It’s possible to create a custom platform, assembling
               arbitrary .nbm modules
             •       Of course, dependencies must be satisfied

       •       You can assemble a Platform feeding the .nbm artifacts from a
               project to another project
       •       This approach (apparently) scales well beyond the first level
             •       http://weblogs.java.net/blog/2007/11/03/netbeans-rcp-beyond-suite-chaining




  Efficient development of large NetBeans Platform applications with Maven                    11
Friday, September 24, 2010
Reusing modules with the Ant build harness

       •       It’s possible to create a custom platform, assembling
               arbitrary .nbm modules
             •       Of course, dependencies must be satisfied

       •       You can assemble a Platform feeding the .nbm artifacts from a
               project to another project
       •       This approach (apparently) scales well beyond the first level
             •       http://weblogs.java.net/blog/2007/11/03/netbeans-rcp-beyond-suite-chaining

       •       NetBeans 6.7 introduced support for reusing modules


  Efficient development of large NetBeans Platform applications with Maven                    11
Friday, September 24, 2010
Reusing modules with the Ant build harness

       •       It’s possible to create a custom platform, assembling
               arbitrary .nbm modules
             •       Of course, dependencies must be satisfied

       •       You can assemble a Platform feeding the .nbm artifacts from a
               project to another project
       •       This approach (apparently) scales well beyond the first level
             •       http://weblogs.java.net/blog/2007/11/03/netbeans-rcp-beyond-suite-chaining

       •       NetBeans 6.7 introduced support for reusing modules
             •       http://wiki.netbeans.org/DevFaqHowToReuseModules

  Efficient development of large NetBeans Platform applications with Maven                    11
Friday, September 24, 2010
Reusing modules with the Ant build harness

       •       It’s possible to create a custom platform, assembling
               arbitrary .nbm modules
             •       Of course, dependencies must be satisfied

       •       You can assemble a Platform feeding the .nbm artifacts from a
               project to another project
       •       This approach (apparently) scales well beyond the first level
             •       http://weblogs.java.net/blog/2007/11/03/netbeans-rcp-beyond-suite-chaining

       •       NetBeans 6.7 introduced support for reusing modules
             •       http://wiki.netbeans.org/DevFaqHowToReuseModules

  Efficient development of large NetBeans Platform applications with Maven                    11
Friday, September 24, 2010
Reusing modules with the Ant build harness

       •       It’s possible to create a custom platform, assembling
               arbitrary .nbm modules
             •       Of course, dependencies must be satisfied

       •       You can assemble a Platform feeding the .nbm artifacts from a
               project to another project
       •       This approach (apparently) scales well beyond the first level
             •       http://weblogs.java.net/blog/2007/11/03/netbeans-rcp-beyond-suite-chaining

       •       NetBeans 6.7 introduced support for reusing modules
             •       http://wiki.netbeans.org/DevFaqHowToReuseModules

  Efficient development of large NetBeans Platform applications with Maven                    11
Friday, September 24, 2010
Limits of Custom Platforms with Ant




  Efficient development of large NetBeans Platform applications with Maven   12
Friday, September 24, 2010
Limits of Custom Platforms with Ant
       •       Conceptually simple, the cumbersome part is automating the
               “feed” of NBM artifacts from a project to another




  Efficient development of large NetBeans Platform applications with Maven   12
Friday, September 24, 2010
Limits of Custom Platforms with Ant
       •       Conceptually simple, the cumbersome part is automating the
               “feed” of NBM artifacts from a project to another
       •       Personal experience




  Efficient development of large NetBeans Platform applications with Maven   12
Friday, September 24, 2010
Limits of Custom Platforms with Ant
       •       Conceptually simple, the cumbersome part is automating the
               “feed” of NBM artifacts from a project to another
       •       Personal experience
             •       Wrote a couple of custom Ant tasks to enhance the original
                     harness with artifact management facilities




  Efficient development of large NetBeans Platform applications with Maven         12
Friday, September 24, 2010
Limits of Custom Platforms with Ant
       •       Conceptually simple, the cumbersome part is automating the
               “feed” of NBM artifacts from a project to another
       •       Personal experience
             •       Wrote a couple of custom Ant tasks to enhance the original
                     harness with artifact management facilities
             •       Reached some high complexity when trying to share javadocs and
                     sources too




  Efficient development of large NetBeans Platform applications with Maven         12
Friday, September 24, 2010
Limits of Custom Platforms with Ant
       •       Conceptually simple, the cumbersome part is automating the
               “feed” of NBM artifacts from a project to another
       •       Personal experience
             •       Wrote a couple of custom Ant tasks to enhance the original
                     harness with artifact management facilities
             •       Reached some high complexity when trying to share javadocs and
                     sources too
                   •         Sources in particular are important, e.g. for profiling etc...




  Efficient development of large NetBeans Platform applications with Maven                    12
Friday, September 24, 2010
Limits of Custom Platforms with Ant
       •       Conceptually simple, the cumbersome part is automating the
               “feed” of NBM artifacts from a project to another
       •       Personal experience
             •       Wrote a couple of custom Ant tasks to enhance the original
                     harness with artifact management facilities
             •       Reached some high complexity when trying to share javadocs and
                     sources too
                   •         Sources in particular are important, e.g. for profiling etc...

             •       At this point I moved to Maven...



  Efficient development of large NetBeans Platform applications with Maven                    12
Friday, September 24, 2010
Limits of Custom Platforms with Ant
       •       Conceptually simple, the cumbersome part is automating the
               “feed” of NBM artifacts from a project to another
       •       Personal experience
             •       Wrote a couple of custom Ant tasks to enhance the original
                     harness with artifact management facilities
             •       Reached some high complexity when trying to share javadocs and
                     sources too
                   •         Sources in particular are important, e.g. for profiling etc...

             •       At this point I moved to Maven...

       •       I’m recommending to customers - of course your mileage may vary
  Efficient development of large NetBeans Platform applications with Maven                    12
Friday, September 24, 2010
Introducing Maven




  Efficient development of large NetBeans Platform applications with Maven   13
Friday, September 24, 2010
Introducing Maven

       •       A different building tool than Ant




  Efficient development of large NetBeans Platform applications with Maven   13
Friday, September 24, 2010
Introducing Maven

       •       A different building tool than Ant
       •       Standard lifecycle (= sequence of phases) applied to projects




  Efficient development of large NetBeans Platform applications with Maven      13
Friday, September 24, 2010
Introducing Maven

       •       A different building tool than Ant
       •       Standard lifecycle (= sequence of phases) applied to projects
       •       Projects are described by a POM (Project Object Model)




  Efficient development of large NetBeans Platform applications with Maven      13
Friday, September 24, 2010
Introducing Maven

       •       A different building tool than Ant
       •       Standard lifecycle (= sequence of phases) applied to projects
       •       Projects are described by a POM (Project Object Model)
       •       Composed of plugins attaching goals to phases




  Efficient development of large NetBeans Platform applications with Maven      13
Friday, September 24, 2010
Introducing Maven

       •       A different building tool than Ant
       •       Standard lifecycle (= sequence of phases) applied to projects
       •       Projects are described by a POM (Project Object Model)
       •       Composed of plugins attaching goals to phases
       •       Provides efficient artifact management with repositories




  Efficient development of large NetBeans Platform applications with Maven      13
Friday, September 24, 2010
Introducing Maven

       •       A different building tool than Ant
       •       Standard lifecycle (= sequence of phases) applied to projects
       •       Projects are described by a POM (Project Object Model)
       •       Composed of plugins attaching goals to phases
       •       Provides efficient artifact management with repositories
             •       more info later




  Efficient development of large NetBeans Platform applications with Maven      13
Friday, September 24, 2010
Introducing Maven

       •       A different building tool than Ant
       •       Standard lifecycle (= sequence of phases) applied to projects
       •       Projects are described by a POM (Project Object Model)
       •       Composed of plugins attaching goals to phases
       •       Provides efficient artifact management with repositories
             •       more info later
                  Ant: interpreter
                  to create build scripts



  Efficient development of large NetBeans Platform applications with Maven      13
Friday, September 24, 2010
Introducing Maven

       •       A different building tool than Ant
       •       Standard lifecycle (= sequence of phases) applied to projects
       •       Projects are described by a POM (Project Object Model)
       •       Composed of plugins attaching goals to phases
       •       Provides efficient artifact management with repositories
             •       more info later
                  Ant: interpreter                              Maven: standard, well defined
                  to create build scripts                       build system that can be customized



  Efficient development of large NetBeans Platform applications with Maven                             13
Friday, September 24, 2010
Introducing Maven

       •       A different building tool than Ant
       •       Standard lifecycle (= sequence of phases) applied to projects
       •       Projects are described by a POM (Project Object Model)
       •       Composed of plugins attaching goals to phases
       •       Provides efficient artifact management with repositories
             •       more info later
                  Ant: interpreter                              Maven: standard, well defined
                  to create build scripts                       build system that can be customized

                  Programmatic
  Efficient development of large NetBeans Platform applications with Maven                             13
Friday, September 24, 2010
Introducing Maven

       •       A different building tool than Ant
       •       Standard lifecycle (= sequence of phases) applied to projects
       •       Projects are described by a POM (Project Object Model)
       •       Composed of plugins attaching goals to phases
       •       Provides efficient artifact management with repositories
             •       more info later
                  Ant: interpreter                              Maven: standard, well defined
                  to create build scripts                       build system that can be customized

                  Programmatic                                  Declarative
  Efficient development of large NetBeans Platform applications with Maven                             13
Friday, September 24, 2010
Inheritance and composition




  Efficient development of large NetBeans Platform applications with Maven   14
Friday, September 24, 2010
Inheritance and composition

       •       “Object model” means it implies some typical OO practices




  Efficient development of large NetBeans Platform applications with Maven   14
Friday, September 24, 2010
Inheritance and composition

       •       “Object model” means it implies some typical OO practices
       •       Inheritance




  Efficient development of large NetBeans Platform applications with Maven   14
Friday, September 24, 2010
Inheritance and composition

       •       “Object model” means it implies some typical OO practices
       •       Inheritance
             •       A module POM can inherit from a parent POM




  Efficient development of large NetBeans Platform applications with Maven   14
Friday, September 24, 2010
Inheritance and composition

       •       “Object model” means it implies some typical OO practices
       •       Inheritance
             •       A module POM can inherit from a parent POM

       •       Composition




  Efficient development of large NetBeans Platform applications with Maven   14
Friday, September 24, 2010
Inheritance and composition

       •       “Object model” means it implies some typical OO practices
       •       Inheritance
             •       A module POM can inherit from a parent POM

       •       Composition
             •       A module POM can import parts of other modules POM




  Efficient development of large NetBeans Platform applications with Maven   14
Friday, September 24, 2010
Inheritance and composition

       •       “Object model” means it implies some typical OO practices
       •       Inheritance
             •       A module POM can inherit from a parent POM

       •       Composition
             •       A module POM can import parts of other modules POM

       •       Both practices reduces entropy (DRY)




  Efficient development of large NetBeans Platform applications with Maven   14
Friday, September 24, 2010
Inheritance and composition

       •       “Object model” means it implies some typical OO practices
       •       Inheritance
             •       A module POM can inherit from a parent POM

       •       Composition
             •       A module POM can import parts of other modules POM

       •       Both practices reduces entropy (DRY)
             •       Still verbose because of XML (but it’s syntax, not semantics)



  Efficient development of large NetBeans Platform applications with Maven            14
Friday, September 24, 2010
Inheritance and composition

       •       “Object model” means it implies some typical OO practices
       •       Inheritance
             •       A module POM can inherit from a parent POM

       •       Composition
             •       A module POM can import parts of other modules POM

       •       Both practices reduces entropy (DRY)
             •       Still verbose because of XML (but it’s syntax, not semantics)
             •       Maven 3 allows for more compact syntaxes (e.g. Groovy)

  Efficient development of large NetBeans Platform applications with Maven            14
Friday, September 24, 2010
Artifacts, dependencies, repositories




  Efficient development of large NetBeans Platform applications with Maven   15
Friday, September 24, 2010
Artifacts, dependencies, repositories

       •       Each module




  Efficient development of large NetBeans Platform applications with Maven   15
Friday, September 24, 2010
Artifacts, dependencies, repositories

       •       Each module
             •       Possibly depends on other modules artifacts




  Efficient development of large NetBeans Platform applications with Maven   15
Friday, September 24, 2010
Artifacts, dependencies, repositories

       •       Each module
             •       Possibly depends on other modules artifacts
             •       Produces a single artifact (which might consist in multiple files)




  Efficient development of large NetBeans Platform applications with Maven                15
Friday, September 24, 2010
Artifacts, dependencies, repositories

       •       Each module
             •       Possibly depends on other modules artifacts
             •       Produces a single artifact (which might consist in multiple files)

       •       Each artifact




  Efficient development of large NetBeans Platform applications with Maven                15
Friday, September 24, 2010
Artifacts, dependencies, repositories

       •       Each module
             •       Possibly depends on other modules artifacts
             •       Produces a single artifact (which might consist in multiple files)

       •       Each artifact
             •       Has got unique coordinates: groupId, artifactId, version, packaging, classifier




  Efficient development of large NetBeans Platform applications with Maven                              15
Friday, September 24, 2010
Artifacts, dependencies, repositories

       •       Each module
             •       Possibly depends on other modules artifacts
             •       Produces a single artifact (which might consist in multiple files)

       •       Each artifact
             •       Has got unique coordinates: groupId, artifactId, version, packaging, classifier
             •       Can be retrieved from a local / remote repository




  Efficient development of large NetBeans Platform applications with Maven                              15
Friday, September 24, 2010
Artifacts, dependencies, repositories

       •       Each module
             •       Possibly depends on other modules artifacts
             •       Produces a single artifact (which might consist in multiple files)

       •       Each artifact
             •       Has got unique coordinates: groupId, artifactId, version, packaging, classifier
             •       Can be retrieved from a local / remote repository
             •       Can be published to a local / remote repository


  Efficient development of large NetBeans Platform applications with Maven                              15
Friday, September 24, 2010
The NBM Maven Plugin




  Efficient development of large NetBeans Platform applications with Maven   16
Friday, September 24, 2010
The NBM Maven Plugin

       •       A specific Maven plugin for the NetBeans Platform




  Efficient development of large NetBeans Platform applications with Maven   16
Friday, September 24, 2010
The NBM Maven Plugin

       •       A specific Maven plugin for the NetBeans Platform
             •       Defines the ‘nbm’ packaging




  Efficient development of large NetBeans Platform applications with Maven   16
Friday, September 24, 2010
The NBM Maven Plugin

       •       A specific Maven plugin for the NetBeans Platform
             •       Defines the ‘nbm’ packaging
             •       Creates nbm artifacts




  Efficient development of large NetBeans Platform applications with Maven   16
Friday, September 24, 2010
The NBM Maven Plugin

       •       A specific Maven plugin for the NetBeans Platform
             •       Defines the ‘nbm’ packaging
             •       Creates nbm artifacts
             •       Manages branding




  Efficient development of large NetBeans Platform applications with Maven   16
Friday, September 24, 2010
The NBM Maven Plugin

       •       A specific Maven plugin for the NetBeans Platform
             •       Defines the ‘nbm’ packaging
             •       Creates nbm artifacts
             •       Manages branding
             •       Creates .zip and JNLP distributions




  Efficient development of large NetBeans Platform applications with Maven   16
Friday, September 24, 2010
The NBM Maven Plugin

       •       A specific Maven plugin for the NetBeans Platform
             •       Defines the ‘nbm’ packaging
             •       Creates nbm artifacts
             •       Manages branding
             •       Creates .zip and JNLP distributions
             •       Properly runs the project being developed




  Efficient development of large NetBeans Platform applications with Maven   16
Friday, September 24, 2010
The NBM Maven Plugin

       •       A specific Maven plugin for the NetBeans Platform
             •       Defines the ‘nbm’ packaging
             •       Creates nbm artifacts
             •       Manages branding
             •       Creates .zip and JNLP distributions
             •       Properly runs the project being developed

       •       Out-of-the-box support by the IDE, better integration with 6.9


  Efficient development of large NetBeans Platform applications with Maven   16
Friday, September 24, 2010
Further benefits                     If you have time, demonstrate e.g. FindBugs integration.
                                                                            In any case, connect to the Tidalwave Hudson instance
                                                                            and show some stuff




  Efficient development of large NetBeans Platform applications with Maven                                                              17
Friday, September 24, 2010
Further benefits                     If you have time, demonstrate e.g. FindBugs integration.
                                                                            In any case, connect to the Tidalwave Hudson instance
                                                                            and show some stuff




       •       Your project becomes just a standard Maven project




  Efficient development of large NetBeans Platform applications with Maven                                                              17
Friday, September 24, 2010
Further benefits                     If you have time, demonstrate e.g. FindBugs integration.
                                                                            In any case, connect to the Tidalwave Hudson instance
                                                                            and show some stuff

                                                    No more NetBeans specific “build harness”

       •       Your project becomes just a standard Maven project




  Efficient development of large NetBeans Platform applications with Maven                                                              17
Friday, September 24, 2010
Further benefits                     If you have time, demonstrate e.g. FindBugs integration.
                                                                            In any case, connect to the Tidalwave Hudson instance
                                                                            and show some stuff

                                                    No more NetBeans specific “build harness”

       •       Your project becomes just a standard Maven project
       •       No special build instructions: mvn clean install




  Efficient development of large NetBeans Platform applications with Maven                                                              17
Friday, September 24, 2010
Further benefits                     If you have time, demonstrate e.g. FindBugs integration.
                                                                            In any case, connect to the Tidalwave Hudson instance
                                                                            and show some stuff

                                                    No more NetBeans specific “build harness”

       •       Your project becomes just a standard Maven project
       •       No special build instructions: mvn clean install
       •       IDE - neutral (IDEA, Eclipse)




  Efficient development of large NetBeans Platform applications with Maven                                                              17
Friday, September 24, 2010
Further benefits                     If you have time, demonstrate e.g. FindBugs integration.
                                                                            In any case, connect to the Tidalwave Hudson instance
                                                                            and show some stuff

                                                    No more NetBeans specific “build harness”

       •       Your project becomes just a standard Maven project
       •       No special build instructions: mvn clean install
       •       IDE - neutral (IDEA, Eclipse)
       •       Immediately available for CI without any specific setup




  Efficient development of large NetBeans Platform applications with Maven                                                              17
Friday, September 24, 2010
Further benefits                     If you have time, demonstrate e.g. FindBugs integration.
                                                                            In any case, connect to the Tidalwave Hudson instance
                                                                            and show some stuff

                                                    No more NetBeans specific “build harness”

       •       Your project becomes just a standard Maven project
       •       No special build instructions: mvn clean install
       •       IDE - neutral (IDEA, Eclipse)
       •       Immediately available for CI without any specific setup
       •       Easy to augment with QA plugins (e.g. Cobertura, FindBugs)




  Efficient development of large NetBeans Platform applications with Maven                                                              17
Friday, September 24, 2010
Further benefits                     If you have time, demonstrate e.g. FindBugs integration.
                                                                            In any case, connect to the Tidalwave Hudson instance
                                                                            and show some stuff

                                                    No more NetBeans specific “build harness”

       •       Your project becomes just a standard Maven project
       •       No special build instructions: mvn clean install
       •       IDE - neutral (IDEA, Eclipse)
       •       Immediately available for CI without any specific setup
       •       Easy to augment with QA plugins (e.g. Cobertura, FindBugs)
             •       Just configure the plugin in the Master POM




  Efficient development of large NetBeans Platform applications with Maven                                                              17
Friday, September 24, 2010
Further benefits                     If you have time, demonstrate e.g. FindBugs integration.
                                                                            In any case, connect to the Tidalwave Hudson instance
                                                                            and show some stuff

                                                    No more NetBeans specific “build harness”

       •       Your project becomes just a standard Maven project
       •       No special build instructions: mvn clean install
       •       IDE - neutral (IDEA, Eclipse)
       •       Immediately available for CI without any specific setup
       •       Easy to augment with QA plugins (e.g. Cobertura, FindBugs)
             •       Just configure the plugin in the Master POM

             •       Run it (e.g. mvn findbugs:findbugs)


  Efficient development of large NetBeans Platform applications with Maven                                                              17
Friday, September 24, 2010
Project structure




  Efficient development of large NetBeans Platform applications with Maven   18
Friday, September 24, 2010
Project structure

       •       Modules                                                      Master POM


             •       Master POM
             •       Application module                                             1      Branding
                                                                                          Module POM


                   •         What and how to assemble as final app
                                                                                    1
             •       Branding module                                                       Application
                                                                                          Module POM


                   •         e.g. i18n resources, customization of
                             existing platform resources                            *
                                                                                         Other NBM POM

             •       One or more .nbm modules


  Efficient development of large NetBeans Platform applications with Maven                                18
Friday, September 24, 2010
Demo




  Efficient development of large NetBeans Platform applications with Maven   19
Friday, September 24, 2010
Demo




       •       Show forceTen Example 1




  Efficient development of large NetBeans Platform applications with Maven   19
Friday, September 24, 2010
Dependency caveat!




  Efficient development of large NetBeans Platform applications with Maven   20
Friday, September 24, 2010
Dependency caveat!
       •       Maven dependencies are transitive




  Efficient development of large NetBeans Platform applications with Maven   20
Friday, September 24, 2010
Dependency caveat!
       •       Maven dependencies are transitive
       •       NetBeans Platform dependencies are not transitive




  Efficient development of large NetBeans Platform applications with Maven   20
Friday, September 24, 2010
Dependency caveat!
       •       Maven dependencies are transitive
       •       NetBeans Platform dependencies are not transitive
       •        The Maven plugin:




  Efficient development of large NetBeans Platform applications with Maven   20
Friday, September 24, 2010
Dependency caveat!
       •       Maven dependencies are transitive
       •       NetBeans Platform dependencies are not transitive
       •         The Maven plugin:
             •       automatically translates direct Maven dependencies on NBM
                     modules to Platform dependencies




  Efficient development of large NetBeans Platform applications with Maven        20
Friday, September 24, 2010
Dependency caveat!
       •       Maven dependencies are transitive
       •       NetBeans Platform dependencies are not transitive
       •         The Maven plugin:
             •       automatically translates direct Maven dependencies on NBM
                     modules to Platform dependencies
             •       performs a consistency check about missing transitive
                     dependencies and dependencies on non-public classes




  Efficient development of large NetBeans Platform applications with Maven        20
Friday, September 24, 2010
Dependency caveat!
       •       Maven dependencies are transitive
       •       NetBeans Platform dependencies are not transitive
       •         The Maven plugin:
             •       automatically translates direct Maven dependencies on NBM
                     modules to Platform dependencies
             •       performs a consistency check about missing transitive
                     dependencies and dependencies on non-public classes

       •       OSGi bundles allowed as dependencies since IDE 6.9 + NBM plugin 3.2



  Efficient development of large NetBeans Platform applications with Maven        20
Friday, September 24, 2010
Dependency caveat!
       •       Maven dependencies are transitive
       •       NetBeans Platform dependencies are not transitive
       •         The Maven plugin:
             •       automatically translates direct Maven dependencies on NBM
                     modules to Platform dependencies
             •       performs a consistency check about missing transitive
                     dependencies and dependencies on non-public classes

       •       OSGi bundles allowed as dependencies since IDE 6.9 + NBM plugin 3.2
       •       Old versions of the plugin behaved in a different way


  Efficient development of large NetBeans Platform applications with Maven        20
Friday, September 24, 2010
Dependency caveat!
       •       Maven dependencies are transitive
       •       NetBeans Platform dependencies are not transitive
       •         The Maven plugin:
             •       automatically translates direct Maven dependencies on NBM
                     modules to Platform dependencies
             •       performs a consistency check about missing transitive
                     dependencies and dependencies on non-public classes

       •       OSGi bundles allowed as dependencies since IDE 6.9 + NBM plugin 3.2
       •       Old versions of the plugin behaved in a different way
             •       Not mentioning some deprecated practices still available in 3.x
  Efficient development of large NetBeans Platform applications with Maven              20
Friday, September 24, 2010
Reuse of NBM modules in non-platform projects




  Efficient development of large NetBeans Platform applications with Maven   21
Friday, September 24, 2010
Reuse of NBM modules in non-platform projects

       •       The NBM Maven plugin produces both a .nbm and a .jar
               artifacts (different packagings)




  Efficient development of large NetBeans Platform applications with Maven   21
Friday, September 24, 2010
Reuse of NBM modules in non-platform projects

       •       The NBM Maven plugin produces both a .nbm and a .jar
               artifacts (different packagings)
       •       This means that a non-platform project can reuse a NBM
               module




  Efficient development of large NetBeans Platform applications with Maven   21
Friday, September 24, 2010
Reuse of NBM modules in non-platform projects

       •       The NBM Maven plugin produces both a .nbm and a .jar
               artifacts (different packagings)
       •       This means that a non-platform project can reuse a NBM
               module
             •       E.g. Java SE, Android, etc...




  Efficient development of large NetBeans Platform applications with Maven   21
Friday, September 24, 2010
Reuse of NBM modules in non-platform projects

       •       The NBM Maven plugin produces both a .nbm and a .jar
               artifacts (different packagings)
       •       This means that a non-platform project can reuse a NBM
               module
             •       E.g. Java SE, Android, etc...

       •       Just declare a dependency as usual




  Efficient development of large NetBeans Platform applications with Maven   21
Friday, September 24, 2010
Reuse of NBM modules in non-platform projects

       •       The NBM Maven plugin produces both a .nbm and a .jar
               artifacts (different packagings)
       •       This means that a non-platform project can reuse a NBM
               module
             •       E.g. Java SE, Android, etc...

       •       Just declare a dependency as usual
             •       Projects whose packaging is nbm automatically depend on nbm artifacts




  Efficient development of large NetBeans Platform applications with Maven               21
Friday, September 24, 2010
Reuse of NBM modules in non-platform projects

       •       The NBM Maven plugin produces both a .nbm and a .jar
               artifacts (different packagings)
       •       This means that a non-platform project can reuse a NBM
               module
             •       E.g. Java SE, Android, etc...

       •       Just declare a dependency as usual
             •       Projects whose packaging is nbm automatically depend on nbm artifacts
             •       Projects whose packaging is jar automatically depend on jar artifacts


  Efficient development of large NetBeans Platform applications with Maven                    21
Friday, September 24, 2010
Demo




       •       Show forceTen Example 2




  Efficient development of large NetBeans Platform applications with Maven   22
Friday, September 24, 2010
Module versioning strategies




  Efficient development of large NetBeans Platform applications with Maven   23
Friday, September 24, 2010
Module versioning strategies

       •       Every module artifact shares the same version of the project




  Efficient development of large NetBeans Platform applications with Maven     23
Friday, September 24, 2010
Module versioning strategies

       •       Every module artifact shares the same version of the project
             •       Simpler to manage




  Efficient development of large NetBeans Platform applications with Maven     23
Friday, September 24, 2010
Module versioning strategies

       •       Every module artifact shares the same version of the project
             •       Simpler to manage
             •       Used by NetBeans for publishing Maven artifacts (e.g.
                     NETBEANS691)




  Efficient development of large NetBeans Platform applications with Maven     23
Friday, September 24, 2010
Module versioning strategies

       •       Every module artifact shares the same version of the project
             •       Simpler to manage
             •       Used by NetBeans for publishing Maven artifacts (e.g.
                     NETBEANS691)
                   •         Trick - indeed every NetBeans module has got its own version




  Efficient development of large NetBeans Platform applications with Maven                   23
Friday, September 24, 2010
Module versioning strategies

       •       Every module artifact shares the same version of the project
             •       Simpler to manage
             •       Used by NetBeans for publishing Maven artifacts (e.g.
                     NETBEANS691)
                   •         Trick - indeed every NetBeans module has got its own version

       •       Every module artifact has got its own version number




  Efficient development of large NetBeans Platform applications with Maven                   23
Friday, September 24, 2010
Module versioning strategies

       •       Every module artifact shares the same version of the project
             •       Simpler to manage
             •       Used by NetBeans for publishing Maven artifacts (e.g.
                     NETBEANS691)
                   •         Trick - indeed every NetBeans module has got its own version

       •       Every module artifact has got its own version number
             •       Slightly more complex to manage




  Efficient development of large NetBeans Platform applications with Maven                   23
Friday, September 24, 2010
Module versioning strategies

       •       Every module artifact shares the same version of the project
             •       Simpler to manage
             •       Used by NetBeans for publishing Maven artifacts (e.g.
                     NETBEANS691)
                   •         Trick - indeed every NetBeans module has got its own version

       •       Every module artifact has got its own version number
             •       Slightly more complex to manage
             •       Required if your modules might move from a project to another


  Efficient development of large NetBeans Platform applications with Maven                   23
Friday, September 24, 2010
Smart dependency convergence




  Efficient development of large NetBeans Platform applications with Maven   24
Friday, September 24, 2010
Smart dependency convergence


       •       The <dependencyManagement> section




  Efficient development of large NetBeans Platform applications with Maven   24
Friday, September 24, 2010
Smart dependency convergence


       •       The <dependencyManagement> section
             •       Declare all the versions of the dependencies used in a project just
                     once, in a parent POM (DRY)




  Efficient development of large NetBeans Platform applications with Maven              24
Friday, September 24, 2010
Smart dependency convergence


       •       The <dependencyManagement> section
             •       Declare all the versions of the dependencies used in a project just
                     once, in a parent POM (DRY)
             •       Children POMs won’t need to declare the version again




  Efficient development of large NetBeans Platform applications with Maven              24
Friday, September 24, 2010
<dependencyManagement>


                    Smart dependency convergence
                     <dependencies>
                         <dependency>
                             <groupId>it.tidalwave.netbeans</groupId>
                             <artifactId>it-tidalwave-netbeans-capabilitiesprovider</artifactId>
                             <version>1.1.26</version>
                         </dependency>
                         <dependency>
                             <groupId>it.tidalwave.netbeans</groupId>
                             <artifactId>it-tidalwave-netbeans-docking</artifactId>
                             <version>1.1.14</version>

       •       The <dependencyManagement> section
                         </dependency>
                         ...
                     </dependencies>

             •
                 </dependencyManagement>
                     Declare all the versions of the dependencies used in a project just
                     once, in a parent POM (DRY)
             •       Children POMs won’t need to declare the version again




  Efficient development of large NetBeans Platform applications with Maven                          24
Friday, September 24, 2010
<dependencyManagement>


                    Smart dependency convergence
                     <dependencies>
                         <dependency>
                             <groupId>it.tidalwave.netbeans</groupId>
                             <artifactId>it-tidalwave-netbeans-capabilitiesprovider</artifactId>
                             <version>1.1.26</version>
                         </dependency>
                         <dependency>
                             <groupId>it.tidalwave.netbeans</groupId>
                             <artifactId>it-tidalwave-netbeans-docking</artifactId>
                             <version>1.1.14</version>

       •       The <dependencyManagement> section
                         </dependency>
                         ...
                     </dependencies>

             •
                 </dependencyManagement>
                     Declare all the versions of the dependencies used in a project just
                     once, in a parent POM (DRY)
             •       Children POMs won’t need to declare the version again

       •       The <dependencyManagement> section can be imported




  Efficient development of large NetBeans Platform applications with Maven                          24
Friday, September 24, 2010
<dependencyManagement>


                    Smart dependency convergence
                     <dependencies>
                         <dependency>
                             <groupId>it.tidalwave.netbeans</groupId>
                             <artifactId>it-tidalwave-netbeans-capabilitiesprovider</artifactId>
                             <version>1.1.26</version>
                         </dependency>
                         <dependency>
                             <groupId>it.tidalwave.netbeans</groupId>
                             <artifactId>it-tidalwave-netbeans-docking</artifactId>
                             <version>1.1.14</version>

       •       The <dependencyManagement> section
                         </dependency>
                         ...
                     </dependencies>

             •
                 </dependencyManagement>
                     Declare all the versions of the dependencies used in a project just
                     once, in a parent POM (DRY)
             •       Children POMs won’t need to declare the version again

       •       The <dependencyManagement> section can be imported
             •       Import a single POM specifying its single version




  Efficient development of large NetBeans Platform applications with Maven                          24
Friday, September 24, 2010
<dependencyManagement>


                    Smart dependency convergence
                     <dependencies>
                         <dependency>
                             <groupId>it.tidalwave.netbeans</groupId>
                             <artifactId>it-tidalwave-netbeans-capabilitiesprovider</artifactId>
                             <version>1.1.26</version>
                         </dependency>
                         <dependency>
                             <groupId>it.tidalwave.netbeans</groupId>
                             <artifactId>it-tidalwave-netbeans-docking</artifactId>
                             <version>1.1.14</version>

       •       The <dependencyManagement> section
                         </dependency>
                         ...
                     </dependencies>

             •
                 </dependencyManagement>
                     Declare all the versions of the dependencies used in a project just
                     once, in a parent POM (DRY)
             •       Children POMs won’t need to declare the version again

       •       The <dependencyManagement> section can be imported
             •       Import a single POM specifying its single version
             •       Maven will “unpack” from it all the declared versions at once



  Efficient development of large NetBeans Platform applications with Maven                          24
Friday, September 24, 2010
<dependencyManagement>


                    Smart dependency convergence
                     <dependencies>
                         <dependency>
                             <groupId>it.tidalwave.netbeans</groupId>
                             <artifactId>it-tidalwave-netbeans-capabilitiesprovider</artifactId>
                             <version>1.1.26</version>
                         </dependency>
                         <dependency>
                             <groupId>it.tidalwave.netbeans</groupId>
                             <artifactId>it-tidalwave-netbeans-docking</artifactId>
                             <version>1.1.14</version>

       •       The <dependencyManagement> section
                         </dependency>
                         ...
                     </dependencies>

             •
                 </dependencyManagement>
                   Declare all the versions of the dependencies used in a project just
                   once, in a parent POM (DRY)
                 <dependencyManagement>
                     <dependencies>
                         <dependency>
             •       Children POMs won’t need to declare the version again
                             <groupId>it.tidalwave.semantic</groupId>
                             <artifactId>semantic</artifactId>
                             <version>0.10.19</version>

       •       The <dependencyManagement> section can be imported
                             <type>pom</type>
                             <scope>import</scope>
                         </dependency>

             •           <dependency>
                     Import a single POM specifying its single version
                             <groupId>it.tidalwave.netbeans</groupId>
                             <artifactId>openbluesky</artifactId>

             •               <version>0.8.4</version>
                     Maven will “unpack” from it all the declared versions at once
                             <type>pom</type>
                             <scope>import</scope>
                         </dependency>
                         ...
                     </dependencies>
                 </dependencyManagement>
  Efficient development of large NetBeans Platform applications with Maven                          24
Friday, September 24, 2010
Optimizing a Maven Platform project




  Efficient development of large NetBeans Platform applications with Maven   25
Friday, September 24, 2010
Optimizing a Maven Platform project


         Master POM




                    1          Branding
                              Module POM




                    1          Application
                              Module POM




                    *
                             Other NBM POM




  Efficient development of large NetBeans Platform applications with Maven   25
Friday, September 24, 2010
Optimizing a Maven Platform project

                                                       Master POM



         Master POM
                                                                1
                                                                      Modules POM


                    1          Branding
                              Module POM
                                                                              1
                                                                                      Branding
                                                                                     Module POM

                    1          Application
                              Module POM
                                                                              1
                                                                                      Application
                                                                                     Module POM

                    *
                             Other NBM POM
                                                                              *
                                                                                    Other NBM POM




  Efficient development of large NetBeans Platform applications with Maven                           25
Friday, September 24, 2010
Optimizing a Maven Platform project

                                                         Master POM



         Master POM
                                                                      1
                                                                           Modules POM

                                                      Contains
                    1          Branding
                                               dependencyManagement of
                                                modules imported by this
                              Module POM                project
                                                                                   1
                                                                                           Branding
                                                                                          Module POM

                    1          Application
                              Module POM
                                                                                   1
                                                                                           Application
                                                                                          Module POM

                    *
                             Other NBM POM
                                                                                   *
                                                                                         Other NBM POM




  Efficient development of large NetBeans Platform applications with Maven                                25
Friday, September 24, 2010
Optimizing a Maven Platform project

                                              Contains
                                       dependencyManagement of               Master POM
                                        modules exported by this
                                               project


         Master POM
                                                                                          1
                                                                                               Modules POM

                                                                          Contains
                    1          Branding
                                                                   dependencyManagement of
                                                                    modules imported by this
                              Module POM                                    project
                                                                                                       1
                                                                                                               Branding
                                                                                                              Module POM

                    1          Application
                              Module POM
                                                                                                       1
                                                                                                               Application
                                                                                                              Module POM

                    *
                             Other NBM POM
                                                                                                       *
                                                                                                             Other NBM POM




  Efficient development of large NetBeans Platform applications with Maven                                                    25
Friday, September 24, 2010
Optimizing a Maven Platform project
                                                                                                       A single POM import
                                                                                                      retrieves all the correct
                                                                                                       modules versions in a
                                                                                                           consistent way

                                                                                                                                  Other project
                                              Contains                                                                               POM
                                       dependencyManagement of               Master POM                 <<imports>>
                                        modules exported by this
                                               project


         Master POM
                                                                                          1
                                                                                               Modules POM

                                                                          Contains
                    1          Branding
                                                                   dependencyManagement of
                                                                    modules imported by this
                              Module POM                                    project
                                                                                                       1
                                                                                                                   Branding
                                                                                                                  Module POM

                    1          Application
                              Module POM
                                                                                                       1
                                                                                                                   Application
                                                                                                                  Module POM

                    *
                             Other NBM POM
                                                                                                       *
                                                                                                               Other NBM POM




  Efficient development of large NetBeans Platform applications with Maven                                                                         25
Friday, September 24, 2010
Netbeans+platform+maven
Netbeans+platform+maven
Netbeans+platform+maven
Netbeans+platform+maven
Netbeans+platform+maven
Netbeans+platform+maven
Netbeans+platform+maven
Netbeans+platform+maven
Netbeans+platform+maven
Netbeans+platform+maven
Netbeans+platform+maven
Netbeans+platform+maven
Netbeans+platform+maven
Netbeans+platform+maven
Netbeans+platform+maven
Netbeans+platform+maven
Netbeans+platform+maven
Netbeans+platform+maven
Netbeans+platform+maven
Netbeans+platform+maven
Netbeans+platform+maven
Netbeans+platform+maven
Netbeans+platform+maven
Netbeans+platform+maven
Netbeans+platform+maven
Netbeans+platform+maven
Netbeans+platform+maven
Netbeans+platform+maven
Netbeans+platform+maven
Netbeans+platform+maven
Netbeans+platform+maven

Mais conteúdo relacionado

Mais procurados

WSO2 Intro Webinar - Scale your business with the cloud enabled WSO2 Applica...
WSO2 Intro Webinar -  Scale your business with the cloud enabled WSO2 Applica...WSO2 Intro Webinar -  Scale your business with the cloud enabled WSO2 Applica...
WSO2 Intro Webinar - Scale your business with the cloud enabled WSO2 Applica...WSO2
 
Openbravo 3 demo tips
Openbravo 3 demo tipsOpenbravo 3 demo tips
Openbravo 3 demo tipskhayer
 
Building Flash-based websites using Adobe Flex - Lesson 1/10
Building Flash-based websites using Adobe Flex - Lesson 1/10Building Flash-based websites using Adobe Flex - Lesson 1/10
Building Flash-based websites using Adobe Flex - Lesson 1/10Stefano Virgilli
 
Things to do with the time you’ll save thanks to VSO
Things to do with the time you’ll save thanks to VSO Things to do with the time you’ll save thanks to VSO
Things to do with the time you’ll save thanks to VSO Jose Luis Soria
 
Support Tools für die Admin-Konsole - Nebil Kisa, Advanced Support Engineer
Support Tools für die Admin-Konsole - Nebil Kisa, Advanced Support EngineerSupport Tools für die Admin-Konsole - Nebil Kisa, Advanced Support Engineer
Support Tools für die Admin-Konsole - Nebil Kisa, Advanced Support EngineerNicole Szigeti
 
2019 devconfza - legacy js
2019   devconfza - legacy js2019   devconfza - legacy js
2019 devconfza - legacy jsWilliam Brander
 
Quality - The key to successful SOA
Quality - The key to successful SOAQuality - The key to successful SOA
Quality - The key to successful SOAWSO2
 
Joomla web development by Technosiss
Joomla web development by TechnosissJoomla web development by Technosiss
Joomla web development by TechnosissTechnosiss
 
Enterprise Integration with the WSO2 ESB
Enterprise Integration with the WSO2 ESB Enterprise Integration with the WSO2 ESB
Enterprise Integration with the WSO2 ESB WSO2
 
Slavy Slavov - 6 Common Challenges Setting Up Selenium in High Scale
Slavy Slavov - 6 Common Challenges Setting Up Selenium in High ScaleSlavy Slavov - 6 Common Challenges Setting Up Selenium in High Scale
Slavy Slavov - 6 Common Challenges Setting Up Selenium in High ScalePeter Sabev
 
NetBeans 5.5 and Java EE - Cédric Tabin - June 2007
NetBeans 5.5 and Java EE - Cédric Tabin - June 2007NetBeans 5.5 and Java EE - Cédric Tabin - June 2007
NetBeans 5.5 and Java EE - Cédric Tabin - June 2007JUG Lausanne
 
Uniface Anywhere version 5
Uniface Anywhere version 5Uniface Anywhere version 5
Uniface Anywhere version 5Arjen van Vliet
 
Web programming
Web programmingWeb programming
Web programmingIshucs
 
OpenMRS Reference Application, Getting Started
OpenMRS Reference Application, Getting StartedOpenMRS Reference Application, Getting Started
OpenMRS Reference Application, Getting Starteddjazayeri
 

Mais procurados (20)

WSO2 Intro Webinar - Scale your business with the cloud enabled WSO2 Applica...
WSO2 Intro Webinar -  Scale your business with the cloud enabled WSO2 Applica...WSO2 Intro Webinar -  Scale your business with the cloud enabled WSO2 Applica...
WSO2 Intro Webinar - Scale your business with the cloud enabled WSO2 Applica...
 
Silverlight
SilverlightSilverlight
Silverlight
 
Openbravo 3 demo tips
Openbravo 3 demo tipsOpenbravo 3 demo tips
Openbravo 3 demo tips
 
Websphere - About IBM HTTP Server & WAS Plug-in
Websphere -  About IBM HTTP Server & WAS Plug-inWebsphere -  About IBM HTTP Server & WAS Plug-in
Websphere - About IBM HTTP Server & WAS Plug-in
 
Building Flash-based websites using Adobe Flex - Lesson 1/10
Building Flash-based websites using Adobe Flex - Lesson 1/10Building Flash-based websites using Adobe Flex - Lesson 1/10
Building Flash-based websites using Adobe Flex - Lesson 1/10
 
Things to do with the time you’ll save thanks to VSO
Things to do with the time you’ll save thanks to VSO Things to do with the time you’ll save thanks to VSO
Things to do with the time you’ll save thanks to VSO
 
Support Tools für die Admin-Konsole - Nebil Kisa, Advanced Support Engineer
Support Tools für die Admin-Konsole - Nebil Kisa, Advanced Support EngineerSupport Tools für die Admin-Konsole - Nebil Kisa, Advanced Support Engineer
Support Tools für die Admin-Konsole - Nebil Kisa, Advanced Support Engineer
 
2019 devconfza - legacy js
2019   devconfza - legacy js2019   devconfza - legacy js
2019 devconfza - legacy js
 
Quality - The key to successful SOA
Quality - The key to successful SOAQuality - The key to successful SOA
Quality - The key to successful SOA
 
Joomla web development by Technosiss
Joomla web development by TechnosissJoomla web development by Technosiss
Joomla web development by Technosiss
 
Patni Computer Systems
Patni Computer SystemsPatni Computer Systems
Patni Computer Systems
 
Enterprise Integration with the WSO2 ESB
Enterprise Integration with the WSO2 ESB Enterprise Integration with the WSO2 ESB
Enterprise Integration with the WSO2 ESB
 
Salesforce Wave Analytics
Salesforce Wave AnalyticsSalesforce Wave Analytics
Salesforce Wave Analytics
 
Slavy Slavov - 6 Common Challenges Setting Up Selenium in High Scale
Slavy Slavov - 6 Common Challenges Setting Up Selenium in High ScaleSlavy Slavov - 6 Common Challenges Setting Up Selenium in High Scale
Slavy Slavov - 6 Common Challenges Setting Up Selenium in High Scale
 
NetBeans 5.5 and Java EE - Cédric Tabin - June 2007
NetBeans 5.5 and Java EE - Cédric Tabin - June 2007NetBeans 5.5 and Java EE - Cédric Tabin - June 2007
NetBeans 5.5 and Java EE - Cédric Tabin - June 2007
 
Installer benchmarking
Installer benchmarkingInstaller benchmarking
Installer benchmarking
 
Uniface Anywhere version 5
Uniface Anywhere version 5Uniface Anywhere version 5
Uniface Anywhere version 5
 
Web programming
Web programmingWeb programming
Web programming
 
Cmsms
CmsmsCmsms
Cmsms
 
OpenMRS Reference Application, Getting Started
OpenMRS Reference Application, Getting StartedOpenMRS Reference Application, Getting Started
OpenMRS Reference Application, Getting Started
 

Semelhante a Netbeans+platform+maven

software technology benchmarking
software  technology benchmarkingsoftware  technology benchmarking
software technology benchmarkingMallikarjuna G D
 
YaJUG-Maven 3.x, will it lives up to its promises
YaJUG-Maven 3.x, will it lives up to its promisesYaJUG-Maven 3.x, will it lives up to its promises
YaJUG-Maven 3.x, will it lives up to its promisesArnaud Héritier
 
ToulouseJUG-Maven 3.x, will it lives up to its promises
ToulouseJUG-Maven 3.x, will it lives up to its promisesToulouseJUG-Maven 3.x, will it lives up to its promises
ToulouseJUG-Maven 3.x, will it lives up to its promisesArnaud Héritier
 
BordeauxJUG-Maven 3.x, will it lives up to its promises
BordeauxJUG-Maven 3.x, will it lives up to its promisesBordeauxJUG-Maven 3.x, will it lives up to its promises
BordeauxJUG-Maven 3.x, will it lives up to its promisesArnaud Héritier
 
When Developers Operate and Operators Develop
When Developers Operate and Operators DevelopWhen Developers Operate and Operators Develop
When Developers Operate and Operators DevelopAdrian Cockcroft
 
ToursJUG-Maven 3.x, will it lives up to its promises
ToursJUG-Maven 3.x, will it lives up to its promisesToursJUG-Maven 3.x, will it lives up to its promises
ToursJUG-Maven 3.x, will it lives up to its promisesArnaud Héritier
 
Build your next app with MvvmCross 6
Build your next app with MvvmCross 6Build your next app with MvvmCross 6
Build your next app with MvvmCross 6Nicolas Milcoff
 
Cross platform dotnet development using dotnet core
Cross platform dotnet development using dotnet coreCross platform dotnet development using dotnet core
Cross platform dotnet development using dotnet coreSwaminathan Vetri
 
DotnetConf - Cloud native and .Net5 announcements
DotnetConf - Cloud native and .Net5 announcementsDotnetConf - Cloud native and .Net5 announcements
DotnetConf - Cloud native and .Net5 announcementsSajeetharan
 
AzureContainerAppswithDotNet_Pune_2022.pptx
AzureContainerAppswithDotNet_Pune_2022.pptxAzureContainerAppswithDotNet_Pune_2022.pptx
AzureContainerAppswithDotNet_Pune_2022.pptxSwaminathan Vetri
 
Innovation with Open Sources and App Modernization for Developers | Ian Y. Choi
Innovation with Open Sources and App Modernization for Developers | Ian Y. ChoiInnovation with Open Sources and App Modernization for Developers | Ian Y. Choi
Innovation with Open Sources and App Modernization for Developers | Ian Y. ChoiVietnam Open Infrastructure User Group
 
OSS on Azure - Microsoft Open Technologies の Ross Gardler さんを囲む会 改め 『Microsof...
OSS on Azure - Microsoft Open Technologies の Ross Gardler さんを囲む会 改め 『Microsof...OSS on Azure - Microsoft Open Technologies の Ross Gardler さんを囲む会 改め 『Microsof...
OSS on Azure - Microsoft Open Technologies の Ross Gardler さんを囲む会 改め 『Microsof...Naoki (Neo) SATO
 
Choosing the best JavaScript framework/library/toolkit
Choosing the best JavaScript framework/library/toolkitChoosing the best JavaScript framework/library/toolkit
Choosing the best JavaScript framework/library/toolkitHristo Chakarov
 
Microservices chat
Microservices chatMicroservices chat
Microservices chatYongHyuk Lee
 
Asp.net in a new world
Asp.net in a new worldAsp.net in a new world
Asp.net in a new worldnextbuild
 
Pivotal Developer-Ready Infrastructure Slides
Pivotal Developer-Ready Infrastructure SlidesPivotal Developer-Ready Infrastructure Slides
Pivotal Developer-Ready Infrastructure SlidesVMware Tanzu
 
Websphere workload migration to cloud
Websphere workload migration to cloudWebsphere workload migration to cloud
Websphere workload migration to cloudDavide Veronese
 

Semelhante a Netbeans+platform+maven (20)

software technology benchmarking
software  technology benchmarkingsoftware  technology benchmarking
software technology benchmarking
 
Build tool
Build toolBuild tool
Build tool
 
YaJUG-Maven 3.x, will it lives up to its promises
YaJUG-Maven 3.x, will it lives up to its promisesYaJUG-Maven 3.x, will it lives up to its promises
YaJUG-Maven 3.x, will it lives up to its promises
 
ToulouseJUG-Maven 3.x, will it lives up to its promises
ToulouseJUG-Maven 3.x, will it lives up to its promisesToulouseJUG-Maven 3.x, will it lives up to its promises
ToulouseJUG-Maven 3.x, will it lives up to its promises
 
BordeauxJUG-Maven 3.x, will it lives up to its promises
BordeauxJUG-Maven 3.x, will it lives up to its promisesBordeauxJUG-Maven 3.x, will it lives up to its promises
BordeauxJUG-Maven 3.x, will it lives up to its promises
 
When Developers Operate and Operators Develop
When Developers Operate and Operators DevelopWhen Developers Operate and Operators Develop
When Developers Operate and Operators Develop
 
ToursJUG-Maven 3.x, will it lives up to its promises
ToursJUG-Maven 3.x, will it lives up to its promisesToursJUG-Maven 3.x, will it lives up to its promises
ToursJUG-Maven 3.x, will it lives up to its promises
 
Build your next app with MvvmCross 6
Build your next app with MvvmCross 6Build your next app with MvvmCross 6
Build your next app with MvvmCross 6
 
Cross platform dotnet development using dotnet core
Cross platform dotnet development using dotnet coreCross platform dotnet development using dotnet core
Cross platform dotnet development using dotnet core
 
OaaS:Open as a Strategy
OaaS:Open as a StrategyOaaS:Open as a Strategy
OaaS:Open as a Strategy
 
DotnetConf - Cloud native and .Net5 announcements
DotnetConf - Cloud native and .Net5 announcementsDotnetConf - Cloud native and .Net5 announcements
DotnetConf - Cloud native and .Net5 announcements
 
ASP.NET 5
ASP.NET 5ASP.NET 5
ASP.NET 5
 
AzureContainerAppswithDotNet_Pune_2022.pptx
AzureContainerAppswithDotNet_Pune_2022.pptxAzureContainerAppswithDotNet_Pune_2022.pptx
AzureContainerAppswithDotNet_Pune_2022.pptx
 
Innovation with Open Sources and App Modernization for Developers | Ian Y. Choi
Innovation with Open Sources and App Modernization for Developers | Ian Y. ChoiInnovation with Open Sources and App Modernization for Developers | Ian Y. Choi
Innovation with Open Sources and App Modernization for Developers | Ian Y. Choi
 
OSS on Azure - Microsoft Open Technologies の Ross Gardler さんを囲む会 改め 『Microsof...
OSS on Azure - Microsoft Open Technologies の Ross Gardler さんを囲む会 改め 『Microsof...OSS on Azure - Microsoft Open Technologies の Ross Gardler さんを囲む会 改め 『Microsof...
OSS on Azure - Microsoft Open Technologies の Ross Gardler さんを囲む会 改め 『Microsof...
 
Choosing the best JavaScript framework/library/toolkit
Choosing the best JavaScript framework/library/toolkitChoosing the best JavaScript framework/library/toolkit
Choosing the best JavaScript framework/library/toolkit
 
Microservices chat
Microservices chatMicroservices chat
Microservices chat
 
Asp.net in a new world
Asp.net in a new worldAsp.net in a new world
Asp.net in a new world
 
Pivotal Developer-Ready Infrastructure Slides
Pivotal Developer-Ready Infrastructure SlidesPivotal Developer-Ready Infrastructure Slides
Pivotal Developer-Ready Infrastructure Slides
 
Websphere workload migration to cloud
Websphere workload migration to cloudWebsphere workload migration to cloud
Websphere workload migration to cloud
 

Mais de Fabrizio Giudici

Building Android apps with Maven
Building Android apps with MavenBuilding Android apps with Maven
Building Android apps with MavenFabrizio Giudici
 
DCI - Data, Context and Interaction @ Jug Lugano May 2011
DCI - Data, Context and Interaction @ Jug Lugano May 2011 DCI - Data, Context and Interaction @ Jug Lugano May 2011
DCI - Data, Context and Interaction @ Jug Lugano May 2011 Fabrizio Giudici
 
DCI - Data, Context and Interaction @ Jug Genova April 2011
DCI - Data, Context and Interaction @ Jug Genova April 2011DCI - Data, Context and Interaction @ Jug Genova April 2011
DCI - Data, Context and Interaction @ Jug Genova April 2011Fabrizio Giudici
 
NOSQL also means RDF stores: an Android case study
NOSQL also means RDF stores: an Android case studyNOSQL also means RDF stores: an Android case study
NOSQL also means RDF stores: an Android case studyFabrizio Giudici
 
Tools for an effective software factory
Tools for an effective software factoryTools for an effective software factory
Tools for an effective software factoryFabrizio Giudici
 
Parallel Computing Scenarios and the new challenges for the Software Architect
Parallel Computing Scenarios  and the new challenges for the Software ArchitectParallel Computing Scenarios  and the new challenges for the Software Architect
Parallel Computing Scenarios and the new challenges for the Software ArchitectFabrizio Giudici
 
blueMarine a desktop app for the open source photographic workflow
blueMarine  a desktop app for the open source photographic workflowblueMarine  a desktop app for the open source photographic workflow
blueMarine a desktop app for the open source photographic workflowFabrizio Giudici
 
blueMarine photographic workflow with Java
blueMarine photographic workflow with JavablueMarine photographic workflow with Java
blueMarine photographic workflow with JavaFabrizio Giudici
 
blueMarine Sailing with NetBeans Platform
blueMarine Sailing with NetBeans PlatformblueMarine Sailing with NetBeans Platform
blueMarine Sailing with NetBeans PlatformFabrizio Giudici
 
NASA World Wind for Java API Overview
NASA World Wind for Java  API OverviewNASA World Wind for Java  API Overview
NASA World Wind for Java API OverviewFabrizio Giudici
 
Rich Internet Applications con JavaFX e NetBeans
Rich Internet Applications  con JavaFX e NetBeans Rich Internet Applications  con JavaFX e NetBeans
Rich Internet Applications con JavaFX e NetBeans Fabrizio Giudici
 
Web Development with Apache Struts 2
Web Development with  Apache Struts 2Web Development with  Apache Struts 2
Web Development with Apache Struts 2Fabrizio Giudici
 
blueMarine Or Why You Should Really Ship Swing Applications
blueMarine  Or Why You Should Really Ship Swing  Applications blueMarine  Or Why You Should Really Ship Swing  Applications
blueMarine Or Why You Should Really Ship Swing Applications Fabrizio Giudici
 
Designing a JavaFX Mobile application
Designing a JavaFX Mobile applicationDesigning a JavaFX Mobile application
Designing a JavaFX Mobile applicationFabrizio Giudici
 
Android java fx-jme@jug-lugano
Android java fx-jme@jug-luganoAndroid java fx-jme@jug-lugano
Android java fx-jme@jug-luganoFabrizio Giudici
 

Mais de Fabrizio Giudici (17)

Building Android apps with Maven
Building Android apps with MavenBuilding Android apps with Maven
Building Android apps with Maven
 
DCI - Data, Context and Interaction @ Jug Lugano May 2011
DCI - Data, Context and Interaction @ Jug Lugano May 2011 DCI - Data, Context and Interaction @ Jug Lugano May 2011
DCI - Data, Context and Interaction @ Jug Lugano May 2011
 
DCI - Data, Context and Interaction @ Jug Genova April 2011
DCI - Data, Context and Interaction @ Jug Genova April 2011DCI - Data, Context and Interaction @ Jug Genova April 2011
DCI - Data, Context and Interaction @ Jug Genova April 2011
 
NOSQL also means RDF stores: an Android case study
NOSQL also means RDF stores: an Android case studyNOSQL also means RDF stores: an Android case study
NOSQL also means RDF stores: an Android case study
 
Tools for an effective software factory
Tools for an effective software factoryTools for an effective software factory
Tools for an effective software factory
 
Parallel Computing Scenarios and the new challenges for the Software Architect
Parallel Computing Scenarios  and the new challenges for the Software ArchitectParallel Computing Scenarios  and the new challenges for the Software Architect
Parallel Computing Scenarios and the new challenges for the Software Architect
 
blueMarine a desktop app for the open source photographic workflow
blueMarine  a desktop app for the open source photographic workflowblueMarine  a desktop app for the open source photographic workflow
blueMarine a desktop app for the open source photographic workflow
 
blueMarine photographic workflow with Java
blueMarine photographic workflow with JavablueMarine photographic workflow with Java
blueMarine photographic workflow with Java
 
blueMarine Sailing with NetBeans Platform
blueMarine Sailing with NetBeans PlatformblueMarine Sailing with NetBeans Platform
blueMarine Sailing with NetBeans Platform
 
NASA World Wind for Java API Overview
NASA World Wind for Java  API OverviewNASA World Wind for Java  API Overview
NASA World Wind for Java API Overview
 
Rich Internet Applications con JavaFX e NetBeans
Rich Internet Applications  con JavaFX e NetBeans Rich Internet Applications  con JavaFX e NetBeans
Rich Internet Applications con JavaFX e NetBeans
 
The VRC Project
The VRC ProjectThe VRC Project
The VRC Project
 
Web Development with Apache Struts 2
Web Development with  Apache Struts 2Web Development with  Apache Struts 2
Web Development with Apache Struts 2
 
blueMarine Or Why You Should Really Ship Swing Applications
blueMarine  Or Why You Should Really Ship Swing  Applications blueMarine  Or Why You Should Really Ship Swing  Applications
blueMarine Or Why You Should Really Ship Swing Applications
 
Designing a JavaFX Mobile application
Designing a JavaFX Mobile applicationDesigning a JavaFX Mobile application
Designing a JavaFX Mobile application
 
Android java fx-jme@jug-lugano
Android java fx-jme@jug-luganoAndroid java fx-jme@jug-lugano
Android java fx-jme@jug-lugano
 
Mercurial
MercurialMercurial
Mercurial
 

Último

The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 

Último (20)

The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 

Netbeans+platform+maven

  • 1. Efficient development of large NetBeans Platform applications with Maven Fabrizio Giudici, Senior Java Architect Tidalwave s.a.s - fabrizio.giudici@tidalwave.it Friday, September 24, 2010
  • 2. Agenda Efficient development of large NetBeans Platform applications with Maven 2 Friday, September 24, 2010
  • 3. Agenda • Introducing the NetBeans Platform Efficient development of large NetBeans Platform applications with Maven 2 Friday, September 24, 2010
  • 4. Agenda • Introducing the NetBeans Platform • The NetBeans Platform Ant Build Harness Efficient development of large NetBeans Platform applications with Maven 2 Friday, September 24, 2010
  • 5. Agenda • Introducing the NetBeans Platform • The NetBeans Platform Ant Build Harness • Limitations of the NetBeans Platform Ant Build Harness Efficient development of large NetBeans Platform applications with Maven 2 Friday, September 24, 2010
  • 6. Agenda • Introducing the NetBeans Platform • The NetBeans Platform Ant Build Harness • Limitations of the NetBeans Platform Ant Build Harness • Introducing Maven Efficient development of large NetBeans Platform applications with Maven 2 Friday, September 24, 2010
  • 7. Agenda • Introducing the NetBeans Platform • The NetBeans Platform Ant Build Harness • Limitations of the NetBeans Platform Ant Build Harness • Introducing Maven • The NetBeans Platform Maven Plugin Efficient development of large NetBeans Platform applications with Maven 2 Friday, September 24, 2010
  • 8. Agenda • Introducing the NetBeans Platform • The NetBeans Platform Ant Build Harness • Limitations of the NetBeans Platform Ant Build Harness • Introducing Maven • The NetBeans Platform Maven Plugin • Optimizing NetBeans Platform Maven projects Efficient development of large NetBeans Platform applications with Maven 2 Friday, September 24, 2010
  • 9. Agenda • Introducing the NetBeans Platform • The NetBeans Platform Ant Build Harness • Limitations of the NetBeans Platform Ant Build Harness • Introducing Maven • The NetBeans Platform Maven Plugin • Optimizing NetBeans Platform Maven projects • Reuse of third parties’ libraries (NBPWR project, optional) Efficient development of large NetBeans Platform applications with Maven 2 Friday, September 24, 2010
  • 10. Agenda • Introducing the NetBeans Platform • The NetBeans Platform Ant Build Harness • Limitations of the NetBeans Platform Ant Build Harness • Introducing Maven • The NetBeans Platform Maven Plugin • Optimizing NetBeans Platform Maven projects • Reuse of third parties’ libraries (NBPWR project, optional) • Conclusions Efficient development of large NetBeans Platform applications with Maven 2 Friday, September 24, 2010
  • 11. About the speaker Efficient development of large NetBeans Platform applications with Maven 3 Friday, September 24, 2010
  • 12. About the speaker • Senior Software Architect, Mentor, Technical Writer • Fourteen years of Java Experience (JSE, JEE, JME, etc...) • Sun Consultant since 1998, Oracle consultant since 2010 • Author of a number of open source projects • Speaker at JavaOne, Devoxx, Jazoon, JAX Italia and other events • Member of the NetBeans Dream Team • Co-leader of JUG Milano • Java.Net blogger at http://www.java.net/blogs/fabriziogiudici Efficient development of large NetBeans Platform applications with Maven 3 Friday, September 24, 2010
  • 13. Ant vs Maven? Efficient development of large NetBeans Platform applications with Maven 4 Friday, September 24, 2010
  • 14. Ant vs Maven? • What this presentation is not: Efficient development of large NetBeans Platform applications with Maven 4 Friday, September 24, 2010
  • 15. Ant vs Maven? • What this presentation is not: • A “X is better than Y” sermon Efficient development of large NetBeans Platform applications with Maven 4 Friday, September 24, 2010
  • 16. Ant vs Maven? • What this presentation is not: • A “X is better than Y” sermon • What this presentation is: Efficient development of large NetBeans Platform applications with Maven 4 Friday, September 24, 2010
  • 17. Ant vs Maven? • What this presentation is not: • A “X is better than Y” sermon • What this presentation is: • An analysis of scenarios where Maven may serve better than Ant • An analysis of Maven-based NetBeans Platform projects Efficient development of large NetBeans Platform applications with Maven 4 Friday, September 24, 2010
  • 18. Ant vs Maven? • What this presentation is not: • A “X is better than Y” sermon • What this presentation is: • An analysis of scenarios where Maven may serve better than Ant • An analysis of Maven-based NetBeans Platform projects • Some basics about the NetBeans Platform and Maven assumed Efficient development of large NetBeans Platform applications with Maven 4 Friday, September 24, 2010
  • 19. Ant vs Maven? • What this presentation is not: • A “X is better than Y” sermon • What this presentation is: • An analysis of scenarios where Maven may serve better than Ant • An analysis of Maven-based NetBeans Platform projects • Some basics about the NetBeans Platform and Maven assumed • Based on the speaker’s experience of four years with Ant & the Platform, then replaced by Maven Efficient development of large NetBeans Platform applications with Maven 4 Friday, September 24, 2010
  • 20. Related talks at JavaOne 2010 • S314388: Maven 3.x: The Evolution of Enterprise Java Build Infrastructures • S314711: Building Software with Rich Client Platforms • S313667: Swing OSGi Modular Desktop Application Framework • S314266: The Cutting Edge of Desktop Software: The NetBeans Platform in Practice • S314141: Patterns for Modularity • S313338 Getting More Out of Your Hudson Efficient development of large NetBeans Platform applications with Maven 5 Friday, September 24, 2010
  • 21. The NetBeans Platform Efficient development of large NetBeans Platform applications with Maven 6 Friday, September 24, 2010
  • 22. The NetBeans Platform • The best framework for Swing desktop applications Efficient development of large NetBeans Platform applications with Maven 6 Friday, September 24, 2010
  • 23. The NetBeans Platform • The best framework for Swing desktop applications • Provides “plumbing” for many common tasks Efficient development of large NetBeans Platform applications with Maven 6 Friday, September 24, 2010
  • 24. The NetBeans Platform • The best framework for Swing desktop applications • Provides “plumbing” for many common tasks • Modular, plugin-oriented, scalable Efficient development of large NetBeans Platform applications with Maven 6 Friday, September 24, 2010
  • 25. The NetBeans Platform • The best framework for Swing desktop applications • Provides “plumbing” for many common tasks • Modular, plugin-oriented, scalable • Since 6.9 provides integration with the OSGi framework Efficient development of large NetBeans Platform applications with Maven 6 Friday, September 24, 2010
  • 26. The NetBeans Platform • The best framework for Swing desktop applications • Provides “plumbing” for many common tasks • Modular, plugin-oriented, scalable • Since 6.9 provides integration with the OSGi framework • Used also as the foundation of the Oracle NetBeans IDE Efficient development of large NetBeans Platform applications with Maven 6 Friday, September 24, 2010
  • 27. The NetBeans Platform • The best framework for Swing desktop applications • Provides “plumbing” for many common tasks • Modular, plugin-oriented, scalable • Since 6.9 provides integration with the OSGi framework • Used also as the foundation of the Oracle NetBeans IDE • Very popular in all the industrial segments Efficient development of large NetBeans Platform applications with Maven 6 Friday, September 24, 2010
  • 28. The NetBeans Platform ... more success stories at http://netbeans.org/features/platform/showcase.html • The best framework for Swing desktop applications • Provides “plumbing” for many common tasks • Modular, plugin-oriented, scalable • Since 6.9 provides integration with the OSGi framework • Used also as the foundation of the Oracle NetBeans IDE • Very popular in all the industrial segments Efficient development of large NetBeans Platform applications with Maven 6 Friday, September 24, 2010
  • 29. The Platform Ant Build Harness Efficient development of large NetBeans Platform applications with Maven 7 Friday, September 24, 2010
  • 30. The Platform Ant Build Harness • By default, the NetBeans Platform uses Ant Efficient development of large NetBeans Platform applications with Maven 7 Friday, September 24, 2010
  • 31. The Platform Ant Build Harness • By default, the NetBeans Platform uses Ant • for building itself (together with the IDE) Efficient development of large NetBeans Platform applications with Maven 7 Friday, September 24, 2010
  • 32. The Platform Ant Build Harness • By default, the NetBeans Platform uses Ant • for building itself (together with the IDE) • for building Platform-based applications Efficient development of large NetBeans Platform applications with Maven 7 Friday, September 24, 2010
  • 33. The Platform Ant Build Harness • By default, the NetBeans Platform uses Ant • for building itself (together with the IDE) • for building Platform-based applications • NetBeans Platform Ant Build Harness Efficient development of large NetBeans Platform applications with Maven 7 Friday, September 24, 2010
  • 34. The Platform Ant Build Harness • By default, the NetBeans Platform uses Ant • for building itself (together with the IDE) • for building Platform-based applications • NetBeans Platform Ant Build Harness • Set of standard Ant scripts, tasks and extensions Efficient development of large NetBeans Platform applications with Maven 7 Friday, September 24, 2010
  • 35. The Platform Ant Build Harness • By default, the NetBeans Platform uses Ant • for building itself (together with the IDE) • for building Platform-based applications • NetBeans Platform Ant Build Harness • Set of standard Ant scripts, tasks and extensions • Can be used from the IDE or by the command line Efficient development of large NetBeans Platform applications with Maven 7 Friday, September 24, 2010
  • 36. The Platform Ant Build Harness • By default, the NetBeans Platform uses Ant • for building itself (together with the IDE) • for building Platform-based applications • NetBeans Platform Ant Build Harness • Set of standard Ant scripts, tasks and extensions • Can be used from the IDE or by the command line • A minimum preliminary setup is required Efficient development of large NetBeans Platform applications with Maven 7 Friday, September 24, 2010
  • 37. The Platform Ant Build Harness • By default, the NetBeans Platform uses Ant • for building itself (together with the IDE) • for building Platform-based applications • NetBeans Platform Ant Build Harness • Set of standard Ant scripts, tasks and extensions • Can be used from the IDE or by the command line • A minimum preliminary setup is required • Very good starting point for beginners Efficient development of large NetBeans Platform applications with Maven 7 Friday, September 24, 2010
  • 38. The Platform Ant Build Harness • By default, the NetBeans Platform uses Ant • for building itself (together with the IDE) • for building Platform-based applications • NetBeans Platform Ant Build Harness • Set of standard Ant scripts, tasks and extensions • Can be used from the IDE or by the command line • A minimum preliminary setup is required • Very good starting point for beginners • Many people use it even for complex applications Efficient development of large NetBeans Platform applications with Maven 7 Friday, September 24, 2010
  • 39. Using the Ant Build Harness Efficient development of large NetBeans Platform applications with Maven 8 Friday, September 24, 2010
  • 40. Using the Ant Build Harness • Two ways of using the harness Efficient development of large NetBeans Platform applications with Maven 8 Friday, September 24, 2010
  • 41. Using the Ant Build Harness • Two ways of using the harness • Supplied with the IDE and referred to by the project Efficient development of large NetBeans Platform applications with Maven 8 Friday, September 24, 2010
  • 42. Using the Ant Build Harness • Two ways of using the harness • Supplied with the IDE and referred to by the project • Needs a local environment setup to “point” to the IDE installation folder Efficient development of large NetBeans Platform applications with Maven 8 Friday, September 24, 2010
  • 43. Using the Ant Build Harness • Two ways of using the harness • Supplied with the IDE and referred to by the project • Needs a local environment setup to “point” to the IDE installation folder • Embedded with the project Efficient development of large NetBeans Platform applications with Maven 8 Friday, September 24, 2010
  • 44. Using the Ant Build Harness • Two ways of using the harness • Supplied with the IDE and referred to by the project • Needs a local environment setup to “point” to the IDE installation folder • Embedded with the project • Possible clashes if the used Platform version is different than the NetBeans IDE version Efficient development of large NetBeans Platform applications with Maven 8 Friday, September 24, 2010
  • 45. Using the Ant Build Harness • Two ways of using the harness • Supplied with the IDE and referred to by the project • Needs a local environment setup to “point” to the IDE installation folder • Embedded with the project • Possible clashes if the used Platform version is different than the NetBeans IDE version Efficient development of large NetBeans Platform applications with Maven 8 Friday, September 24, 2010
  • 46. Using the Ant Build Harness • Two ways of using the harness • Supplied with the IDE and referred to by the project • Needs a local environment setup to “point” to the IDE installation folder • Embedded with the project • Possible clashes if the used Platform version is different than the NetBeans IDE version Key concept: the Ant build harness is a specific build system for the Platform projects Efficient development of large NetBeans Platform applications with Maven 8 Friday, September 24, 2010
  • 47. When Ant might not scale Efficient development of large NetBeans Platform applications with Maven 9 Friday, September 24, 2010
  • 48. When Ant might not scale • With a large number of modules Efficient development of large NetBeans Platform applications with Maven 9 Friday, September 24, 2010
  • 49. When Ant might not scale • With a large number of modules • Good design practices lead to many small packages Efficient development of large NetBeans Platform applications with Maven 9 Friday, September 24, 2010
  • 50. When Ant might not scale • With a large number of modules • Good design practices lead to many small packages • With multiple projects with many inter-dependencies Efficient development of large NetBeans Platform applications with Maven 9 Friday, September 24, 2010
  • 51. When Ant might not scale • With a large number of modules • Good design practices lead to many small packages • With multiple projects with many inter-dependencies In other words: how to reuse modules? Efficient development of large NetBeans Platform applications with Maven 9 Friday, September 24, 2010
  • 52. When Ant might not scale • With a large number of modules • Good design practices lead to many small packages • With multiple projects with many inter-dependencies In other words: how to reuse modules? • Might be a single project that’s worth while splitting Efficient development of large NetBeans Platform applications with Maven 9 Friday, September 24, 2010
  • 53. When Ant might not scale • With a large number of modules • Good design practices lead to many small packages • With multiple projects with many inter-dependencies In other words: how to reuse modules? • Might be a single project that’s worth while splitting • What’s a module of the NetBeans Platform, BTW? Efficient development of large NetBeans Platform applications with Maven 9 Friday, September 24, 2010
  • 54. When Ant might not scale • With a large number of modules • Good design practices lead to many small packages • With multiple projects with many inter-dependencies In other words: how to reuse modules? • Might be a single project that’s worth while splitting • What’s a module of the NetBeans Platform, BTW? • A collection of cohese packages exposing an API Efficient development of large NetBeans Platform applications with Maven 9 Friday, September 24, 2010
  • 55. When Ant might not scale • With a large number of modules • Good design practices lead to many small packages • With multiple projects with many inter-dependencies In other words: how to reuse modules? • Might be a single project that’s worth while splitting • What’s a module of the NetBeans Platform, BTW? • A collection of cohese packages exposing an API • Packed in .nbm files (.jar + metadata) Efficient development of large NetBeans Platform applications with Maven 9 Friday, September 24, 2010
  • 56. When Ant might not scale Only a subset of dependencies shown OpenBlueSky • With a large number blueMarine blueMarine of modules blueMarine blueMarine Metadata Semantic Media PDF • Good design practices lead to many small packages blueMarine blueMarine blueMarine blueMarine • Core Catalog Gallery LightTable With multiple projects with many inter-dependencies In other words: how to reuse modules? forceTen • Might be a single project that’s worth while splitting blueMarine Geo • What’s a module of the NetBeans Platform, BTW? blueMarine • A collection of cohese packages exposing an API • Packed in .nbm files (.jar + metadata) for blueOcean blueBill Server blueBill Android Efficient development of large NetBeans Platform applications with Maven 9 Friday, September 24, 2010
  • 57. When Ant might not scale • With a large number of modules • Good design practices lead to many small packages • With multiple projects with many inter-dependencies In other words: how to reuse modules? • Might be a single project that’s worth while splitting • What’s a module of the NetBeans Platform, BTW? • A collection of cohese packages exposing an API • Packed in .nbm files (.jar + metadata) Efficient development of large NetBeans Platform applications with Maven 9 Friday, September 24, 2010
  • 58. Pushing the Ant Build: Suite Chaining Slide in a graph showing a dependency graph: Suite --> Platform Efficient development of large NetBeans Platform applications with Maven 10 Friday, September 24, 2010
  • 59. Pushing the Ant Build: Suite Chaining • Platform: a self-contained set of .nbm modules Slide in a graph showing a dependency graph: Suite --> Platform Efficient development of large NetBeans Platform applications with Maven 10 Friday, September 24, 2010
  • 60. Pushing the Ant Build: Suite Chaining • Platform: a self-contained set of .nbm modules • The NetBeans Platform is obviously one example of a platform Slide in a graph showing a dependency graph: Suite --> Platform Efficient development of large NetBeans Platform applications with Maven 10 Friday, September 24, 2010
  • 61. Pushing the Ant Build: Suite Chaining • Platform: a self-contained set of .nbm modules • The NetBeans Platform is obviously one example of a platform • Module Suite: a set of .nbm modules depending on a Platform Slide in a graph showing a dependency graph: Suite --> Platform Efficient development of large NetBeans Platform applications with Maven 10 Friday, September 24, 2010
  • 62. Pushing the Ant Build: Suite Chaining • Platform: a self-contained set of .nbm modules • The NetBeans Platform is obviously one example of a platform • Module Suite: a set of .nbm modules depending on a Platform • Any NetBeans Platform-based project is a suite Slide in a graph showing a dependency graph: Suite --> Platform Efficient development of large NetBeans Platform applications with Maven 10 Friday, September 24, 2010
  • 63. Pushing the Ant Build: Suite Chaining • Platform: a self-contained set of .nbm modules • The NetBeans Platform is obviously one example of a platform • Module Suite: a set of .nbm modules depending on a Platform • Any NetBeans Platform-based project is a suite • It is possible to have a Suite depending on a Platform + another Suite (“Suite Chaining”) Slide in a graph showing a dependency graph: Suite --> Platform Efficient development of large NetBeans Platform applications with Maven 10 Friday, September 24, 2010
  • 64. Pushing the Ant Build: Suite Chaining • Platform: a self-contained set of .nbm modules • The NetBeans Platform is obviously one example of a platform • Module Suite: a set of .nbm modules depending on a Platform • Any NetBeans Platform-based project is a suite • It is possible to have a Suite depending on a Platform + another Suite (“Suite Chaining”) Slide in a graph showing a dependency graph: Suite --> Platform • Doable, but cumbersome Efficient development of large NetBeans Platform applications with Maven 10 Friday, September 24, 2010
  • 65. Pushing the Ant Build: Suite Chaining • Platform: a self-contained set of .nbm modules • The NetBeans Platform is obviously one example of a platform • Module Suite: a set of .nbm modules depending on a Platform • Any NetBeans Platform-based project is a suite • It is possible to have a Suite depending on a Platform + another Suite (“Suite Chaining”) Slide in a graph showing a dependency graph: Suite --> Platform • Doable, but cumbersome • Doesn’t scale well with multiple suite levels Efficient development of large NetBeans Platform applications with Maven 10 Friday, September 24, 2010
  • 66. Reusing modules with the Ant build harness Efficient development of large NetBeans Platform applications with Maven 11 Friday, September 24, 2010
  • 67. Reusing modules with the Ant build harness • It’s possible to create a custom platform, assembling arbitrary .nbm modules Efficient development of large NetBeans Platform applications with Maven 11 Friday, September 24, 2010
  • 68. Reusing modules with the Ant build harness • It’s possible to create a custom platform, assembling arbitrary .nbm modules • Of course, dependencies must be satisfied Efficient development of large NetBeans Platform applications with Maven 11 Friday, September 24, 2010
  • 69. Reusing modules with the Ant build harness • It’s possible to create a custom platform, assembling arbitrary .nbm modules • Of course, dependencies must be satisfied • You can assemble a Platform feeding the .nbm artifacts from a project to another project Efficient development of large NetBeans Platform applications with Maven 11 Friday, September 24, 2010
  • 70. Reusing modules with the Ant build harness • It’s possible to create a custom platform, assembling arbitrary .nbm modules • Of course, dependencies must be satisfied • You can assemble a Platform feeding the .nbm artifacts from a project to another project • This approach (apparently) scales well beyond the first level Efficient development of large NetBeans Platform applications with Maven 11 Friday, September 24, 2010
  • 71. Reusing modules with the Ant build harness • It’s possible to create a custom platform, assembling arbitrary .nbm modules • Of course, dependencies must be satisfied • You can assemble a Platform feeding the .nbm artifacts from a project to another project • This approach (apparently) scales well beyond the first level • http://weblogs.java.net/blog/2007/11/03/netbeans-rcp-beyond-suite-chaining Efficient development of large NetBeans Platform applications with Maven 11 Friday, September 24, 2010
  • 72. Reusing modules with the Ant build harness • It’s possible to create a custom platform, assembling arbitrary .nbm modules • Of course, dependencies must be satisfied • You can assemble a Platform feeding the .nbm artifacts from a project to another project • This approach (apparently) scales well beyond the first level • http://weblogs.java.net/blog/2007/11/03/netbeans-rcp-beyond-suite-chaining • NetBeans 6.7 introduced support for reusing modules Efficient development of large NetBeans Platform applications with Maven 11 Friday, September 24, 2010
  • 73. Reusing modules with the Ant build harness • It’s possible to create a custom platform, assembling arbitrary .nbm modules • Of course, dependencies must be satisfied • You can assemble a Platform feeding the .nbm artifacts from a project to another project • This approach (apparently) scales well beyond the first level • http://weblogs.java.net/blog/2007/11/03/netbeans-rcp-beyond-suite-chaining • NetBeans 6.7 introduced support for reusing modules • http://wiki.netbeans.org/DevFaqHowToReuseModules Efficient development of large NetBeans Platform applications with Maven 11 Friday, September 24, 2010
  • 74. Reusing modules with the Ant build harness • It’s possible to create a custom platform, assembling arbitrary .nbm modules • Of course, dependencies must be satisfied • You can assemble a Platform feeding the .nbm artifacts from a project to another project • This approach (apparently) scales well beyond the first level • http://weblogs.java.net/blog/2007/11/03/netbeans-rcp-beyond-suite-chaining • NetBeans 6.7 introduced support for reusing modules • http://wiki.netbeans.org/DevFaqHowToReuseModules Efficient development of large NetBeans Platform applications with Maven 11 Friday, September 24, 2010
  • 75. Reusing modules with the Ant build harness • It’s possible to create a custom platform, assembling arbitrary .nbm modules • Of course, dependencies must be satisfied • You can assemble a Platform feeding the .nbm artifacts from a project to another project • This approach (apparently) scales well beyond the first level • http://weblogs.java.net/blog/2007/11/03/netbeans-rcp-beyond-suite-chaining • NetBeans 6.7 introduced support for reusing modules • http://wiki.netbeans.org/DevFaqHowToReuseModules Efficient development of large NetBeans Platform applications with Maven 11 Friday, September 24, 2010
  • 76. Limits of Custom Platforms with Ant Efficient development of large NetBeans Platform applications with Maven 12 Friday, September 24, 2010
  • 77. Limits of Custom Platforms with Ant • Conceptually simple, the cumbersome part is automating the “feed” of NBM artifacts from a project to another Efficient development of large NetBeans Platform applications with Maven 12 Friday, September 24, 2010
  • 78. Limits of Custom Platforms with Ant • Conceptually simple, the cumbersome part is automating the “feed” of NBM artifacts from a project to another • Personal experience Efficient development of large NetBeans Platform applications with Maven 12 Friday, September 24, 2010
  • 79. Limits of Custom Platforms with Ant • Conceptually simple, the cumbersome part is automating the “feed” of NBM artifacts from a project to another • Personal experience • Wrote a couple of custom Ant tasks to enhance the original harness with artifact management facilities Efficient development of large NetBeans Platform applications with Maven 12 Friday, September 24, 2010
  • 80. Limits of Custom Platforms with Ant • Conceptually simple, the cumbersome part is automating the “feed” of NBM artifacts from a project to another • Personal experience • Wrote a couple of custom Ant tasks to enhance the original harness with artifact management facilities • Reached some high complexity when trying to share javadocs and sources too Efficient development of large NetBeans Platform applications with Maven 12 Friday, September 24, 2010
  • 81. Limits of Custom Platforms with Ant • Conceptually simple, the cumbersome part is automating the “feed” of NBM artifacts from a project to another • Personal experience • Wrote a couple of custom Ant tasks to enhance the original harness with artifact management facilities • Reached some high complexity when trying to share javadocs and sources too • Sources in particular are important, e.g. for profiling etc... Efficient development of large NetBeans Platform applications with Maven 12 Friday, September 24, 2010
  • 82. Limits of Custom Platforms with Ant • Conceptually simple, the cumbersome part is automating the “feed” of NBM artifacts from a project to another • Personal experience • Wrote a couple of custom Ant tasks to enhance the original harness with artifact management facilities • Reached some high complexity when trying to share javadocs and sources too • Sources in particular are important, e.g. for profiling etc... • At this point I moved to Maven... Efficient development of large NetBeans Platform applications with Maven 12 Friday, September 24, 2010
  • 83. Limits of Custom Platforms with Ant • Conceptually simple, the cumbersome part is automating the “feed” of NBM artifacts from a project to another • Personal experience • Wrote a couple of custom Ant tasks to enhance the original harness with artifact management facilities • Reached some high complexity when trying to share javadocs and sources too • Sources in particular are important, e.g. for profiling etc... • At this point I moved to Maven... • I’m recommending to customers - of course your mileage may vary Efficient development of large NetBeans Platform applications with Maven 12 Friday, September 24, 2010
  • 84. Introducing Maven Efficient development of large NetBeans Platform applications with Maven 13 Friday, September 24, 2010
  • 85. Introducing Maven • A different building tool than Ant Efficient development of large NetBeans Platform applications with Maven 13 Friday, September 24, 2010
  • 86. Introducing Maven • A different building tool than Ant • Standard lifecycle (= sequence of phases) applied to projects Efficient development of large NetBeans Platform applications with Maven 13 Friday, September 24, 2010
  • 87. Introducing Maven • A different building tool than Ant • Standard lifecycle (= sequence of phases) applied to projects • Projects are described by a POM (Project Object Model) Efficient development of large NetBeans Platform applications with Maven 13 Friday, September 24, 2010
  • 88. Introducing Maven • A different building tool than Ant • Standard lifecycle (= sequence of phases) applied to projects • Projects are described by a POM (Project Object Model) • Composed of plugins attaching goals to phases Efficient development of large NetBeans Platform applications with Maven 13 Friday, September 24, 2010
  • 89. Introducing Maven • A different building tool than Ant • Standard lifecycle (= sequence of phases) applied to projects • Projects are described by a POM (Project Object Model) • Composed of plugins attaching goals to phases • Provides efficient artifact management with repositories Efficient development of large NetBeans Platform applications with Maven 13 Friday, September 24, 2010
  • 90. Introducing Maven • A different building tool than Ant • Standard lifecycle (= sequence of phases) applied to projects • Projects are described by a POM (Project Object Model) • Composed of plugins attaching goals to phases • Provides efficient artifact management with repositories • more info later Efficient development of large NetBeans Platform applications with Maven 13 Friday, September 24, 2010
  • 91. Introducing Maven • A different building tool than Ant • Standard lifecycle (= sequence of phases) applied to projects • Projects are described by a POM (Project Object Model) • Composed of plugins attaching goals to phases • Provides efficient artifact management with repositories • more info later Ant: interpreter to create build scripts Efficient development of large NetBeans Platform applications with Maven 13 Friday, September 24, 2010
  • 92. Introducing Maven • A different building tool than Ant • Standard lifecycle (= sequence of phases) applied to projects • Projects are described by a POM (Project Object Model) • Composed of plugins attaching goals to phases • Provides efficient artifact management with repositories • more info later Ant: interpreter Maven: standard, well defined to create build scripts build system that can be customized Efficient development of large NetBeans Platform applications with Maven 13 Friday, September 24, 2010
  • 93. Introducing Maven • A different building tool than Ant • Standard lifecycle (= sequence of phases) applied to projects • Projects are described by a POM (Project Object Model) • Composed of plugins attaching goals to phases • Provides efficient artifact management with repositories • more info later Ant: interpreter Maven: standard, well defined to create build scripts build system that can be customized Programmatic Efficient development of large NetBeans Platform applications with Maven 13 Friday, September 24, 2010
  • 94. Introducing Maven • A different building tool than Ant • Standard lifecycle (= sequence of phases) applied to projects • Projects are described by a POM (Project Object Model) • Composed of plugins attaching goals to phases • Provides efficient artifact management with repositories • more info later Ant: interpreter Maven: standard, well defined to create build scripts build system that can be customized Programmatic Declarative Efficient development of large NetBeans Platform applications with Maven 13 Friday, September 24, 2010
  • 95. Inheritance and composition Efficient development of large NetBeans Platform applications with Maven 14 Friday, September 24, 2010
  • 96. Inheritance and composition • “Object model” means it implies some typical OO practices Efficient development of large NetBeans Platform applications with Maven 14 Friday, September 24, 2010
  • 97. Inheritance and composition • “Object model” means it implies some typical OO practices • Inheritance Efficient development of large NetBeans Platform applications with Maven 14 Friday, September 24, 2010
  • 98. Inheritance and composition • “Object model” means it implies some typical OO practices • Inheritance • A module POM can inherit from a parent POM Efficient development of large NetBeans Platform applications with Maven 14 Friday, September 24, 2010
  • 99. Inheritance and composition • “Object model” means it implies some typical OO practices • Inheritance • A module POM can inherit from a parent POM • Composition Efficient development of large NetBeans Platform applications with Maven 14 Friday, September 24, 2010
  • 100. Inheritance and composition • “Object model” means it implies some typical OO practices • Inheritance • A module POM can inherit from a parent POM • Composition • A module POM can import parts of other modules POM Efficient development of large NetBeans Platform applications with Maven 14 Friday, September 24, 2010
  • 101. Inheritance and composition • “Object model” means it implies some typical OO practices • Inheritance • A module POM can inherit from a parent POM • Composition • A module POM can import parts of other modules POM • Both practices reduces entropy (DRY) Efficient development of large NetBeans Platform applications with Maven 14 Friday, September 24, 2010
  • 102. Inheritance and composition • “Object model” means it implies some typical OO practices • Inheritance • A module POM can inherit from a parent POM • Composition • A module POM can import parts of other modules POM • Both practices reduces entropy (DRY) • Still verbose because of XML (but it’s syntax, not semantics) Efficient development of large NetBeans Platform applications with Maven 14 Friday, September 24, 2010
  • 103. Inheritance and composition • “Object model” means it implies some typical OO practices • Inheritance • A module POM can inherit from a parent POM • Composition • A module POM can import parts of other modules POM • Both practices reduces entropy (DRY) • Still verbose because of XML (but it’s syntax, not semantics) • Maven 3 allows for more compact syntaxes (e.g. Groovy) Efficient development of large NetBeans Platform applications with Maven 14 Friday, September 24, 2010
  • 104. Artifacts, dependencies, repositories Efficient development of large NetBeans Platform applications with Maven 15 Friday, September 24, 2010
  • 105. Artifacts, dependencies, repositories • Each module Efficient development of large NetBeans Platform applications with Maven 15 Friday, September 24, 2010
  • 106. Artifacts, dependencies, repositories • Each module • Possibly depends on other modules artifacts Efficient development of large NetBeans Platform applications with Maven 15 Friday, September 24, 2010
  • 107. Artifacts, dependencies, repositories • Each module • Possibly depends on other modules artifacts • Produces a single artifact (which might consist in multiple files) Efficient development of large NetBeans Platform applications with Maven 15 Friday, September 24, 2010
  • 108. Artifacts, dependencies, repositories • Each module • Possibly depends on other modules artifacts • Produces a single artifact (which might consist in multiple files) • Each artifact Efficient development of large NetBeans Platform applications with Maven 15 Friday, September 24, 2010
  • 109. Artifacts, dependencies, repositories • Each module • Possibly depends on other modules artifacts • Produces a single artifact (which might consist in multiple files) • Each artifact • Has got unique coordinates: groupId, artifactId, version, packaging, classifier Efficient development of large NetBeans Platform applications with Maven 15 Friday, September 24, 2010
  • 110. Artifacts, dependencies, repositories • Each module • Possibly depends on other modules artifacts • Produces a single artifact (which might consist in multiple files) • Each artifact • Has got unique coordinates: groupId, artifactId, version, packaging, classifier • Can be retrieved from a local / remote repository Efficient development of large NetBeans Platform applications with Maven 15 Friday, September 24, 2010
  • 111. Artifacts, dependencies, repositories • Each module • Possibly depends on other modules artifacts • Produces a single artifact (which might consist in multiple files) • Each artifact • Has got unique coordinates: groupId, artifactId, version, packaging, classifier • Can be retrieved from a local / remote repository • Can be published to a local / remote repository Efficient development of large NetBeans Platform applications with Maven 15 Friday, September 24, 2010
  • 112. The NBM Maven Plugin Efficient development of large NetBeans Platform applications with Maven 16 Friday, September 24, 2010
  • 113. The NBM Maven Plugin • A specific Maven plugin for the NetBeans Platform Efficient development of large NetBeans Platform applications with Maven 16 Friday, September 24, 2010
  • 114. The NBM Maven Plugin • A specific Maven plugin for the NetBeans Platform • Defines the ‘nbm’ packaging Efficient development of large NetBeans Platform applications with Maven 16 Friday, September 24, 2010
  • 115. The NBM Maven Plugin • A specific Maven plugin for the NetBeans Platform • Defines the ‘nbm’ packaging • Creates nbm artifacts Efficient development of large NetBeans Platform applications with Maven 16 Friday, September 24, 2010
  • 116. The NBM Maven Plugin • A specific Maven plugin for the NetBeans Platform • Defines the ‘nbm’ packaging • Creates nbm artifacts • Manages branding Efficient development of large NetBeans Platform applications with Maven 16 Friday, September 24, 2010
  • 117. The NBM Maven Plugin • A specific Maven plugin for the NetBeans Platform • Defines the ‘nbm’ packaging • Creates nbm artifacts • Manages branding • Creates .zip and JNLP distributions Efficient development of large NetBeans Platform applications with Maven 16 Friday, September 24, 2010
  • 118. The NBM Maven Plugin • A specific Maven plugin for the NetBeans Platform • Defines the ‘nbm’ packaging • Creates nbm artifacts • Manages branding • Creates .zip and JNLP distributions • Properly runs the project being developed Efficient development of large NetBeans Platform applications with Maven 16 Friday, September 24, 2010
  • 119. The NBM Maven Plugin • A specific Maven plugin for the NetBeans Platform • Defines the ‘nbm’ packaging • Creates nbm artifacts • Manages branding • Creates .zip and JNLP distributions • Properly runs the project being developed • Out-of-the-box support by the IDE, better integration with 6.9 Efficient development of large NetBeans Platform applications with Maven 16 Friday, September 24, 2010
  • 120. Further benefits If you have time, demonstrate e.g. FindBugs integration. In any case, connect to the Tidalwave Hudson instance and show some stuff Efficient development of large NetBeans Platform applications with Maven 17 Friday, September 24, 2010
  • 121. Further benefits If you have time, demonstrate e.g. FindBugs integration. In any case, connect to the Tidalwave Hudson instance and show some stuff • Your project becomes just a standard Maven project Efficient development of large NetBeans Platform applications with Maven 17 Friday, September 24, 2010
  • 122. Further benefits If you have time, demonstrate e.g. FindBugs integration. In any case, connect to the Tidalwave Hudson instance and show some stuff No more NetBeans specific “build harness” • Your project becomes just a standard Maven project Efficient development of large NetBeans Platform applications with Maven 17 Friday, September 24, 2010
  • 123. Further benefits If you have time, demonstrate e.g. FindBugs integration. In any case, connect to the Tidalwave Hudson instance and show some stuff No more NetBeans specific “build harness” • Your project becomes just a standard Maven project • No special build instructions: mvn clean install Efficient development of large NetBeans Platform applications with Maven 17 Friday, September 24, 2010
  • 124. Further benefits If you have time, demonstrate e.g. FindBugs integration. In any case, connect to the Tidalwave Hudson instance and show some stuff No more NetBeans specific “build harness” • Your project becomes just a standard Maven project • No special build instructions: mvn clean install • IDE - neutral (IDEA, Eclipse) Efficient development of large NetBeans Platform applications with Maven 17 Friday, September 24, 2010
  • 125. Further benefits If you have time, demonstrate e.g. FindBugs integration. In any case, connect to the Tidalwave Hudson instance and show some stuff No more NetBeans specific “build harness” • Your project becomes just a standard Maven project • No special build instructions: mvn clean install • IDE - neutral (IDEA, Eclipse) • Immediately available for CI without any specific setup Efficient development of large NetBeans Platform applications with Maven 17 Friday, September 24, 2010
  • 126. Further benefits If you have time, demonstrate e.g. FindBugs integration. In any case, connect to the Tidalwave Hudson instance and show some stuff No more NetBeans specific “build harness” • Your project becomes just a standard Maven project • No special build instructions: mvn clean install • IDE - neutral (IDEA, Eclipse) • Immediately available for CI without any specific setup • Easy to augment with QA plugins (e.g. Cobertura, FindBugs) Efficient development of large NetBeans Platform applications with Maven 17 Friday, September 24, 2010
  • 127. Further benefits If you have time, demonstrate e.g. FindBugs integration. In any case, connect to the Tidalwave Hudson instance and show some stuff No more NetBeans specific “build harness” • Your project becomes just a standard Maven project • No special build instructions: mvn clean install • IDE - neutral (IDEA, Eclipse) • Immediately available for CI without any specific setup • Easy to augment with QA plugins (e.g. Cobertura, FindBugs) • Just configure the plugin in the Master POM Efficient development of large NetBeans Platform applications with Maven 17 Friday, September 24, 2010
  • 128. Further benefits If you have time, demonstrate e.g. FindBugs integration. In any case, connect to the Tidalwave Hudson instance and show some stuff No more NetBeans specific “build harness” • Your project becomes just a standard Maven project • No special build instructions: mvn clean install • IDE - neutral (IDEA, Eclipse) • Immediately available for CI without any specific setup • Easy to augment with QA plugins (e.g. Cobertura, FindBugs) • Just configure the plugin in the Master POM • Run it (e.g. mvn findbugs:findbugs) Efficient development of large NetBeans Platform applications with Maven 17 Friday, September 24, 2010
  • 129. Project structure Efficient development of large NetBeans Platform applications with Maven 18 Friday, September 24, 2010
  • 130. Project structure • Modules Master POM • Master POM • Application module 1 Branding Module POM • What and how to assemble as final app 1 • Branding module Application Module POM • e.g. i18n resources, customization of existing platform resources * Other NBM POM • One or more .nbm modules Efficient development of large NetBeans Platform applications with Maven 18 Friday, September 24, 2010
  • 131. Demo Efficient development of large NetBeans Platform applications with Maven 19 Friday, September 24, 2010
  • 132. Demo • Show forceTen Example 1 Efficient development of large NetBeans Platform applications with Maven 19 Friday, September 24, 2010
  • 133. Dependency caveat! Efficient development of large NetBeans Platform applications with Maven 20 Friday, September 24, 2010
  • 134. Dependency caveat! • Maven dependencies are transitive Efficient development of large NetBeans Platform applications with Maven 20 Friday, September 24, 2010
  • 135. Dependency caveat! • Maven dependencies are transitive • NetBeans Platform dependencies are not transitive Efficient development of large NetBeans Platform applications with Maven 20 Friday, September 24, 2010
  • 136. Dependency caveat! • Maven dependencies are transitive • NetBeans Platform dependencies are not transitive • The Maven plugin: Efficient development of large NetBeans Platform applications with Maven 20 Friday, September 24, 2010
  • 137. Dependency caveat! • Maven dependencies are transitive • NetBeans Platform dependencies are not transitive • The Maven plugin: • automatically translates direct Maven dependencies on NBM modules to Platform dependencies Efficient development of large NetBeans Platform applications with Maven 20 Friday, September 24, 2010
  • 138. Dependency caveat! • Maven dependencies are transitive • NetBeans Platform dependencies are not transitive • The Maven plugin: • automatically translates direct Maven dependencies on NBM modules to Platform dependencies • performs a consistency check about missing transitive dependencies and dependencies on non-public classes Efficient development of large NetBeans Platform applications with Maven 20 Friday, September 24, 2010
  • 139. Dependency caveat! • Maven dependencies are transitive • NetBeans Platform dependencies are not transitive • The Maven plugin: • automatically translates direct Maven dependencies on NBM modules to Platform dependencies • performs a consistency check about missing transitive dependencies and dependencies on non-public classes • OSGi bundles allowed as dependencies since IDE 6.9 + NBM plugin 3.2 Efficient development of large NetBeans Platform applications with Maven 20 Friday, September 24, 2010
  • 140. Dependency caveat! • Maven dependencies are transitive • NetBeans Platform dependencies are not transitive • The Maven plugin: • automatically translates direct Maven dependencies on NBM modules to Platform dependencies • performs a consistency check about missing transitive dependencies and dependencies on non-public classes • OSGi bundles allowed as dependencies since IDE 6.9 + NBM plugin 3.2 • Old versions of the plugin behaved in a different way Efficient development of large NetBeans Platform applications with Maven 20 Friday, September 24, 2010
  • 141. Dependency caveat! • Maven dependencies are transitive • NetBeans Platform dependencies are not transitive • The Maven plugin: • automatically translates direct Maven dependencies on NBM modules to Platform dependencies • performs a consistency check about missing transitive dependencies and dependencies on non-public classes • OSGi bundles allowed as dependencies since IDE 6.9 + NBM plugin 3.2 • Old versions of the plugin behaved in a different way • Not mentioning some deprecated practices still available in 3.x Efficient development of large NetBeans Platform applications with Maven 20 Friday, September 24, 2010
  • 142. Reuse of NBM modules in non-platform projects Efficient development of large NetBeans Platform applications with Maven 21 Friday, September 24, 2010
  • 143. Reuse of NBM modules in non-platform projects • The NBM Maven plugin produces both a .nbm and a .jar artifacts (different packagings) Efficient development of large NetBeans Platform applications with Maven 21 Friday, September 24, 2010
  • 144. Reuse of NBM modules in non-platform projects • The NBM Maven plugin produces both a .nbm and a .jar artifacts (different packagings) • This means that a non-platform project can reuse a NBM module Efficient development of large NetBeans Platform applications with Maven 21 Friday, September 24, 2010
  • 145. Reuse of NBM modules in non-platform projects • The NBM Maven plugin produces both a .nbm and a .jar artifacts (different packagings) • This means that a non-platform project can reuse a NBM module • E.g. Java SE, Android, etc... Efficient development of large NetBeans Platform applications with Maven 21 Friday, September 24, 2010
  • 146. Reuse of NBM modules in non-platform projects • The NBM Maven plugin produces both a .nbm and a .jar artifacts (different packagings) • This means that a non-platform project can reuse a NBM module • E.g. Java SE, Android, etc... • Just declare a dependency as usual Efficient development of large NetBeans Platform applications with Maven 21 Friday, September 24, 2010
  • 147. Reuse of NBM modules in non-platform projects • The NBM Maven plugin produces both a .nbm and a .jar artifacts (different packagings) • This means that a non-platform project can reuse a NBM module • E.g. Java SE, Android, etc... • Just declare a dependency as usual • Projects whose packaging is nbm automatically depend on nbm artifacts Efficient development of large NetBeans Platform applications with Maven 21 Friday, September 24, 2010
  • 148. Reuse of NBM modules in non-platform projects • The NBM Maven plugin produces both a .nbm and a .jar artifacts (different packagings) • This means that a non-platform project can reuse a NBM module • E.g. Java SE, Android, etc... • Just declare a dependency as usual • Projects whose packaging is nbm automatically depend on nbm artifacts • Projects whose packaging is jar automatically depend on jar artifacts Efficient development of large NetBeans Platform applications with Maven 21 Friday, September 24, 2010
  • 149. Demo • Show forceTen Example 2 Efficient development of large NetBeans Platform applications with Maven 22 Friday, September 24, 2010
  • 150. Module versioning strategies Efficient development of large NetBeans Platform applications with Maven 23 Friday, September 24, 2010
  • 151. Module versioning strategies • Every module artifact shares the same version of the project Efficient development of large NetBeans Platform applications with Maven 23 Friday, September 24, 2010
  • 152. Module versioning strategies • Every module artifact shares the same version of the project • Simpler to manage Efficient development of large NetBeans Platform applications with Maven 23 Friday, September 24, 2010
  • 153. Module versioning strategies • Every module artifact shares the same version of the project • Simpler to manage • Used by NetBeans for publishing Maven artifacts (e.g. NETBEANS691) Efficient development of large NetBeans Platform applications with Maven 23 Friday, September 24, 2010
  • 154. Module versioning strategies • Every module artifact shares the same version of the project • Simpler to manage • Used by NetBeans for publishing Maven artifacts (e.g. NETBEANS691) • Trick - indeed every NetBeans module has got its own version Efficient development of large NetBeans Platform applications with Maven 23 Friday, September 24, 2010
  • 155. Module versioning strategies • Every module artifact shares the same version of the project • Simpler to manage • Used by NetBeans for publishing Maven artifacts (e.g. NETBEANS691) • Trick - indeed every NetBeans module has got its own version • Every module artifact has got its own version number Efficient development of large NetBeans Platform applications with Maven 23 Friday, September 24, 2010
  • 156. Module versioning strategies • Every module artifact shares the same version of the project • Simpler to manage • Used by NetBeans for publishing Maven artifacts (e.g. NETBEANS691) • Trick - indeed every NetBeans module has got its own version • Every module artifact has got its own version number • Slightly more complex to manage Efficient development of large NetBeans Platform applications with Maven 23 Friday, September 24, 2010
  • 157. Module versioning strategies • Every module artifact shares the same version of the project • Simpler to manage • Used by NetBeans for publishing Maven artifacts (e.g. NETBEANS691) • Trick - indeed every NetBeans module has got its own version • Every module artifact has got its own version number • Slightly more complex to manage • Required if your modules might move from a project to another Efficient development of large NetBeans Platform applications with Maven 23 Friday, September 24, 2010
  • 158. Smart dependency convergence Efficient development of large NetBeans Platform applications with Maven 24 Friday, September 24, 2010
  • 159. Smart dependency convergence • The <dependencyManagement> section Efficient development of large NetBeans Platform applications with Maven 24 Friday, September 24, 2010
  • 160. Smart dependency convergence • The <dependencyManagement> section • Declare all the versions of the dependencies used in a project just once, in a parent POM (DRY) Efficient development of large NetBeans Platform applications with Maven 24 Friday, September 24, 2010
  • 161. Smart dependency convergence • The <dependencyManagement> section • Declare all the versions of the dependencies used in a project just once, in a parent POM (DRY) • Children POMs won’t need to declare the version again Efficient development of large NetBeans Platform applications with Maven 24 Friday, September 24, 2010
  • 162. <dependencyManagement> Smart dependency convergence <dependencies> <dependency> <groupId>it.tidalwave.netbeans</groupId> <artifactId>it-tidalwave-netbeans-capabilitiesprovider</artifactId> <version>1.1.26</version> </dependency> <dependency> <groupId>it.tidalwave.netbeans</groupId> <artifactId>it-tidalwave-netbeans-docking</artifactId> <version>1.1.14</version> • The <dependencyManagement> section </dependency> ... </dependencies> • </dependencyManagement> Declare all the versions of the dependencies used in a project just once, in a parent POM (DRY) • Children POMs won’t need to declare the version again Efficient development of large NetBeans Platform applications with Maven 24 Friday, September 24, 2010
  • 163. <dependencyManagement> Smart dependency convergence <dependencies> <dependency> <groupId>it.tidalwave.netbeans</groupId> <artifactId>it-tidalwave-netbeans-capabilitiesprovider</artifactId> <version>1.1.26</version> </dependency> <dependency> <groupId>it.tidalwave.netbeans</groupId> <artifactId>it-tidalwave-netbeans-docking</artifactId> <version>1.1.14</version> • The <dependencyManagement> section </dependency> ... </dependencies> • </dependencyManagement> Declare all the versions of the dependencies used in a project just once, in a parent POM (DRY) • Children POMs won’t need to declare the version again • The <dependencyManagement> section can be imported Efficient development of large NetBeans Platform applications with Maven 24 Friday, September 24, 2010
  • 164. <dependencyManagement> Smart dependency convergence <dependencies> <dependency> <groupId>it.tidalwave.netbeans</groupId> <artifactId>it-tidalwave-netbeans-capabilitiesprovider</artifactId> <version>1.1.26</version> </dependency> <dependency> <groupId>it.tidalwave.netbeans</groupId> <artifactId>it-tidalwave-netbeans-docking</artifactId> <version>1.1.14</version> • The <dependencyManagement> section </dependency> ... </dependencies> • </dependencyManagement> Declare all the versions of the dependencies used in a project just once, in a parent POM (DRY) • Children POMs won’t need to declare the version again • The <dependencyManagement> section can be imported • Import a single POM specifying its single version Efficient development of large NetBeans Platform applications with Maven 24 Friday, September 24, 2010
  • 165. <dependencyManagement> Smart dependency convergence <dependencies> <dependency> <groupId>it.tidalwave.netbeans</groupId> <artifactId>it-tidalwave-netbeans-capabilitiesprovider</artifactId> <version>1.1.26</version> </dependency> <dependency> <groupId>it.tidalwave.netbeans</groupId> <artifactId>it-tidalwave-netbeans-docking</artifactId> <version>1.1.14</version> • The <dependencyManagement> section </dependency> ... </dependencies> • </dependencyManagement> Declare all the versions of the dependencies used in a project just once, in a parent POM (DRY) • Children POMs won’t need to declare the version again • The <dependencyManagement> section can be imported • Import a single POM specifying its single version • Maven will “unpack” from it all the declared versions at once Efficient development of large NetBeans Platform applications with Maven 24 Friday, September 24, 2010
  • 166. <dependencyManagement> Smart dependency convergence <dependencies> <dependency> <groupId>it.tidalwave.netbeans</groupId> <artifactId>it-tidalwave-netbeans-capabilitiesprovider</artifactId> <version>1.1.26</version> </dependency> <dependency> <groupId>it.tidalwave.netbeans</groupId> <artifactId>it-tidalwave-netbeans-docking</artifactId> <version>1.1.14</version> • The <dependencyManagement> section </dependency> ... </dependencies> • </dependencyManagement> Declare all the versions of the dependencies used in a project just once, in a parent POM (DRY) <dependencyManagement> <dependencies> <dependency> • Children POMs won’t need to declare the version again <groupId>it.tidalwave.semantic</groupId> <artifactId>semantic</artifactId> <version>0.10.19</version> • The <dependencyManagement> section can be imported <type>pom</type> <scope>import</scope> </dependency> • <dependency> Import a single POM specifying its single version <groupId>it.tidalwave.netbeans</groupId> <artifactId>openbluesky</artifactId> • <version>0.8.4</version> Maven will “unpack” from it all the declared versions at once <type>pom</type> <scope>import</scope> </dependency> ... </dependencies> </dependencyManagement> Efficient development of large NetBeans Platform applications with Maven 24 Friday, September 24, 2010
  • 167. Optimizing a Maven Platform project Efficient development of large NetBeans Platform applications with Maven 25 Friday, September 24, 2010
  • 168. Optimizing a Maven Platform project Master POM 1 Branding Module POM 1 Application Module POM * Other NBM POM Efficient development of large NetBeans Platform applications with Maven 25 Friday, September 24, 2010
  • 169. Optimizing a Maven Platform project Master POM Master POM 1 Modules POM 1 Branding Module POM 1 Branding Module POM 1 Application Module POM 1 Application Module POM * Other NBM POM * Other NBM POM Efficient development of large NetBeans Platform applications with Maven 25 Friday, September 24, 2010
  • 170. Optimizing a Maven Platform project Master POM Master POM 1 Modules POM Contains 1 Branding dependencyManagement of modules imported by this Module POM project 1 Branding Module POM 1 Application Module POM 1 Application Module POM * Other NBM POM * Other NBM POM Efficient development of large NetBeans Platform applications with Maven 25 Friday, September 24, 2010
  • 171. Optimizing a Maven Platform project Contains dependencyManagement of Master POM modules exported by this project Master POM 1 Modules POM Contains 1 Branding dependencyManagement of modules imported by this Module POM project 1 Branding Module POM 1 Application Module POM 1 Application Module POM * Other NBM POM * Other NBM POM Efficient development of large NetBeans Platform applications with Maven 25 Friday, September 24, 2010
  • 172. Optimizing a Maven Platform project A single POM import retrieves all the correct modules versions in a consistent way Other project Contains POM dependencyManagement of Master POM <<imports>> modules exported by this project Master POM 1 Modules POM Contains 1 Branding dependencyManagement of modules imported by this Module POM project 1 Branding Module POM 1 Application Module POM 1 Application Module POM * Other NBM POM * Other NBM POM Efficient development of large NetBeans Platform applications with Maven 25 Friday, September 24, 2010