SlideShare uma empresa Scribd logo
1 de 39
Next Generation
Development Infrastructure
with the Maven Enterprise
Stack
Jason van Zyl
   SONATYPE
http://twitter.com/jvanzyl
Maven Enterprise Stack
Organizations want complete business solutions for their Maven-based software
development.
A complete solutions starts with initiating, or onboarding, developers and ends with
provisioning an application to production.
A Maven-based software development is component-centric. Maven describes components,
creates components, distributes components, and consumes components. Everything in
Maven is about the production, use, and movement of components.
Why?
  The ROI is in the first day of use. From the Eclipse onboarding alone.
  Sonatype is the organization that understands Maven-based development best
  Early adopter save enormously and get to participate in the design of the stack
The Evolution of ‘Making Things’
                                        Ad hoc                                                                 Structure




                                                                                      Text




      Ad hoc Automobile Manufacturing Circa 1923                                             Structured Automobile Manufacturing Circa 2010



1923: 108 independent Automobile Manufacturers in the US Alone
http://en.wikipedia.org/wiki/List_of_defunct_United_States_automobile_manufacturers
Maven Central Unique IPs / Month in 2009
700,000
                                                                                                                        667,708
                                                                                                              646,600


                                                                                                    588,141
                                                                                          557,734

525,000                                           514,924   512,165             514,589
                                                                      502,899
                              470,237   475,643




                    362,893
350,000
          315,970
                                              Maven is the de facto component
                                        distribution infrastructure for Java projects

175,000                                        Maven Central is the de facto
                                              store house of all Open Source
                                            Java components: 300M hits/month


     0
            Jan       Feb       Mar       Apr       May       Jun       Jul       Aug       Sep       Oct       Nov       Dec




                    2008 Total Unique IPs: 1,836,709
                    2009 Total Unique IPs: 3,978,964
Maven Enterprise Stack: A complete business
                      solution for Maven-based development

                Developer checks in source code                     Hudson checks out source code



              M2Eclipse            2                SCM             3         Hudson


                                          Binary dependencies
      Developer requests binary           are delivered to the                     4   Hudson instructs Maven
      dependencies from Nexus       1     developers workspace                         to perform the automated build




                                                  Nexus              5         Maven

                                                                            Maven deploys built
                         Proviso requests updates                           artifacts to Nexus
                           to runtime components
                                       from Nexus
                                                     6
                                                          Nexus sends components
                                                          updates to Proviso
Maven Central
                                                                                             Agent
                                                  Proviso            7
                                                                                       Agent        Agent
                                        Proviso provisions components
                                        to the cloud runtime
Tycho        NAR



    s-b-p        OSGi



    PAX       FlexMojos   Maven             M2Eclipse   Maven



                                                          P2

Groovy      Maven Shell   Hudson             Nexus

                                                         GEM


             Polyglot
Ruby                       Git               Proviso     OBR
              Maven




Scala         Clojure

                                                        EC2
                            vCloud



                                     Zeus
Responding to invitations for improvement
Maven 3.0
Fully backward compatible: from the CLI perspective Maven 3.0 should be a drop-in
replacement for Maven 2.x
Overhaul for embedding, in particular looking at M2Eclipse, Hudson & Nexus
Plugin API enhancements for incremental builds
Parallel execution
Parallel downloads
Separation of the artifact resolution layer (and eventual integration with P2)
Maven 3.0
Fully backward compatible: from the CLI perspective Maven 3.0 should be a drop-in
replacement for Maven 2.x
Overhaul for embedding, in particular looking at M2Eclipse, Hudson & Nexus
Plugin API enhancements for incremental builds
Parallel execution
Parallel downloads
Separation of the artifact resolution layer (and eventual integration with P2)

                        Maven 3.0-beta-1: Only 3 issues left!
Tycho Build
Tycho attempts to be a complete replacement for PDE headless build, Buckminster, and
everything else that attempts to build OSGi bundles and Eclipse plugins in a MANIFEST.MF-
first way.
Tycho already uses Eclipse/OSGi metadata to resolve project dependencies by OSGi rules
and injects these dependencies into maven project model dynamically, at build time.
Tycho uses JDT to make sure modularity rules are applied.
Tycho uses the OSGi state resolver is used to make sure the resolution that occurs during
build-time matches what you will need at runtime.
Tycho supports bundles, fragments, features and update sites, as well as RCP applications.
Tycho knows how to run JUnit test plugins using the OSGi runtime.
Tycho has support for P2 repositories, Update Sites and Maven repositories.
Tycho supports POM-first OSGi bundles.
M2Eclipse has support for importing Tycho projects as Eclipse PDE projects.
Maven Enterprise Stack Architecture & Tooling

                     P2         Maven        OBR



