SlideShare une entreprise Scribd logo
1  sur  35
Télécharger pour lire hors ligne
Maven 3.x: The Evolution of
Enterprise Java Build Infrastructures
     The Maven-related tooling youʼll be using in your
            infrastructure for years to come


                   Jason van Zyl
             http://twitter.com/jvanzyl
Agenda & Session Goals
What weʼre going to talk about and accomplish this session
                     2. Developer checks in source code        3. Hudson checks out the source code


                  M2Eclipse            2            Git             3         Hudson



                                                                                      4. Hudson instructs Maven to perform
                                                                                  4
                                   1                                                  the automated build
    1. Developer requests binary
    dependencies from Nexus


                                                  Nexus             5         Maven

                                                                    5. Maven deploys build
                           6a. Proviso requests                     artifacts to Nexus
                           updates to runtime
                           components                6
                                                          6b. Nexus sends component
                           from Nexus
                                                          updates to Proviso
      Maven Central++
       Maven Central
                                                                                              Agent
                                                  Proviso            7
                                                                                      Agent           Agent
                                             7. Proviso provisions components
                                             and configurations into the
                                             target runtime
Agenda & Session Goals
What weʼre going to talk about and accomplish this session




 To understand how Maven 3.x and
 its related tools & frameworks are
  going to help us get to that ideal
        delivery infrastructure
Updates on Maven, M2Eclipse & Tycho ...
Whatʼs going on at Sonatype & in Maven land?
• Maven 3.0-final has been released. Yay!
• Sonatype is planning features for what we would like to see in Maven 3.1
• M2Eclipse 1.0 will be released after two 4-6 week iterations or so.
   • Itʼs getting better rapidly because most of Sonatypeʼs Eclipse team is working on it.
   • We are moving M2Eclipse to the Eclipse Foundation
   • Weʼve started checking in the code at the Eclipse Foundation
• Tycho passed its project creation review at the Eclipse Foundation, has been
 provisioned, and will soon begin the parallel IP process
• MavenShell 1.0 will be released December 1st
• PolyglotMaven 1.0 will be released January 1st
• PDE replacement using Tycho hopefully demo-ready in a couple weeks
• We hope to submit our JSR-330 and REST work to the Hudson project soon &
 possibly working with Oracle to implement Maven 3.x support
Maven Central Unique IPs / Month [Aug2009 to Aug2010]
900,000

                                                                                                    832,749
                                                                                          787,939             789,814

                                                                                735,809                                           742,882
                                                                      712,863                                           723,822
                                                            698,823
                                                  667,708
675,000                                 646,600

                              588,141
                    557,734
          514,589


450,000
                                              Maven is the de facto component
                                        distribution infrastructure for Java projects

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



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



                                                                                                                                   non-Maven < 0.5%
                                  2008 Total Unique IPs: 1,836,709                                                                     RM < 7%
                                  2009 Total Unique IPs: 3,978,964
                                  2010 Total Unique IPs: 6,024,701(end of Aug)
Maven 3.1
Whatʼs going on for Maven 3.1
• POM interoperability
• Maven 3.1 Plugin API (SM --> AM)
   • JSR-330
   • Java5 annotations
   • Tight integration with M2Eclipse
   • Build avoidance
• Mixins (SM --> AM)
• Versionless parents in child POMs (SM --> AM)
• Concurrent-access local repository implementation (SM)
• Async HTTP Client connector for Aether (SM)
• Async HTTP Client Wagon (SM)
• Dynamic Extension API (SM)
• Eventing API (SM)
Sonatypeʼs Maven Plan
Rapidly innovate while being reconciled to the Apache Way

                                               MavenIDE @ Github




                                                   M2Eclipse
                         MavenShell @ Github
                                                   @ Eclipse




                           Sonatype Maven
      Apache Maven                              Tycho @ Eclipse
                              @ Github




      Apache Maven                              Polyglot Maven
                          F1     F2     F3
        @ Github                                   @ Github
A Maven-focused Hudson
Sonatype is doing a lot of work with Hudson
• JSR-330-based plugins
• REST support using Apache Wink
• Global configuration management
• Apache Shiro integration for security management and SSO
• Slave tool provisioning with Proviso (based on Eclipse p2)
• Integration with M2Eclipse (Sonatype Professional)
• Maven 3.x integration (in progress)
• Long-lived workflow using Drools Flow (research)
The Idea Development Infrastructure
Now letʼs talk about some of the underlying technologies
                     2. Developer checks in source code        3. Hudson checks out the source code


                  M2Eclipse            2            Git             3         Hudson



                                                                                      4. Hudson instructs Maven to perform
                                                                                  4
                                   1                                                  the automated build
    1. Developer requests binary
    dependencies from Nexus


                                                  Nexus             5         Maven

                                                                    5. Maven deploys build
                           6a. Proviso requests                     artifacts to Nexus
                           updates to runtime
                           components                6
                                                          6b. Nexus sends component
                           from Nexus
                                                          updates to Proviso
      Maven Central++
       Maven Central
                                                                                              Agent
                                                  Proviso            7
                                                                                      Agent           Agent
                                             7. Proviso provisions components
                                             and configurations into the
                                             target runtime