M2Eclipse
                                                           JSR330
                             Tycho Central

  PDE
                                                            Guice


   P2        Tycho Eclipse    Tycho Build    Tycho DM      Peaberry




                                                              Tycho
                               Maven 3                        Server
  PAX         Tycho Tools                     Tycho
                                             Runtime
                                                               Shiro
                                             Tycho DM
 m-b-p
                                                               Wink
                                              Equinox
 Runtime
                                                            Enunciate
Assembler


                                Proviso


                                                   Nexus     Hudson
NAR: AOL Classifier
AOL Classifier specifies where the NAR file was created and where it will work:
  Architecture
    i386, x86, amd64, ppc, sparc, …
  Operating System
    Windows, Linux, MacOSX, SunOS, …
  Linker
    g++, gcc, msvc, CC, icc, icpc


Examples:
  x86-Windows-msvc, x86-Windows-g++
  i386-Linux-g++, i386-Linux-icpc, amd64-Linux-g++
  ppc-MacOSX-g++, i386-MacOSX-g++
  sparc-SunOS-CC
http://polyglot.sonatype.org
http://shell.sonatype.org
Tycho        NAR



    s-b-p        OSGi



    PAX       FlexMojos   Maven             M2Eclipse   Maven



                                                          P2

Groovy      Maven Shell   Hudson             Nexus

                                                         GEM


             Polyglot
Ruby                       Git               Proviso     OBR
              Maven




Scala         Clojure

                                                        EC2
                            vCloud



                                     Zeus
Hudson for Maven
1.0
  Advanced Maven 3.x support
  REST integration using Apache Wink
      Advanced inter-server communication like Nexus or Hudson with Hudson slaves
  Shiro integration to provide the same security infrastructure as
  Multi-platform smoke testing: check a canonical build before firing builds on slaves
1.1
  Workflow integration for long-lived release processes
  Automated build promotion based on long-lived release processes
Tycho        NAR



    s-b-p        OSGi



    PAX       FlexMojos   Maven             M2Eclipse   Maven



                                                          P2

Groovy      Maven Shell   Hudson             Nexus

                                                         GEM


             Polyglot
Ruby                       Git               Proviso     OBR
              Maven




Scala         Clojure

                                                        EC2
                            vCloud



                                     Zeus
M2Eclipse Configuration Framework


  Turn Maven
 mumbo-jumbo
into Eclipse talk      Automation & Maven


              WTP    m2eclipse + configuration   AJDT
               JDT          framework           Flex


                                                    Turn Eclipse
                                                   mumbo-jumbo
                        Humans & Eclipse          into Maven talk
M2Eclipse Configuration Framework


  Turn Maven
 mumbo-jumbo
into Eclipse talk      Automation & Maven


              WTP    m2eclipse + configuration   AJDT
               JDT          framework           Flex


                                                    Turn Eclipse
                                                   mumbo-jumbo
                        Humans & Eclipse          into Maven talk
Maven Studio for Eclipse (Commercial)
1.0
  Developer onboarding -- Huge! The ROI is the first day used!
  Integration with Adobe’s Flex/FlashBuilder
  Integration with Polarion’s Subversive to provide enterprise Subversion support
  Integration with Hudson through an optimized REST interface Sonatype has created
  Integration with Maven Archetype which optimizes creating and managing custom archetypes
  Integration with Tomcat for rapid hot re-deploy for accelerated webapp development
  Integration with Confluence
  Integration with JIRA for time tracking
1.1
  Integration with JRebel
  Integration with Nexus to be governance & compliance aware from project initialization
  Integration with GWT
Tycho        NAR



    s-b-p        OSGi



    PAX       FlexMojos   Maven             M2Eclipse   Maven



                                                          P2

Groovy      Maven Shell   Hudson             Nexus

                                                         GEM


             Polyglot
Ruby                       Git               Proviso     OBR
              Maven




Scala         Clojure

                                                        EC2
                            vCloud



                                     Zeus
Configuration management
                                   Open Source Ecosystem
        Terracotta
                     Codehaus     - bad POMs
                                  - repositories in POMs (bad practice)
                                  - mixed snapshot and release repositories
Apache
                                  - incorrect optional dependencies

                                                    One repository
JBoss                                               configuration!

                                          Nexus             Group


 Dev                                                 Unified indices
                                                        for m2e


 Test


                     Production
            QA                                                          Precious
                                                                       Developers
                                   Corporate Ecosystem
Maven Central




   Nexus
Nexus Professional
Maven site support
Maven settings.xml provisioning
Enterprise LDAP integration: multi server support with caching
Eclipse update site & OSGi support
Staging & Promotion
Atlassian Crowd integration
License, compliance and governance support
Tycho        NAR



    s-b-p        OSGi



    PAX       FlexMojos   Maven             M2Eclipse   Maven



                                                          P2