The ideal Maven-focused delivery infrastructure
What does that look like?
• Shared component & plugin model
• Shared transport system
• Shared repository API
• Enriched component metadata
• Enhanced IDE connectivity to the infrastructure
• Provisioning (I think this might have to wait until the next webinar)
Shared component model
For Sonatype this means JSR-330


         M2Eclipse        Git     Hudson




                        Nexus     Maven




                                              Agent
                        Proviso

       JSR-330                        Agent           Agent
Moving from Plexus to Guice & JSR-330
Making it all work with Guice
• Requirements
   • Absolutely no code changes for any Maven, Nexus, M2Eclipse component
   • Must support Plexusʼ classpath/resource scanning
   • Must support Plexusʼ dynamic component assembly based on discovered metadata
   • Must support Plexusʼ configuration & converter mechanism
   • When we need changes made to the runtime container, we need those changes to
   be timely
  • Support for arbitrary lifecycles
  • We need the container to be wed with OSGi -- for us the answer is Peaberry
  • Component graph proxy support: for components and configuration
  • Dynamic language support
Implications of using JSR-330
We bring some sanity to tooling
• Writing plugins in various ways for tools like Maven, Nexus, Hudson, Sonar & Eclipse
 has a great deal of mental overhead. This burden will be removed.
• The implications for development, testing and delivery are huge. They cannot be
 understated
  • Common development models: how to create JSR-330-based plugins, better
   component reuse, a common understand of infrastructure tooling
  • Common testing frameworks for JSR-330 e.g Sonatypeʼs REST/UI toolkit
  • Common provisioning models
Sisu Maven Plugin Example
Using the same component model
@Goal( "webxml" )
@Phase( GENERATE_RESOURCES )
@RequiresProject
@Threadsafe
public class GenerateWebXml extends SisuMavenMojo {
    @Inject Logger logger;

    @Inject
    private Component component;

    @Inject @Named( "${project}" )
    private MavenProject project;

    @Inject @Named( "${outputDirectory}" ) @DefaultsTo( "${project.build.directory}" )
    private File outputDirectory;

    @Inject
    private List<WebXmlAugmenter> webXmlAugmenters;

    public void execute() throws Exception {
        component.generate( project, webXmlAugmenters, outputDirectory );
    }
}
Sisu Hudson Plugin Example
Using the same component model
@Named
@Singleton
public class RestPlugin
    extends Plugin
{
    @Inject
    private Logger logger;

    private transient List<ApiProvider> providers;

    private boolean enabled = true;

    @Inject
    public RestPlugin(final List<ApiProvider> providers) {
        assert providers != null;
        this.providers = providers;

        logger.debug("Providers:");
        for (ApiProvider provider : providers) {
            logger.debug( "    {}", provider );
        }
    }
}
Sisu Nexus Plugin Example
Using the same component model
@Named
@Singleton
@Path( CapabilitiesResource.RESOURCE_URI )
@Produces( { "application/xml", "application/json" } )
@Consumes( { "application/xml", "application/json" } )
public class CapabilitiesResource
    implements Resource {
    public static final String RESOURCE_URI = "/capabilities";

    private final CapabilityConfiguration capabilitiesConfiguration;

    private final CapabilityDescriptorRegistry capabilityDescriptorRegistry;

    @Inject
    public CapabilitiesResource( CapabilityConfiguration capabilitiesConfiguration,
                         CapabilityDescriptorRegistry capabilityDescriptorRegistry )
    {
        this.capabilitiesConfiguration = capabilitiesConfiguration;
        this.capabilityDescriptorRegistry = capabilityDescriptorRegistry;

        ...
    }
}
Shared transport system
For Sonatype this means the Async HTTP Client


          M2Eclipse          Git      Hudson




                           Nexus       Maven




                                                   Agent
                           Proviso
                                           Agent           Agent
       Async HTTP Client
Shared repository API
For Sonatype this means our new Aether library


          M2Eclipse         Git         Hudson




                      1




                          Nexus     5   Maven




                            6




                                                    Agent
                          Proviso   7

        Aether                              Agent           Agent
Aether
Overhauled Repository Artifact Resolution API
• The artifact resolution code has always been relatively decoupled, but Aether is a
 completely stand-alone library and has no dependencies on Maven
• SSL support
• DAV support
• Proxies
• NTLM(v2)
• Transport
   • Weʼre using the Async HTTP client being developed by Jean-francois Arcand at
   Sonatype
• Hoping to collaborate on research with Daniel Le Berre to determine if p2 can be used
 to do Maven resolution. Ultimately we would like to merge our code into p2 and just
 use p2
Aether Resolution Example
Easy to embed and simply use as a library

public void resolve( String remoteRepository, File localRepository )
    throws DependencyCollectionException, ArtifactResolutionException
{
    Aether aether = new Aether( repoRepository, localRepository );

    AetherResult result = aether.resolve( "com.mycompany.app", "super-app", "1.0" );

    // Get the root of the resolved tree of artifacts
    //
    DependencyNode root = result.getRoot();

    // Get the list of files for the artifacts resolved
    //
    List<File> artifacts = result.getResolvedFiles();

    // Get the classpath of the artifacts resolved
    //
    String classpath = result.getResolvedClassPath();
}
Aether Install & Deploy Example
Easy to embed and simply use as a library