Groovy      Maven Shell   Hudson             Nexus

                                                         GEM


             Polyglot
Ruby                       Git               Proviso     OBR
              Maven




Scala         Clojure

                                                        EC2
                            vCloud



                                     Zeus
Provisioning Problem
Runtime provisioning solutions are generally created in an ad hoc fashion in much the same way that build
infrastructures are created. Proviso is an attempt to provide structure and patterns for developing, building,
testing, and provisioning runtimes
We need to reason not only about runtimes assembled statically, but we need to be able to modify live
systems. In-situ operation is a requirement.
Proviso focuses on Java Runtimes
We are trying to deal with more popular runtimes like Tomcat, Jetty, JBoss, and Equinox
We are not limited to dealing with these specific runtimes, the patterns that we are developing will work for
any Java runtime but we are focusing concretely on the products that we work with an develop first:
  Nexus
  Hudson
No external resource provisioning
No database provisioning (yet)
No database schema changes (yet)
No LDAP provisioning (yet)
*
             CAR




         *
                     Runtime
Recipe       ITAR
                    Assembler




         1

             BAR
Recipes
We have tried to stay simple for now and use a Maven POM to describe the constituent BAR, ITARs, and
CARs
We initially tried to make an external format, but we found that a Maven POM was easier in the short term
because we need to integrate the recipes as part of the build. When the BAR, ITARs, and CARs are stated as
normal Maven dependencies then it’s much easier to integrate in a Maven multi-module build
We would ideally like to have an external format (i.e. not a POM) and ultimately we would like to create a
DSL for describing the recipes and some of the constraints for a particular runtime (i.e. the required and
provided capabilities - memory constraints, number of cores...)
We will likely borrow some ideas from Puppet
Runtime Assembler
We need to be able to take a recipe and create the runtime. But it’s not as simple as just assembling a bunch
of artifacts, resources and configurations
We need to be able to accommodate making and working with runtimes in a few different scenarios:
  Build time assembly
  Dynamic run time assembly
  During development
Assuming a common ITAR structure which really means a standard binary runtime structure
Assuming a common CAR structure which really means a standard configuration system
Assuming a canonical artifact store which can reliably provide locked down, yet mutable, set of artifacts
Eclipse P2 for provisioning
P2 is a very advanced provisioning system Java
P2 is the basis of the update manager in Eclipse since 3.4
P2 is repository type agnostic so we can use P2 for any Java runtime
P2 is very pluggable with concepts of touchpoints and actions
P2 uses SAT4J which is the boolean solver that won the Mancoosi solver competition
Suck less.
Use Maven.
Questions?

Mais conteúdo relacionado

Mais procurados

Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010
Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010
Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010Arun Gupta
 
Keith Larson Replication
Keith Larson ReplicationKeith Larson Replication
Keith Larson ReplicationDave Stokes
 
Cloud Foundry Open Tour - London
Cloud Foundry Open Tour - LondonCloud Foundry Open Tour - London
Cloud Foundry Open Tour - Londonmarklucovsky
 
OSGi & Java EE in GlassFish @ Silicon Valley Code Camp 2010
OSGi & Java EE in GlassFish @ Silicon Valley Code Camp 2010OSGi & Java EE in GlassFish @ Silicon Valley Code Camp 2010
OSGi & Java EE in GlassFish @ Silicon Valley Code Camp 2010Arun Gupta
 
Creating Quick and Powerful Web applications with Oracle, GlassFish and NetBe...
Creating Quick and Powerful Web applications with Oracle, GlassFish and NetBe...Creating Quick and Powerful Web applications with Oracle, GlassFish and NetBe...
Creating Quick and Powerful Web applications with Oracle, GlassFish and NetBe...Arun Gupta
 
From Ant to Maven to Gradle a tale of CI tools for JVM
From Ant to Maven to Gradle a tale of CI tools for JVMFrom Ant to Maven to Gradle a tale of CI tools for JVM
From Ant to Maven to Gradle a tale of CI tools for JVMBucharest Java User Group
 
Nuxeo World Session: Nuxeo Distributions
Nuxeo World Session: Nuxeo DistributionsNuxeo World Session: Nuxeo Distributions
Nuxeo World Session: Nuxeo DistributionsNuxeo
 
Squeeze more juice from jenkins
Squeeze more juice from jenkinsSqueeze more juice from jenkins
Squeeze more juice from jenkinsCloudBees
 
Nuxeo on the Cloud - Nuxeo World 2011
Nuxeo on the Cloud - Nuxeo World 2011Nuxeo on the Cloud - Nuxeo World 2011
Nuxeo on the Cloud - Nuxeo World 2011Stefane Fermigier
 
Apache MyFaces 1.2 Web Application Development
Apache MyFaces 1.2 Web Application DevelopmentApache MyFaces 1.2 Web Application Development
Apache MyFaces 1.2 Web Application DevelopmentBart Kummel
 
The Java EE 7 Platform: Developing for the Cloud (FISL 12)
The Java EE 7 Platform: Developing for the Cloud  (FISL 12)The Java EE 7 Platform: Developing for the Cloud  (FISL 12)
The Java EE 7 Platform: Developing for the Cloud (FISL 12)Arun Gupta
 
Open Source Licenses and Tools
Open Source Licenses and ToolsOpen Source Licenses and Tools
Open Source Licenses and Toolsg2ix
 
Softchoice Webinar Series: VMware vSphere 5.1 Changes
Softchoice Webinar Series: VMware vSphere 5.1 ChangesSoftchoice Webinar Series: VMware vSphere 5.1 Changes
Softchoice Webinar Series: VMware vSphere 5.1 ChangesSoftchoice Corporation
 
Stairway to heaven webinar
Stairway to heaven webinarStairway to heaven webinar
Stairway to heaven webinarCloudBees
 
GlassFish 3.1 at JCertif 2011
GlassFish 3.1 at JCertif 2011GlassFish 3.1 at JCertif 2011
GlassFish 3.1 at JCertif 2011Arun Gupta
 
Chisimba - introduction to practical demo
Chisimba - introduction to practical demoChisimba - introduction to practical demo
Chisimba - introduction to practical demoDerek Keats
 
VMware PEX Boot Camp - Reaching the Clouds with NetApp Integrations with VMwa...
VMware PEX Boot Camp - Reaching the Clouds with NetApp Integrations with VMwa...VMware PEX Boot Camp - Reaching the Clouds with NetApp Integrations with VMwa...
VMware PEX Boot Camp - Reaching the Clouds with NetApp Integrations with VMwa...NetApp
 
Solution Architecture for Mailbox Archiving 5,000 Seat Environment
Solution Architecture for Mailbox Archiving 5,000 Seat EnvironmentSolution Architecture for Mailbox Archiving 5,000 Seat Environment
Solution Architecture for Mailbox Archiving 5,000 Seat EnvironmentCorporate Technologies
 

Mais procurados (20)

Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010
Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010
Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010
 
Keith Larson Replication
Keith Larson ReplicationKeith Larson Replication
Keith Larson Replication
 
Cloud Foundry Open Tour - London
Cloud Foundry Open Tour - LondonCloud Foundry Open Tour - London
Cloud Foundry Open Tour - London
 
OSGi & Java EE in GlassFish @ Silicon Valley Code Camp 2010
OSGi & Java EE in GlassFish @ Silicon Valley Code Camp 2010OSGi & Java EE in GlassFish @ Silicon Valley Code Camp 2010
OSGi & Java EE in GlassFish @ Silicon Valley Code Camp 2010
 
Creating Quick and Powerful Web applications with Oracle, GlassFish and NetBe...
Creating Quick and Powerful Web applications with Oracle, GlassFish and NetBe...Creating Quick and Powerful Web applications with Oracle, GlassFish and NetBe...
Creating Quick and Powerful Web applications with Oracle, GlassFish and NetBe...
 
From Ant to Maven to Gradle a tale of CI tools for JVM
From Ant to Maven to Gradle a tale of CI tools for JVMFrom Ant to Maven to Gradle a tale of CI tools for JVM
From Ant to Maven to Gradle a tale of CI tools for JVM
 
Nuxeo World Session: Nuxeo Distributions
Nuxeo World Session: Nuxeo DistributionsNuxeo World Session: Nuxeo Distributions
Nuxeo World Session: Nuxeo Distributions
 
Squeeze more juice from jenkins
Squeeze more juice from jenkinsSqueeze more juice from jenkins
Squeeze more juice from jenkins
 
Nuxeo on the Cloud - Nuxeo World 2011
Nuxeo on the Cloud - Nuxeo World 2011Nuxeo on the Cloud - Nuxeo World 2011
Nuxeo on the Cloud - Nuxeo World 2011
 
Apache MyFaces 1.2 Web Application Development
Apache MyFaces 1.2 Web Application DevelopmentApache MyFaces 1.2 Web Application Development
Apache MyFaces 1.2 Web Application Development
 
The Java EE 7 Platform: Developing for the Cloud (FISL 12)
The Java EE 7 Platform: Developing for the Cloud  (FISL 12)The Java EE 7 Platform: Developing for the Cloud  (FISL 12)
The Java EE 7 Platform: Developing for the Cloud (FISL 12)
 
Open Source Licenses and Tools
Open Source Licenses and ToolsOpen Source Licenses and Tools
Open Source Licenses and Tools
 
Softchoice Webinar Series: VMware vSphere 5.1 Changes
Softchoice Webinar Series: VMware vSphere 5.1 ChangesSoftchoice Webinar Series: VMware vSphere 5.1 Changes
Softchoice Webinar Series: VMware vSphere 5.1 Changes
 