public void installAndDeploy( String remoteRepository, File localRepository
                              String deployRepository )
    throws InstallationException, DeploymentException
{
    Aether aether = new Aether( remoteRepository, localRepository );

    Artifact artifact =
        new DefaultArtifact( "com.mycompany", "super-core", "jar", "1.0" );
    artifact = artifact.setFile( new File( "jar-from-whatever-process.jar" ) );
    Artifact pom = new SubArtifact( artifact, null, "pom" );
    pom = pom.setFile( new File( "pom-from-whatever-process.xml" ) );

    // Install into the local repository specified
    //
    aether.install( artifact, pom );

    // Deploy to the specified deploy reposistory
    //
    aether.deploy( artifact, pom, deployRepository );
}
Enriched component metadata
What is that and how do we get it?
• First we need to clean up the way artifacts get into Maven Central
Maven Central Quality
Sonatype is working hard to clean up Maven Central
• Bullet
• Bullet       https://docs.sonatype.org/display/Repository/Home
   • Bullet
Enriched component metadata
What is that and how do we get it?
• Project relationships
   • In order to do everything we want below we need to build up a comprehensive
   graph of all the relationships between projects in Maven Central
• Project statistics
   • Project really want to know how their projects are being consumed on Maven
   Central
• Quality metadata
   • Test coverage
   • Information provided by many of the existing tools like PMD, Checkstyle, Findbugs
• Provenance metadata
   • License information
   • IP information
• Security metadata
   • Tracking vulnerabilities and determining how it affects your organization
Enhanced IDE connectivity to the infrastructure
The IDE is the cockpit for a developer and be easy to get into
• Onboarding & updating
  • Getting developers up and running quickly & helping developers update
   environments and transition to new projects
• Connectivity to
   • Maven
   • SCM
   • Hudson
   • Nexus
   • Proviso
• Connectivity to enhanced Maven Central metadata
Developer Onboarding & Updating

MSE Codebase                         Publish Lineup
Eclipse Preferences

                                       Publish Codebase
Codebase Description/Icon


                     (one or more)
Source Tree
 SCM Information
                                       Request Codebase
 Project Information
                                                       Materialize/Update
 Source Roots




MSE Lineup

  Eclipse Distribution

  Eclipse Plugins/
  Components
Nexus: Access to Archetypes
Nexus: Access to Artifacts
Nexus: Access to Plugins
Idiom: Access Wikis
Hudson: Access to Build Jobs
Hudson: Access to Build Job Details
Hudson: Direct Navigation to Test Failures
Questions & Answers

Contenu connexe

Tendances

Software Testen mit Visual Studio Lab Management
Software Testen mit Visual Studio Lab ManagementSoftware Testen mit Visual Studio Lab Management
Software Testen mit Visual Studio Lab ManagementNico Orschel
 
GR8Conf 2009. The Grails Plugin System by Graeme Rocher
GR8Conf 2009. The Grails Plugin System by Graeme RocherGR8Conf 2009. The Grails Plugin System by Graeme Rocher
GR8Conf 2009. The Grails Plugin System by Graeme RocherGR8Conf
 
Javamagazine2012,nov dec
Javamagazine2012,nov decJavamagazine2012,nov dec
Javamagazine2012,nov decMirza Adil
 
Squeeze more juice from jenkins
Squeeze more juice from jenkinsSqueeze more juice from jenkins
Squeeze more juice from jenkinsCloudBees
 
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
 
Magnolia CMS 5.0 - Architecture
Magnolia CMS 5.0 - ArchitectureMagnolia CMS 5.0 - Architecture
Magnolia CMS 5.0 - ArchitecturePhilipp Bärfuss
 
Intelligent Projects with Maven - DevFest Istanbul
Intelligent Projects with Maven - DevFest IstanbulIntelligent Projects with Maven - DevFest Istanbul
Intelligent Projects with Maven - DevFest IstanbulMert Çalışkan
 
Magnolia CMS on Jelastic
Magnolia CMS on JelasticMagnolia CMS on Jelastic
Magnolia CMS on JelasticEdgar Vonk
 
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
 
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
 
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
 

Tendances (12)

Software Testen mit Visual Studio Lab Management
Software Testen mit Visual Studio Lab ManagementSoftware Testen mit Visual Studio Lab Management
Software Testen mit Visual Studio Lab Management
 
GR8Conf 2009. The Grails Plugin System by Graeme Rocher
GR8Conf 2009. The Grails Plugin System by Graeme RocherGR8Conf 2009. The Grails Plugin System by Graeme Rocher
GR8Conf 2009. The Grails Plugin System by Graeme Rocher
 
Javamagazine2012,nov dec
Javamagazine2012,nov decJavamagazine2012,nov dec
Javamagazine2012,nov dec
 
Maven nutshell
Maven nutshellMaven nutshell
Maven nutshell
 