Stairway to heaven webinar
Stairway to heaven webinarStairway to heaven webinar
Stairway to heaven webinar
 
Orange is v cops
Orange is v copsOrange is v cops
Orange is v cops
 
GlassFish 3.1 at JCertif 2011
GlassFish 3.1 at JCertif 2011GlassFish 3.1 at JCertif 2011
GlassFish 3.1 at JCertif 2011
 
Chisimba - introduction to practical demo
Chisimba - introduction to practical demoChisimba - introduction to practical demo
Chisimba - introduction to practical demo
 
VMware PEX Boot Camp - Reaching the Clouds with NetApp Integrations with VMwa...
VMware PEX Boot Camp - Reaching the Clouds with NetApp Integrations with VMwa...VMware PEX Boot Camp - Reaching the Clouds with NetApp Integrations with VMwa...
VMware PEX Boot Camp - Reaching the Clouds with NetApp Integrations with VMwa...
 
Solution Architecture for Mailbox Archiving 5,000 Seat Environment
Solution Architecture for Mailbox Archiving 5,000 Seat EnvironmentSolution Architecture for Mailbox Archiving 5,000 Seat Environment
Solution Architecture for Mailbox Archiving 5,000 Seat Environment
 
Introducing JSR-283
Introducing JSR-283Introducing JSR-283
Introducing JSR-283
 

Semelhante a Next Generation Development Infrastructure with the Maven Enterprise Stack

Accelerate your PaaS to the Mobile World: Silicon Valley Code Camp 2012
Accelerate your PaaS to the Mobile World: Silicon Valley Code Camp 2012Accelerate your PaaS to the Mobile World: Silicon Valley Code Camp 2012
Accelerate your PaaS to the Mobile World: Silicon Valley Code Camp 2012CloudBees
 
Iam New And Noteworthy
Iam New And NoteworthyIam New And Noteworthy
Iam New And NoteworthyAbel Muíño
 
Hyper-V VMM ile Cloud computing
Hyper-V VMM ile Cloud computingHyper-V VMM ile Cloud computing
Hyper-V VMM ile Cloud computingAhmet Mutlu
 
Successful PaaS and CI in the Cloud - EclipseCon 2012
Successful PaaS and CI in the Cloud - EclipseCon 2012Successful PaaS and CI in the Cloud - EclipseCon 2012
Successful PaaS and CI in the Cloud - EclipseCon 2012CloudBees
 
Java 9 and the impact on Maven Projects (Devoxx 2016)
Java 9 and the impact on Maven Projects (Devoxx 2016)Java 9 and the impact on Maven Projects (Devoxx 2016)
Java 9 and the impact on Maven Projects (Devoxx 2016)Robert Scholte
 
Automated Deployment with Maven - going the whole nine yards
Automated Deployment with Maven - going the whole nine yardsAutomated Deployment with Maven - going the whole nine yards
Automated Deployment with Maven - going the whole nine yardsJohn Ferguson Smart Limited
 
Azure Container Service
Azure Container ServiceAzure Container Service
Azure Container ServiceDataArt
 
Introduction to Backbone.js
Introduction to Backbone.jsIntroduction to Backbone.js
Introduction to Backbone.jsJonathan Weiss
 
Optimising Productivity with AWS Developer Tools
Optimising Productivity with AWS Developer ToolsOptimising Productivity with AWS Developer Tools
Optimising Productivity with AWS Developer ToolsAmazon Web Services
 
An Introduction to Maven
An Introduction to MavenAn Introduction to Maven
An Introduction to MavenVadym Lotar
 
Cloud Foundry Container Runtimeで快適Kubernetes運用
Cloud Foundry Container Runtimeで快適Kubernetes運用Cloud Foundry Container Runtimeで快適Kubernetes運用
Cloud Foundry Container Runtimeで快適Kubernetes運用Kazuto Kusama
 
Maven 2 features
Maven 2 featuresMaven 2 features
Maven 2 featuresAngel Ruiz
 
Building a Large Java Codebase with Bazel - Natan Silnitsky
Building a Large Java Codebase with Bazel - Natan Silnitsky Building a Large Java Codebase with Bazel - Natan Silnitsky
Building a Large Java Codebase with Bazel - Natan Silnitsky Wix Engineering
 
Continuous Delivery with Grails and CloudBees
Continuous Delivery with Grails and CloudBeesContinuous Delivery with Grails and CloudBees
Continuous Delivery with Grails and CloudBeesMarco Vermeulen
 

Semelhante a Next Generation Development Infrastructure with the Maven Enterprise Stack (20)

Maven 3.0 by jason - fossa2010
Maven 3.0 by jason - fossa2010Maven 3.0 by jason - fossa2010
Maven 3.0 by jason - fossa2010
 