Squeeze more juice from jenkins
Squeeze more juice from jenkinsSqueeze more juice from jenkins
Squeeze more juice from jenkins
 
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
 
Magnolia CMS 5.0 - Architecture
Magnolia CMS 5.0 - ArchitectureMagnolia CMS 5.0 - Architecture
Magnolia CMS 5.0 - Architecture
 
Intelligent Projects with Maven - DevFest Istanbul
Intelligent Projects with Maven - DevFest IstanbulIntelligent Projects with Maven - DevFest Istanbul
Intelligent Projects with Maven - DevFest Istanbul
 
Magnolia CMS on Jelastic
Magnolia CMS on JelasticMagnolia CMS on Jelastic
Magnolia CMS on Jelastic
 
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...
 
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)
 
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
 

En vedette

Recent learning of scrum and management
Recent learning of scrum and managementRecent learning of scrum and management
Recent learning of scrum and managementJet Wang
 
REBNY NYC Benchmarking Seminar: NYSERDA Commercial Incentive Programs: Comme...
 REBNY NYC Benchmarking Seminar: NYSERDA Commercial Incentive Programs: Comme... REBNY NYC Benchmarking Seminar: NYSERDA Commercial Incentive Programs: Comme...
REBNY NYC Benchmarking Seminar: NYSERDA Commercial Incentive Programs: Comme...REBNY
 
Презентация проетка MERGE
Презентация проетка MERGEПрезентация проетка MERGE
Презентация проетка MERGECENTROCAPITAL Inc
 
Inventarios de emisiones viernes 4_11_11_web
Inventarios de emisiones viernes 4_11_11_webInventarios de emisiones viernes 4_11_11_web
Inventarios de emisiones viernes 4_11_11_webCENMA
 
Direct methods for the solution of systems of linear equations
Direct methods for the solution of systems of linear equationsDirect methods for the solution of systems of linear equations
Direct methods for the solution of systems of linear equationsNORAIMA
 
Tan sri syed mokhtar shah bin syed nor al
Tan sri syed mokhtar shah bin syed nor alTan sri syed mokhtar shah bin syed nor al
Tan sri syed mokhtar shah bin syed nor almimi
 
Applying Business Process Principles To Information Design
Applying Business Process Principles To Information DesignApplying Business Process Principles To Information Design
Applying Business Process Principles To Information Designurmiroy
 
Comprehensive capacity
Comprehensive capacityComprehensive capacity
Comprehensive capacityJet Wang
 
Nyc bid conference
Nyc bid conferenceNyc bid conference
Nyc bid conferenceREBNY
 
Wood Chips Operations Uruguay
Wood Chips Operations   UruguayWood Chips Operations   Uruguay
Wood Chips Operations UruguayGregorio
 

En vedette (20)

Interoperability in forge - fossa2010
Interoperability in forge - fossa2010Interoperability in forge - fossa2010
Interoperability in forge - fossa2010
 
Recent learning of scrum and management
Recent learning of scrum and managementRecent learning of scrum and management
Recent learning of scrum and management
 
REBNY NYC Benchmarking Seminar: NYSERDA Commercial Incentive Programs: Comme...
 REBNY NYC Benchmarking Seminar: NYSERDA Commercial Incentive Programs: Comme... REBNY NYC Benchmarking Seminar: NYSERDA Commercial Incentive Programs: Comme...
REBNY NYC Benchmarking Seminar: NYSERDA Commercial Incentive Programs: Comme...
 
Arduino oss promotion - iamthemedia - fossa2010
Arduino oss promotion - iamthemedia - fossa2010Arduino oss promotion - iamthemedia - fossa2010
Arduino oss promotion - iamthemedia - fossa2010
 
Mw kenalan
Mw kenalanMw kenalan
Mw kenalan
 
Презентация проетка MERGE
Презентация проетка MERGEПрезентация проетка MERGE
Презентация проетка MERGE
 
Choir and Community Management
Choir and Community ManagementChoir and Community Management
Choir and Community Management
 
Revolution OS -speech by Dicorinto - fossa2011
Revolution OS -speech by Dicorinto - fossa2011Revolution OS -speech by Dicorinto - fossa2011
Revolution OS -speech by Dicorinto - fossa2011
 
fOSSa 2012- heymann - motivations in oss projects
fOSSa 2012- heymann - motivations in oss projectsfOSSa 2012- heymann - motivations in oss projects
fOSSa 2012- heymann - motivations in oss projects
 
10
1010
10
 
Inventarios de emisiones viernes 4_11_11_web
Inventarios de emisiones viernes 4_11_11_webInventarios de emisiones viernes 4_11_11_web
Inventarios de emisiones viernes 4_11_11_web
 
Annual Repot AJI 2010 - The Threat from Within
Annual Repot AJI  2010 - The Threat from WithinAnnual Repot AJI  2010 - The Threat from Within
Annual Repot AJI 2010 - The Threat from Within
 
Direct methods for the solution of systems of linear equations
Direct methods for the solution of systems of linear equationsDirect methods for the solution of systems of linear equations
Direct methods for the solution of systems of linear equations
 
Tan sri syed mokhtar shah bin syed nor al
Tan sri syed mokhtar shah bin syed nor alTan sri syed mokhtar shah bin syed nor al
Tan sri syed mokhtar shah bin syed nor al
 
Applying Business Process Principles To Information Design
Applying Business Process Principles To Information DesignApplying Business Process Principles To Information Design
Applying Business Process Principles To Information Design
 
Comprehensive capacity
Comprehensive capacityComprehensive capacity
Comprehensive capacity
 
Berkah dan Kutukan Dimona
Berkah dan Kutukan DimonaBerkah dan Kutukan Dimona
Berkah dan Kutukan Dimona
 
Nyc bid conference
Nyc bid conferenceNyc bid conference
Nyc bid conference
 
Wood Chips Operations Uruguay
Wood Chips Operations   UruguayWood Chips Operations   Uruguay
Wood Chips Operations Uruguay
 
IDEA - Opportunities in the Games Industry - 15 November 2011
IDEA - Opportunities in the Games Industry  - 15 November 2011IDEA - Opportunities in the Games Industry  - 15 November 2011
IDEA - Opportunities in the Games Industry - 15 November 2011
 

Similaire à Maven 3.0 by jason - fossa2010

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
 
An Introduction to Maven
An Introduction to MavenAn Introduction to Maven
An Introduction to MavenVadym Lotar
 
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
 
Seven Simple Reasons to Use AppFuse
Seven Simple Reasons to Use AppFuseSeven Simple Reasons to Use AppFuse
Seven Simple Reasons to Use AppFuseMatt Raible
 
Apache Maven for SoftServe IT Academy
Apache Maven for SoftServe IT AcademyApache Maven for SoftServe IT Academy
Apache Maven for SoftServe IT AcademyVolodymyr Ostapiv
 
Cross-Build Injection attacks: how safe is your Java build?
Cross-Build Injection attacks: how safe is your Java build?Cross-Build Injection attacks: how safe is your Java build?
Cross-Build Injection attacks: how safe is your Java build?Sander Mak (@Sander_Mak)
 
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
 
Continuous Deployment Pipeline with maven
Continuous Deployment Pipeline with mavenContinuous Deployment Pipeline with maven
Continuous Deployment Pipeline with mavenAlan Parkinson
 
Linktech Sonatype Nexus Demo.pdf
Linktech Sonatype Nexus Demo.pdfLinktech Sonatype Nexus Demo.pdf
Linktech Sonatype Nexus Demo.pdfLinktech
 
maven build certificaton
maven build certificatonmaven build certificaton
maven build certificatonVskills
 
Continuous Delivery with Grails and CloudBees
Continuous Delivery with Grails and CloudBeesContinuous Delivery with Grails and CloudBees
Continuous Delivery with Grails and CloudBeesMarco Vermeulen
 

Similaire à Maven 3.0 by jason - fossa2010 (20)

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)
 
Apache Maven
Apache MavenApache Maven
Apache Maven
 
Project Apash
Project ApashProject Apash
Project Apash
 
An Introduction to Maven
An Introduction to MavenAn Introduction to Maven
An Introduction to Maven
 
Maven-job-support.pptx
Maven-job-support.pptxMaven-job-support.pptx
Maven-job-support.pptx
 
Maven
MavenMaven
Maven
 
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
 
Seven Simple Reasons to Use AppFuse
Seven Simple Reasons to Use AppFuseSeven Simple Reasons to Use AppFuse
Seven Simple Reasons to Use AppFuse
 
Apache Maven for SoftServe IT Academy
Apache Maven for SoftServe IT AcademyApache Maven for SoftServe IT Academy
Apache Maven for SoftServe IT Academy
 
Ant, Maven and Jenkins
Ant, Maven and JenkinsAnt, Maven and Jenkins
Ant, Maven and Jenkins
 
Maven ppt
Maven pptMaven ppt
Maven ppt
 
Cross-Build Injection attacks: how safe is your Java build?
Cross-Build Injection attacks: how safe is your Java build?Cross-Build Injection attacks: how safe is your Java build?
Cross-Build Injection attacks: how safe is your Java build?
 
Maven overview
Maven overviewMaven overview
Maven overview
 
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
 
Continuous Deployment Pipeline with maven
Continuous Deployment Pipeline with mavenContinuous Deployment Pipeline with maven
Continuous Deployment Pipeline with maven
 
Linktech Sonatype Nexus Demo.pdf
Linktech Sonatype Nexus Demo.pdfLinktech Sonatype Nexus Demo.pdf
Linktech Sonatype Nexus Demo.pdf
 
maven build certificaton
maven build certificatonmaven build certificaton
maven build certificaton
 
Apache Maven 2 Part 2
Apache Maven 2 Part 2Apache Maven 2 Part 2
Apache Maven 2 Part 2
 
Continuous Delivery with Grails and CloudBees
Continuous Delivery with Grails and CloudBeesContinuous Delivery with Grails and CloudBees
Continuous Delivery with Grails and CloudBees
 

Plus de fOSSa - Free Open Source Software Academia Conference