Accelerate your PaaS to the Mobile World: Silicon Valley Code Camp 2012
Accelerate your PaaS to the Mobile World: Silicon Valley Code Camp 2012Accelerate your PaaS to the Mobile World: Silicon Valley Code Camp 2012
Accelerate your PaaS to the Mobile World: Silicon Valley Code Camp 2012
 
Project Apash
Project ApashProject Apash
Project Apash
 
Iam New And Noteworthy
Iam New And NoteworthyIam New And Noteworthy
Iam New And Noteworthy
 
Hyper-V VMM ile Cloud computing
Hyper-V VMM ile Cloud computingHyper-V VMM ile Cloud computing
Hyper-V VMM ile Cloud computing
 
Successful PaaS and CI in the Cloud - EclipseCon 2012
Successful PaaS and CI in the Cloud - EclipseCon 2012Successful PaaS and CI in the Cloud - EclipseCon 2012
Successful PaaS and CI in the Cloud - EclipseCon 2012
 
Apache maven 2 overview
Apache maven 2 overviewApache maven 2 overview
Apache maven 2 overview
 
Java 9 and the impact on Maven Projects (Devoxx 2016)
Java 9 and the impact on Maven Projects (Devoxx 2016)Java 9 and the impact on Maven Projects (Devoxx 2016)
Java 9 and the impact on Maven Projects (Devoxx 2016)
 
Microservices in Java
Microservices in JavaMicroservices in Java
Microservices in Java
 
Automated Deployment with Maven - going the whole nine yards
Automated Deployment with Maven - going the whole nine yardsAutomated Deployment with Maven - going the whole nine yards
Automated Deployment with Maven - going the whole nine yards
 
Azure Container Service
Azure Container ServiceAzure Container Service
Azure Container Service
 
Introduction to Backbone.js
Introduction to Backbone.jsIntroduction to Backbone.js
Introduction to Backbone.js
 
Optimising Productivity with AWS Developer Tools
Optimising Productivity with AWS Developer ToolsOptimising Productivity with AWS Developer Tools
Optimising Productivity with AWS Developer Tools
 
An Introduction to Maven
An Introduction to MavenAn Introduction to Maven
An Introduction to Maven
 
Cloud Foundry Container Runtimeで快適Kubernetes運用
Cloud Foundry Container Runtimeで快適Kubernetes運用Cloud Foundry Container Runtimeで快適Kubernetes運用
Cloud Foundry Container Runtimeで快適Kubernetes運用
 
Crx 2.2 Deep-Dive
Crx 2.2 Deep-DiveCrx 2.2 Deep-Dive
Crx 2.2 Deep-Dive
 
Maven 3 New Features
Maven 3 New FeaturesMaven 3 New Features
Maven 3 New Features
 
Maven 2 features
Maven 2 featuresMaven 2 features
Maven 2 features
 
Building a Large Java Codebase with Bazel - Natan Silnitsky
Building a Large Java Codebase with Bazel - Natan Silnitsky Building a Large Java Codebase with Bazel - Natan Silnitsky
Building a Large Java Codebase with Bazel - Natan Silnitsky
 
Continuous Delivery with Grails and CloudBees
Continuous Delivery with Grails and CloudBeesContinuous Delivery with Grails and CloudBees
Continuous Delivery with Grails and CloudBees
 

Último

Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
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
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
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
 

Último (20)

Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
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
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
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
 