Plus de fOSSa - Free Open Source Software Academia Conference (20)

Les douze commandements du community manager
Les douze commandements du community managerLes douze commandements du community manager
Les douze commandements du community manager
 
Les licences open source simplement ?
Les licences open source simplement ? Les licences open source simplement ?
Les licences open source simplement ?
 
Diffuser les résultats de recherche ?
Diffuser les résultats de recherche ? Diffuser les résultats de recherche ?
Diffuser les résultats de recherche ?
 
- Protection du logiciel - **François Pelligrini**
- Protection du logiciel - **François Pelligrini** - Protection du logiciel - **François Pelligrini**
- Protection du logiciel - **François Pelligrini**
 
La valorisation de logiciels de recherche au sein de l'Inria? / Transfert ma...
La valorisation de logiciels de recherche au sein de l'Inria?  / Transfert ma...La valorisation de logiciels de recherche au sein de l'Inria?  / Transfert ma...
La valorisation de logiciels de recherche au sein de l'Inria? / Transfert ma...
 
Resultats nuit info 2013
Resultats nuit info 2013Resultats nuit info 2013
Resultats nuit info 2013
 
In trust we trust ! Blablacar by frederic mazzella
In trust we trust ! Blablacar by frederic mazzellaIn trust we trust ! Blablacar by frederic mazzella
In trust we trust ! Blablacar by frederic mazzella
 
Open sourcing of Journalism by James Corbett
Open sourcing of Journalism by James CorbettOpen sourcing of Journalism by James Corbett
Open sourcing of Journalism by James Corbett
 
Open intelligence by tom secker
Open intelligence by tom seckerOpen intelligence by tom secker
Open intelligence by tom secker
 
Eco Nomy Eco Trust Eco Systems - Introduction
Eco Nomy Eco Trust Eco Systems - IntroductionEco Nomy Eco Trust Eco Systems - Introduction
Eco Nomy Eco Trust Eco Systems - Introduction
 
Innovation & Massive data
Innovation & Massive dataInnovation & Massive data
Innovation & Massive data
 
#SAIFC késako - Semantic Analysis for Flow Computing
 #SAIFC késako - Semantic Analysis for Flow Computing #SAIFC késako - Semantic Analysis for Flow Computing
#SAIFC késako - Semantic Analysis for Flow Computing
 
Eco System over code!
Eco System over code!Eco System over code!
Eco System over code!
 
OWF2013 INTERNET OF THINGS
OWF2013 INTERNET OF THINGSOWF2013 INTERNET OF THINGS
OWF2013 INTERNET OF THINGS
 
Afup 10 ans plus tard
Afup 10 ans plus tardAfup 10 ans plus tard
Afup 10 ans plus tard
 
HP Fossology v5.3
HP Fossology v5.3HP Fossology v5.3
HP Fossology v5.3
 
Analyse de la propriete intellectuel
Analyse de la propriete intellectuelAnalyse de la propriete intellectuel
Analyse de la propriete intellectuel
 
From open source labs to ceo methods and advice by sysfera
From open source labs to ceo methods and advice by sysferaFrom open source labs to ceo methods and advice by sysfera
From open source labs to ceo methods and advice by sysfera
 
Management de communaute
Management de communauteManagement de communaute
Management de communaute
 
Methods about Open Source Governance v2.5
Methods about Open Source Governance v2.5Methods about Open Source Governance v2.5
Methods about Open Source Governance v2.5
 

Dernier

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
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
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
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
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
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
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
 
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
 
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
 

Dernier (20)

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
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
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?
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
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
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
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
 
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
 
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)
 

Maven 3.0 by jason - fossa2010

  • 1. Maven 3.x: The Evolution of Enterprise Java Build Infrastructures The Maven-related tooling youʼll be using in your infrastructure for years to come Jason van Zyl http://twitter.com/jvanzyl
  • 2. Agenda & Session Goals What weʼre going to talk about and accomplish this session 2. Developer checks in source code 3. Hudson checks out the source code M2Eclipse 2 Git 3 Hudson 4. Hudson instructs Maven to perform 4 1 the automated build 1. Developer requests binary dependencies from Nexus Nexus 5 Maven 5. Maven deploys build 6a. Proviso requests artifacts to Nexus updates to runtime components 6 6b. Nexus sends component from Nexus updates to Proviso Maven Central++ Maven Central Agent Proviso 7 Agent Agent 7. Proviso provisions components and configurations into the target runtime
  • 3. Agenda & Session Goals What weʼre going to talk about and accomplish this session To understand how Maven 3.x and its related tools & frameworks are going to help us get to that ideal delivery infrastructure
  • 4. Updates on Maven, M2Eclipse & Tycho ... Whatʼs going on at Sonatype & in Maven land? • Maven 3.0-final has been released. Yay! • Sonatype is planning features for what we would like to see in Maven 3.1 • M2Eclipse 1.0 will be released after two 4-6 week iterations or so. • Itʼs getting better rapidly because most of Sonatypeʼs Eclipse team is working on it. • We are moving M2Eclipse to the Eclipse Foundation • Weʼve started checking in the code at the Eclipse Foundation • Tycho passed its project creation review at the Eclipse Foundation, has been provisioned, and will soon begin the parallel IP process • MavenShell 1.0 will be released December 1st • PolyglotMaven 1.0 will be released January 1st • PDE replacement using Tycho hopefully demo-ready in a couple weeks • We hope to submit our JSR-330 and REST work to the Hudson project soon & possibly working with Oracle to implement Maven 3.x support
  • 5. Maven Central Unique IPs / Month [Aug2009 to Aug2010] 900,000 832,749 787,939 789,814 735,809 742,882 712,863 723,822 698,823 667,708 675,000 646,600 588,141 557,734 514,589 450,000 Maven is the de facto component distribution infrastructure for Java projects Maven Central is the de facto 225,000 store house of all Open Source Java components: ~300M hits/month 0 Aug Sep Oct Nov Dec Jan Feb Mar Apr May Jun Jul! Aug non-Maven < 0.5% 2008 Total Unique IPs: 1,836,709 RM < 7% 2009 Total Unique IPs: 3,978,964 2010 Total Unique IPs: 6,024,701(end of Aug)
  • 6. Maven 3.1 Whatʼs going on for Maven 3.1 • POM interoperability • Maven 3.1 Plugin API (SM --> AM) • JSR-330 • Java5 annotations • Tight integration with M2Eclipse • Build avoidance • Mixins (SM --> AM) • Versionless parents in child POMs (SM --> AM) • Concurrent-access local repository implementation (SM) • Async HTTP Client connector for Aether (SM) • Async HTTP Client Wagon (SM) • Dynamic Extension API (SM) • Eventing API (SM)
  • 7. Sonatypeʼs Maven Plan Rapidly innovate while being reconciled to the Apache Way MavenIDE @ Github M2Eclipse MavenShell @ Github @ Eclipse Sonatype Maven Apache Maven Tycho @ Eclipse @ Github Apache Maven Polyglot Maven F1 F2 F3 @ Github @ Github
  • 8. A Maven-focused Hudson Sonatype is doing a lot of work with Hudson • JSR-330-based plugins • REST support using Apache Wink • Global configuration management • Apache Shiro integration for security management and SSO • Slave tool provisioning with Proviso (based on Eclipse p2) • Integration with M2Eclipse (Sonatype Professional) • Maven 3.x integration (in progress) • Long-lived workflow using Drools Flow (research)
  • 9. The Idea Development Infrastructure Now letʼs talk about some of the underlying technologies 2. Developer checks in source code 3. Hudson checks out the source code M2Eclipse 2 Git 3 Hudson 4. Hudson instructs Maven to perform 4 1 the automated build 1. Developer requests binary dependencies from Nexus Nexus 5 Maven 5. Maven deploys build 6a. Proviso requests artifacts to Nexus updates to runtime components 6 6b. Nexus sends component from Nexus updates to Proviso Maven Central++ Maven Central Agent Proviso 7 Agent Agent 7. Proviso provisions components and configurations into the target runtime
  • 10. The ideal Maven-focused delivery infrastructure What does that look like? • Shared component & plugin model • Shared transport system • Shared repository API • Enriched component metadata • Enhanced IDE connectivity to the infrastructure • Provisioning (I think this might have to wait until the next webinar)
  • 11. Shared component model For Sonatype this means JSR-330 M2Eclipse Git Hudson Nexus Maven Agent Proviso JSR-330 Agent Agent
  • 12. Moving from Plexus to Guice & JSR-330 Making it all work with Guice • Requirements • Absolutely no code changes for any Maven, Nexus, M2Eclipse component • Must support Plexusʼ classpath/resource scanning • Must support Plexusʼ dynamic component assembly based on discovered metadata • Must support Plexusʼ configuration & converter mechanism • When we need changes made to the runtime container, we need those changes to be timely • Support for arbitrary lifecycles • We need the container to be wed with OSGi -- for us the answer is Peaberry • Component graph proxy support: for components and configuration • Dynamic language support
  • 13. Implications of using JSR-330 We bring some sanity to tooling • Writing plugins in various ways for tools like Maven, Nexus, Hudson, Sonar & Eclipse has a great deal of mental overhead. This burden will be removed. • The implications for development, testing and delivery are huge. They cannot be understated • Common development models: how to create JSR-330-based plugins, better component reuse, a common understand of infrastructure tooling • Common testing frameworks for JSR-330 e.g Sonatypeʼs REST/UI toolkit • Common provisioning models
  • 14. Sisu Maven Plugin Example Using the same component model @Goal( "webxml" ) @Phase( GENERATE_RESOURCES ) @RequiresProject @Threadsafe public class GenerateWebXml extends SisuMavenMojo { @Inject Logger logger; @Inject private Component component; @Inject @Named( "${project}" ) private MavenProject project; @Inject @Named( "${outputDirectory}" ) @DefaultsTo( "${project.build.directory}" ) private File outputDirectory; @Inject private List<WebXmlAugmenter> webXmlAugmenters; public void execute() throws Exception { component.generate( project, webXmlAugmenters, outputDirectory ); } }
  • 15. Sisu Hudson Plugin Example Using the same component model @Named @Singleton public class RestPlugin extends Plugin { @Inject private Logger logger; private transient List<ApiProvider> providers; private boolean enabled = true; @Inject public RestPlugin(final List<ApiProvider> providers) { assert providers != null; this.providers = providers; logger.debug("Providers:"); for (ApiProvider provider : providers) { logger.debug( " {}", provider );         }     } }
  • 16. Sisu Nexus Plugin Example Using the same component model @Named @Singleton @Path( CapabilitiesResource.RESOURCE_URI ) @Produces( { "application/xml", "application/json" } ) @Consumes( { "application/xml", "application/json" } ) public class CapabilitiesResource implements Resource { public static final String RESOURCE_URI = "/capabilities"; private final CapabilityConfiguration capabilitiesConfiguration; private final CapabilityDescriptorRegistry capabilityDescriptorRegistry; @Inject public CapabilitiesResource( CapabilityConfiguration capabilitiesConfiguration, CapabilityDescriptorRegistry capabilityDescriptorRegistry ) { this.capabilitiesConfiguration = capabilitiesConfiguration; this.capabilityDescriptorRegistry = capabilityDescriptorRegistry; ... } }
  • 17. Shared transport system For Sonatype this means the Async HTTP Client M2Eclipse Git Hudson Nexus Maven Agent Proviso Agent Agent Async HTTP Client
  • 18. Shared repository API For Sonatype this means our new Aether library M2Eclipse Git Hudson 1 Nexus 5 Maven 6 Agent Proviso 7 Aether Agent Agent
  • 19. Aether Overhauled Repository Artifact Resolution API • The artifact resolution code has always been relatively decoupled, but Aether is a completely stand-alone library and has no dependencies on Maven • SSL support • DAV support • Proxies • NTLM(v2) • Transport • Weʼre using the Async HTTP client being developed by Jean-francois Arcand at Sonatype • Hoping to collaborate on research with Daniel Le Berre to determine if p2 can be used to do Maven resolution. Ultimately we would like to merge our code into p2 and just use p2
  • 20. Aether Resolution Example Easy to embed and simply use as a library public void resolve( String remoteRepository, File localRepository ) throws DependencyCollectionException, ArtifactResolutionException { Aether aether = new Aether( repoRepository, localRepository ); AetherResult result = aether.resolve( "com.mycompany.app", "super-app", "1.0" ); // Get the root of the resolved tree of artifacts // DependencyNode root = result.getRoot(); // Get the list of files for the artifacts resolved // List<File> artifacts = result.getResolvedFiles(); // Get the classpath of the artifacts resolved // String classpath = result.getResolvedClassPath(); }
  • 21. Aether Install & Deploy Example Easy to embed and simply use as a library public void installAndDeploy( String remoteRepository, File localRepository String deployRepository ) throws InstallationException, DeploymentException { Aether aether = new Aether( remoteRepository, localRepository ); Artifact artifact = new DefaultArtifact( "com.mycompany", "super-core", "jar", "1.0" ); artifact = artifact.setFile( new File( "jar-from-whatever-process.jar" ) ); Artifact pom = new SubArtifact( artifact, null, "pom" ); pom = pom.setFile( new File( "pom-from-whatever-process.xml" ) ); // Install into the local repository specified // aether.install( artifact, pom ); // Deploy to the specified deploy reposistory // aether.deploy( artifact, pom, deployRepository ); }
  • 22. Enriched component metadata What is that and how do we get it? • First we need to clean up the way artifacts get into Maven Central
  • 23. Maven Central Quality Sonatype is working hard to clean up Maven Central • Bullet • Bullet https://docs.sonatype.org/display/Repository/Home • Bullet
  • 24.
  • 25. Enriched component metadata What is that and how do we get it? • Project relationships • In order to do everything we want below we need to build up a comprehensive graph of all the relationships between projects in Maven Central • Project statistics • Project really want to know how their projects are being consumed on Maven Central • Quality metadata • Test coverage • Information provided by many of the existing tools like PMD, Checkstyle, Findbugs • Provenance metadata • License information • IP information • Security metadata • Tracking vulnerabilities and determining how it affects your organization
  • 26. Enhanced IDE connectivity to the infrastructure The IDE is the cockpit for a developer and be easy to get into • Onboarding & updating • Getting developers up and running quickly & helping developers update environments and transition to new projects • Connectivity to • Maven • SCM • Hudson • Nexus • Proviso • Connectivity to enhanced Maven Central metadata
  • 27. Developer Onboarding & Updating MSE Codebase Publish Lineup Eclipse Preferences Publish Codebase Codebase Description/Icon (one or more) Source Tree SCM Information Request Codebase Project Information Materialize/Update Source Roots MSE Lineup Eclipse Distribution Eclipse Plugins/ Components
  • 28. Nexus: Access to Archetypes
  • 29. Nexus: Access to Artifacts
  • 30. Nexus: Access to Plugins
  • 32. Hudson: Access to Build Jobs
  • 33. Hudson: Access to Build Job Details
  • 34. Hudson: Direct Navigation to Test Failures