Next Generation Development Infrastructure with the Maven Enterprise Stack

  • 1. Next Generation Development Infrastructure with the Maven Enterprise Stack Jason van Zyl SONATYPE http://twitter.com/jvanzyl
  • 2. Maven Enterprise Stack Organizations want complete business solutions for their Maven-based software development. A complete solutions starts with initiating, or onboarding, developers and ends with provisioning an application to production. A Maven-based software development is component-centric. Maven describes components, creates components, distributes components, and consumes components. Everything in Maven is about the production, use, and movement of components. Why? The ROI is in the first day of use. From the Eclipse onboarding alone. Sonatype is the organization that understands Maven-based development best Early adopter save enormously and get to participate in the design of the stack
  • 3. The Evolution of ‘Making Things’ Ad hoc Structure Text Ad hoc Automobile Manufacturing Circa 1923 Structured Automobile Manufacturing Circa 2010 1923: 108 independent Automobile Manufacturers in the US Alone http://en.wikipedia.org/wiki/List_of_defunct_United_States_automobile_manufacturers
  • 4. Maven Central Unique IPs / Month in 2009 700,000 667,708 646,600 588,141 557,734 525,000 514,924 512,165 514,589 502,899 470,237 475,643 362,893 350,000 315,970 Maven is the de facto component distribution infrastructure for Java projects 175,000 Maven Central is the de facto store house of all Open Source Java components: 300M hits/month 0 Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 2008 Total Unique IPs: 1,836,709 2009 Total Unique IPs: 3,978,964
  • 5. Maven Enterprise Stack: A complete business solution for Maven-based development Developer checks in source code Hudson checks out source code M2Eclipse 2 SCM 3 Hudson Binary dependencies Developer requests binary are delivered to the 4 Hudson instructs Maven dependencies from Nexus 1 developers workspace to perform the automated build Nexus 5 Maven Maven deploys built Proviso requests updates artifacts to Nexus to runtime components from Nexus 6 Nexus sends components updates to Proviso Maven Central Agent Proviso 7 Agent Agent Proviso provisions components to the cloud runtime
  • 6. Tycho NAR s-b-p OSGi PAX FlexMojos Maven M2Eclipse Maven P2 Groovy Maven Shell Hudson Nexus GEM Polyglot Ruby Git Proviso OBR Maven Scala Clojure EC2 vCloud Zeus
  • 7. Responding to invitations for improvement
  • 8. Maven 3.0 Fully backward compatible: from the CLI perspective Maven 3.0 should be a drop-in replacement for Maven 2.x Overhaul for embedding, in particular looking at M2Eclipse, Hudson & Nexus Plugin API enhancements for incremental builds Parallel execution Parallel downloads Separation of the artifact resolution layer (and eventual integration with P2)
  • 9. Maven 3.0 Fully backward compatible: from the CLI perspective Maven 3.0 should be a drop-in replacement for Maven 2.x Overhaul for embedding, in particular looking at M2Eclipse, Hudson & Nexus Plugin API enhancements for incremental builds Parallel execution Parallel downloads Separation of the artifact resolution layer (and eventual integration with P2) Maven 3.0-beta-1: Only 3 issues left!
  • 10. Tycho Build Tycho attempts to be a complete replacement for PDE headless build, Buckminster, and everything else that attempts to build OSGi bundles and Eclipse plugins in a MANIFEST.MF- first way. Tycho already uses Eclipse/OSGi metadata to resolve project dependencies by OSGi rules and injects these dependencies into maven project model dynamically, at build time. Tycho uses JDT to make sure modularity rules are applied. Tycho uses the OSGi state resolver is used to make sure the resolution that occurs during build-time matches what you will need at runtime. Tycho supports bundles, fragments, features and update sites, as well as RCP applications. Tycho knows how to run JUnit test plugins using the OSGi runtime. Tycho has support for P2 repositories, Update Sites and Maven repositories. Tycho supports POM-first OSGi bundles. M2Eclipse has support for importing Tycho projects as Eclipse PDE projects.
  • 11. Maven Enterprise Stack Architecture & Tooling P2 Maven OBR M2Eclipse JSR330 Tycho Central PDE Guice P2 Tycho Eclipse Tycho Build Tycho DM Peaberry Tycho Maven 3 Server PAX Tycho Tools Tycho Runtime Shiro Tycho DM m-b-p Wink Equinox Runtime Enunciate Assembler Proviso Nexus Hudson
  • 12. NAR: AOL Classifier AOL Classifier specifies where the NAR file was created and where it will work: Architecture i386, x86, amd64, ppc, sparc, … Operating System Windows, Linux, MacOSX, SunOS, … Linker g++, gcc, msvc, CC, icc, icpc Examples: x86-Windows-msvc, x86-Windows-g++ i386-Linux-g++, i386-Linux-icpc, amd64-Linux-g++ ppc-MacOSX-g++, i386-MacOSX-g++ sparc-SunOS-CC
  • 15. Tycho NAR s-b-p OSGi PAX FlexMojos Maven M2Eclipse Maven P2 Groovy Maven Shell Hudson Nexus GEM Polyglot Ruby Git Proviso OBR Maven Scala Clojure EC2 vCloud Zeus
  • 16. Hudson for Maven 1.0 Advanced Maven 3.x support REST integration using Apache Wink Advanced inter-server communication like Nexus or Hudson with Hudson slaves Shiro integration to provide the same security infrastructure as Multi-platform smoke testing: check a canonical build before firing builds on slaves 1.1 Workflow integration for long-lived release processes Automated build promotion based on long-lived release processes
  • 17. Tycho NAR s-b-p OSGi PAX FlexMojos Maven M2Eclipse Maven P2 Groovy Maven Shell Hudson Nexus GEM Polyglot Ruby Git Proviso OBR Maven Scala Clojure EC2 vCloud Zeus
  • 18. M2Eclipse Configuration Framework Turn Maven mumbo-jumbo into Eclipse talk Automation & Maven WTP m2eclipse + configuration AJDT JDT framework Flex Turn Eclipse mumbo-jumbo Humans & Eclipse into Maven talk
  • 19. M2Eclipse Configuration Framework Turn Maven mumbo-jumbo into Eclipse talk Automation & Maven WTP m2eclipse + configuration AJDT JDT framework Flex Turn Eclipse mumbo-jumbo Humans & Eclipse into Maven talk
  • 20.
  • 21. Maven Studio for Eclipse (Commercial) 1.0 Developer onboarding -- Huge! The ROI is the first day used! Integration with Adobe’s Flex/FlashBuilder Integration with Polarion’s Subversive to provide enterprise Subversion support Integration with Hudson through an optimized REST interface Sonatype has created Integration with Maven Archetype which optimizes creating and managing custom archetypes Integration with Tomcat for rapid hot re-deploy for accelerated webapp development Integration with Confluence Integration with JIRA for time tracking 1.1 Integration with JRebel Integration with Nexus to be governance & compliance aware from project initialization Integration with GWT
  • 22. Tycho NAR s-b-p OSGi PAX FlexMojos Maven M2Eclipse Maven P2 Groovy Maven Shell Hudson Nexus GEM Polyglot Ruby Git Proviso OBR Maven Scala Clojure EC2 vCloud Zeus
  • 23. Configuration management Open Source Ecosystem Terracotta Codehaus - bad POMs - repositories in POMs (bad practice) - mixed snapshot and release repositories Apache - incorrect optional dependencies One repository JBoss configuration! Nexus Group Dev Unified indices for m2e Test Production QA Precious Developers Corporate Ecosystem
  • 24. Maven Central Nexus
  • 25. Nexus Professional Maven site support Maven settings.xml provisioning Enterprise LDAP integration: multi server support with caching Eclipse update site & OSGi support Staging & Promotion Atlassian Crowd integration License, compliance and governance support
  • 26. Tycho NAR s-b-p OSGi PAX FlexMojos Maven M2Eclipse Maven P2 Groovy Maven Shell Hudson Nexus GEM Polyglot Ruby Git Proviso OBR Maven Scala Clojure EC2 vCloud Zeus
  • 27. Provisioning Problem Runtime provisioning solutions are generally created in an ad hoc fashion in much the same way that build infrastructures are created. Proviso is an attempt to provide structure and patterns for developing, building, testing, and provisioning runtimes We need to reason not only about runtimes assembled statically, but we need to be able to modify live systems. In-situ operation is a requirement.
  • 28. Proviso focuses on Java Runtimes We are trying to deal with more popular runtimes like Tomcat, Jetty, JBoss, and Equinox We are not limited to dealing with these specific runtimes, the patterns that we are developing will work for any Java runtime but we are focusing concretely on the products that we work with an develop first: Nexus Hudson
  • 29. No external resource provisioning No database provisioning (yet) No database schema changes (yet) No LDAP provisioning (yet)
  • 30. * CAR * Runtime Recipe ITAR Assembler 1 BAR
  • 31. Recipes We have tried to stay simple for now and use a Maven POM to describe the constituent BAR, ITARs, and CARs We initially tried to make an external format, but we found that a Maven POM was easier in the short term because we need to integrate the recipes as part of the build. When the BAR, ITARs, and CARs are stated as normal Maven dependencies then it’s much easier to integrate in a Maven multi-module build We would ideally like to have an external format (i.e. not a POM) and ultimately we would like to create a DSL for describing the recipes and some of the constraints for a particular runtime (i.e. the required and provided capabilities - memory constraints, number of cores...) We will likely borrow some ideas from Puppet
  • 32. Runtime Assembler We need to be able to take a recipe and create the runtime. But it’s not as simple as just assembling a bunch of artifacts, resources and configurations We need to be able to accommodate making and working with runtimes in a few different scenarios: Build time assembly Dynamic run time assembly During development Assuming a common ITAR structure which really means a standard binary runtime structure Assuming a common CAR structure which really means a standard configuration system Assuming a canonical artifact store which can reliably provide locked down, yet mutable, set of artifacts
  • 33. Eclipse P2 for provisioning P2 is a very advanced provisioning system Java P2 is the basis of the update manager in Eclipse since 3.4 P2 is repository type agnostic so we can use P2 for any Java runtime P2 is very pluggable with concepts of touchpoints and actions P2 uses SAT4J which is the boolean solver that won the Mancoosi solver competition
  • 34.
  • 35.
  • 36.
  • 37.

Notas do Editor

  1. The need for a holistic solution providing whole business solutions for Maven-based development. Support from developer onboarding to provisioning software into production.
  2. Trying to lay the ground work in that Maven is the platform upon which we are building. Maven is the dominant choice, strong community and provides the distinct differentiator of creating standards upon which an ecosystem can be built.
  3. - How the parts of the stack link together and communicate - Show the REST connection
  4. Maven 3 Maven Studio for Eclipse Nexus Hudson for Maven Tycho - Build, Tools, DM, Server Hudson