91
Enterprise Maven Repository ...and what does it mean to you ? Max Rydahl Andersen Senior Principal Engineer Red Hat Friday 29 June 12

JBoss Enterprise Maven Repository

Embed Size (px)

DESCRIPTION

EAP 6 comes with a Maven Repository - this means that you can now easily migrate from JBoss AS 7 to EAP 6 if your project follows goodbest practices concerning use of Maven dependencies. But it is about much more than just easy migration.The best practices we applied to the use of Enterprise Maven Repository is some that many jboss.org projects could and should consider using since it allows the projects to be easily available for productization and be easy to consume by users in tools like JBoss Tools, Forge and the many Quickstarts built around the Maven best practices.In this talk I'll present how the Maven repository came to be, what concerns we wanted to address, how you as a user utilizes this maven repository best and how jboss.org projects can benefit from its best practices too.

Citation preview

Page 1: JBoss Enterprise Maven Repository

Enterprise Maven Repository...and what does it mean to you ?

Max Rydahl AndersenSenior Principal Engineer

Red Hat

Friday 29 June 12

Page 2: JBoss Enterprise Maven Repository

Friday 29 June 12

Page 3: JBoss Enterprise Maven Repository

Friday 29 June 12

Page 4: JBoss Enterprise Maven Repository

Friday 29 June 12

Page 5: JBoss Enterprise Maven Repository

Friday 29 June 12

Page 6: JBoss Enterprise Maven Repository

Friday 29 June 12

Page 7: JBoss Enterprise Maven Repository

Friday 29 June 12

Page 8: JBoss Enterprise Maven Repository

Friday 29 June 12

Page 9: JBoss Enterprise Maven Repository

Friday 29 June 12

Page 10: JBoss Enterprise Maven Repository

Friday 29 June 12

Page 11: JBoss Enterprise Maven Repository

Friday 29 June 12

Page 12: JBoss Enterprise Maven Repository

Friday 29 June 12

Page 13: JBoss Enterprise Maven Repository

Friday 29 June 12

Page 14: JBoss Enterprise Maven Repository

PlatformCandidateRelease

QualityAssurance

JBossEnterpriseMiddleware

Friday 29 June 12

Page 15: JBoss Enterprise Maven Repository

org == com

PlatformCandidateRelease

QualityAssurance

JBossEnterpriseMiddleware

Friday 29 June 12

Page 16: JBoss Enterprise Maven Repository

org ~= comorg == com

PlatformCandidateRelease

QualityAssurance

JBossEnterpriseMiddleware

Friday 29 June 12

Page 17: JBoss Enterprise Maven Repository

org ~= com org != comorg == com

PlatformCandidateRelease

QualityAssurance

JBossEnterpriseMiddleware

Friday 29 June 12

Page 18: JBoss Enterprise Maven Repository

org ~= com org != comorg == com

Path to Product ?

PlatformCandidateRelease

QualityAssurance

JBossEnterpriseMiddleware

Friday 29 June 12

Page 19: JBoss Enterprise Maven Repository

PlatformCandidateRelease

QualityAssurance

JBossEnterpriseMiddleware

Friday 29 June 12

Page 20: JBoss Enterprise Maven Repository

Documentation

Getting Started

ExamplesBooks

Support

MigrationsUpgrades

Tools/IDE

Builds

PlatformCandidateRelease

QualityAssurance

JBossEnterpriseMiddleware

Standards/Guidelines

Trainings

Friday 29 June 12

Page 21: JBoss Enterprise Maven Repository

• Pervasive Build and Dependency Management Tool

• Gives a common language to express project structure and which artifacts a project needs and which it produces

• Perfect for examples, sharing, teams, continuos integration, …

Maven

Friday 29 June 12

Page 22: JBoss Enterprise Maven Repository

What is a Maven Repository

Friday 29 June 12

Page 23: JBoss Enterprise Maven Repository

What is a Maven Repository

• A directory of artifacts (jar, doc, source, zip, etc.)

Friday 29 June 12

Page 24: JBoss Enterprise Maven Repository

What is a Maven Repository

• A directory of artifacts (jar, doc, source, zip, etc.)

• All with a unique GAV ID

Friday 29 June 12

Page 25: JBoss Enterprise Maven Repository

What is a Maven Repository

• A directory of artifacts (jar, doc, source, zip, etc.)

• All with a unique GAV ID

• Group org.richfaces.core

Friday 29 June 12

Page 26: JBoss Enterprise Maven Repository

What is a Maven Repository

• A directory of artifacts (jar, doc, source, zip, etc.)

• All with a unique GAV ID

• Group org.richfaces.core

• Artifact richfaces-api.jar

Friday 29 June 12

Page 27: JBoss Enterprise Maven Repository

What is a Maven Repository

• A directory of artifacts (jar, doc, source, zip, etc.)

• All with a unique GAV ID

• Group org.richfaces.core

• Artifact richfaces-api.jar

• Version 4.0.2

Friday 29 June 12

Page 28: JBoss Enterprise Maven Repository

What is a Maven Repository

• A directory of artifacts (jar, doc, source, zip, etc.)

• All with a unique GAV ID

• Group org.richfaces.core

• Artifact richfaces-api.jar

• Version 4.0.2

• Metadata for dependencies between artifacts

Friday 29 June 12

Page 29: JBoss Enterprise Maven Repository

How Maven Works...

<dependency> <groupId>org.richfaces.core</groupId> <artifactId>richfaces-core-api</artifactId> <version>4.0.0</version></dependency>

pom.xml:

Friday 29 June 12

Page 30: JBoss Enterprise Maven Repository

How Maven Works...

~/.m2/

<dependency> <groupId>org.richfaces.core</groupId> <artifactId>richfaces-core-api</artifactId> <version>4.0.0</version></dependency>

pom.xml:

Friday 29 June 12

Page 31: JBoss Enterprise Maven Repository

How Maven Works...

~/.m2/

<dependency> <groupId>org.richfaces.core</groupId> <artifactId>richfaces-core-api</artifactId> <version>4.0.0</version></dependency>

pom.xml:

Friday 29 June 12

Page 32: JBoss Enterprise Maven Repository

How Maven Works...Maven Central~/.m2/

<dependency> <groupId>org.richfaces.core</groupId> <artifactId>richfaces-core-api</artifactId> <version>4.0.0</version></dependency>

pom.xml:

Friday 29 June 12

Page 33: JBoss Enterprise Maven Repository

How Maven Works...Maven Central~/.m2/

<dependency> <groupId>org.richfaces.core</groupId> <artifactId>richfaces-core-api</artifactId> <version>4.0.0</version></dependency>

pom.xml:

Friday 29 June 12

Page 34: JBoss Enterprise Maven Repository

How Maven Works...Maven Central

JBoss.org

~/.m2/

<dependency> <groupId>org.richfaces.core</groupId> <artifactId>richfaces-core-api</artifactId> <version>4.0.0</version></dependency>

pom.xml:

Friday 29 June 12

Page 35: JBoss Enterprise Maven Repository

How Maven Works...Maven Central

JBoss.org

~/.m2/

<dependency> <groupId>org.richfaces.core</groupId> <artifactId>richfaces-core-api</artifactId> <version>4.0.0</version></dependency>

pom.xml:

Friday 29 June 12

Page 36: JBoss Enterprise Maven Repository

How Maven Works...Maven Central

JBoss.org

~/.m2/

<dependency> <groupId>org.richfaces.core</groupId> <artifactId>richfaces-core-api</artifactId> <version>4.0.0</version></dependency>

pom.xml:

Company X

Friday 29 June 12

Page 37: JBoss Enterprise Maven Repository

How Maven Works...Maven Central

JBoss.org

~/.m2/

<dependency> <groupId>org.richfaces.core</groupId> <artifactId>richfaces-core-api</artifactId> <version>4.0.0</version></dependency>

pom.xml:

Company X

Friday 29 June 12

Page 38: JBoss Enterprise Maven Repository

How Maven Works...Maven Central

JBoss.org

~/.m2/

<dependency> <groupId>org.richfaces.core</groupId> <artifactId>richfaces-core-api</artifactId> <version>4.0.0</version></dependency>

pom.xml:

Company X

richfaces-api.jar

Friday 29 June 12

Page 39: JBoss Enterprise Maven Repository

How Maven Works...Maven Central

JBoss.org

~/.m2/

<dependency> <groupId>org.richfaces.core</groupId> <artifactId>richfaces-core-api</artifactId> <version>4.0.0</version></dependency>

pom.xml:

Company X

richfaces-api.jarrichfaces-api.jar

Friday 29 June 12

Page 40: JBoss Enterprise Maven Repository

How Maven Works...Maven Central

JBoss.org

~/.m2/

<dependency> <groupId>org.richfaces.core</groupId> <artifactId>richfaces-core-api</artifactId> <version>4.0.0</version></dependency>

pom.xml:

Company X

richfaces-api.jarrichfaces-api.jar

richfaces-api.jar

Friday 29 June 12

Page 41: JBoss Enterprise Maven Repository

How Maven Works...Maven Central

JBoss.org

~/.m2/

<dependency> <groupId>org.richfaces.core</groupId> <artifactId>richfaces-core-api</artifactId> <version>4.0.0</version></dependency>

pom.xml:

Company X

richfaces-api.jar

Which richfaces-api.jar ?

richfaces-api.jar

richfaces-api.jar

Friday 29 June 12

Page 42: JBoss Enterprise Maven Repository

richfaces-api.jar

jsf-api.jar

Friday 29 June 12

Page 43: JBoss Enterprise Maven Repository

richfaces-api.jar

jsf-api.jar

Friday 29 June 12

Page 44: JBoss Enterprise Maven Repository

BOM POM!

<dependencyManagement> <dependencies> <dependency> <groupId>org.jboss.spec</groupId> <artifactId>jboss-javaee-6.0</artifactId> <version>3.0.0.Final</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies></dependencyManagement>

Dependency Management: <dependencies> <dependency> <groupId>javax.enterprise</groupId> <artifactId>cdi-api</artifactId> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.0.1</version> <scope>test</scope> </dependency> </dependencies>

Dependencies:

Friday 29 June 12

Page 45: JBoss Enterprise Maven Repository

Project Wolf!• Enterprise Maven Repository

• Every jar, javadoc, source, etc. available with unique GAV

• BOM POM for stacks

• Across All JBoss Enterprise Middleware

• EAP 6/WFK 2/JDG 6

• .zip distribution

• ...and...

Friday 29 June 12

Page 46: JBoss Enterprise Maven Repository

http://maven.repository.redhat.com/Friday 29 June 12

Page 47: JBoss Enterprise Maven Repository

How to use ?

• Add http://maven.repository.redhat.com/techpreview/all to ~/.m2/settings.xml

• enterprise=true on archetypes/JBoss Central

• http://jboss.org/developer

Friday 29 June 12

Page 48: JBoss Enterprise Maven Repository

How Enterprise Maven Repo Works

<dependency> <groupId>org.richfaces.core</groupId> <artifactId>richfaces-core-api</artifactId> <version>4.0.0-redhat-1</version></dependency>

pom.xml:

Friday 29 June 12

Page 49: JBoss Enterprise Maven Repository

How Enterprise Maven Repo Works

~/.m2/

<dependency> <groupId>org.richfaces.core</groupId> <artifactId>richfaces-core-api</artifactId> <version>4.0.0-redhat-1</version></dependency>

pom.xml:

Friday 29 June 12

Page 50: JBoss Enterprise Maven Repository

How Enterprise Maven Repo Works

~/.m2/

<dependency> <groupId>org.richfaces.core</groupId> <artifactId>richfaces-core-api</artifactId> <version>4.0.0-redhat-1</version></dependency>

pom.xml:

Friday 29 June 12

Page 51: JBoss Enterprise Maven Repository

How Enterprise Maven Repo Works

Maven Central

~/.m2/

<dependency> <groupId>org.richfaces.core</groupId> <artifactId>richfaces-core-api</artifactId> <version>4.0.0-redhat-1</version></dependency>

pom.xml:

Friday 29 June 12

Page 52: JBoss Enterprise Maven Repository

How Enterprise Maven Repo Works

Maven Central

~/.m2/

<dependency> <groupId>org.richfaces.core</groupId> <artifactId>richfaces-core-api</artifactId> <version>4.0.0-redhat-1</version></dependency>

pom.xml:

Friday 29 June 12

Page 53: JBoss Enterprise Maven Repository

How Enterprise Maven Repo Works

Maven Central

JBoss.org

~/.m2/

<dependency> <groupId>org.richfaces.core</groupId> <artifactId>richfaces-core-api</artifactId> <version>4.0.0-redhat-1</version></dependency>

pom.xml:

Friday 29 June 12

Page 54: JBoss Enterprise Maven Repository

How Enterprise Maven Repo Works

Maven Central

JBoss.org

~/.m2/

<dependency> <groupId>org.richfaces.core</groupId> <artifactId>richfaces-core-api</artifactId> <version>4.0.0-redhat-1</version></dependency>

pom.xml:

Friday 29 June 12

Page 55: JBoss Enterprise Maven Repository

How Enterprise Maven Repo Works

Maven Central

JBoss.org

~/.m2/

<dependency> <groupId>org.richfaces.core</groupId> <artifactId>richfaces-core-api</artifactId> <version>4.0.0-redhat-1</version></dependency>

pom.xml:

Friday 29 June 12

Page 56: JBoss Enterprise Maven Repository

How Enterprise Maven Repo Works

Maven Central

JBoss.org

~/.m2/

<dependency> <groupId>org.richfaces.core</groupId> <artifactId>richfaces-core-api</artifactId> <version>4.0.0-redhat-1</version></dependency>

pom.xml:

maven.repository.jboss.org

Friday 29 June 12

Page 57: JBoss Enterprise Maven Repository

How Enterprise Maven Repo Works

Maven Central

JBoss.org

~/.m2/

<dependency> <groupId>org.richfaces.core</groupId> <artifactId>richfaces-core-api</artifactId> <version>4.0.0-redhat-1</version></dependency>

pom.xml:

maven.repository.jboss.org

Friday 29 June 12

Page 58: JBoss Enterprise Maven Repository

How Enterprise Maven Repo Works

Maven Central

JBoss.org

~/.m2/

<dependency> <groupId>org.richfaces.core</groupId> <artifactId>richfaces-core-api</artifactId> <version>4.0.0-redhat-1</version></dependency>

pom.xml:

maven.repository.jboss.org

richfaces-api.jar

Friday 29 June 12

Page 59: JBoss Enterprise Maven Repository

How Enterprise Maven Repo Works

Maven Central

JBoss.org

~/.m2/

<dependency> <groupId>org.richfaces.core</groupId> <artifactId>richfaces-core-api</artifactId> <version>4.0.0-redhat-1</version></dependency>

pom.xml:

maven.repository.jboss.org

richfaces-api.jar

Which richfaces-api.jar ?

Friday 29 June 12

Page 60: JBoss Enterprise Maven Repository

How Enterprise Maven Repo Works

Maven Central

JBoss.org

~/.m2/

<dependency> <groupId>org.richfaces.core</groupId> <artifactId>richfaces-core-api</artifactId> <version>4.0.0-redhat-1</version></dependency>

pom.xml:

maven.repository.jboss.org

richfaces-api.jar

Which richfaces-api.jar ?

richfaces-api.jar

Friday 29 June 12

Page 61: JBoss Enterprise Maven Repository

How Enterprise Maven Repo Works

Maven Central

JBoss.org

~/.m2/

<dependency> <groupId>org.richfaces.core</groupId> <artifactId>richfaces-core-api</artifactId> <version>4.0.0-redhat-1</version></dependency>

pom.xml:

maven.repository.jboss.org

richfaces-api.jar

Which richfaces-api.jar ?

richfaces-api.jar

richfaces-api.jar

Friday 29 June 12

Page 62: JBoss Enterprise Maven Repository

How Enterprise Maven Repo Works

Maven Central

JBoss.org

~/.m2/

<dependency> <groupId>org.richfaces.core</groupId> <artifactId>richfaces-core-api</artifactId> <version>4.0.0-redhat-1</version></dependency>

pom.xml:

maven.repository.jboss.org

richfaces-api.jar

Which richfaces-api.jar ?

richfaces-api.jar

richfaces-api.jar

Friday 29 June 12

Page 63: JBoss Enterprise Maven Repository

How Enterprise Maven Repo Works

Maven Central

JBoss.org

~/.m2/

<dependency> <groupId>org.richfaces.core</groupId> <artifactId>richfaces-core-api</artifactId> <version>4.0.0-redhat-1</version></dependency>

pom.xml:

maven.repository.jboss.org

richfaces-api.jar

Which richfaces-api.jar ?

richfaces-api.jar

richfaces-api.jar

Company X

Friday 29 June 12

Page 64: JBoss Enterprise Maven Repository

Project Wolf “Rules”

1. Unique Group-Artifact-Version (GAV)

2. Community version + -redhat-<id>

• hibernate-validator-4.2.0.Final-redhat-1

• richfaces-api-4.0.0.Final-redhat-3

3. BOM POM’s for the stack(s)

Friday 29 June 12

Page 65: JBoss Enterprise Maven Repository

Friday 29 June 12

Page 66: JBoss Enterprise Maven Repository

Friday 29 June 12

Page 67: JBoss Enterprise Maven Repository

Getting in...

Friday 29 June 12

Page 68: JBoss Enterprise Maven Repository

Getting in...• CDI Enable your programming model

• Transitive Closure of Dependencies in Maven Central

• Maven Archetypes

• Provide a single BOM’s for your framework

• Create Quickstarts

• Tooling

• Path to product

• OpenShift

• Mobile

Friday 29 June 12

Page 69: JBoss Enterprise Maven Repository

Getting in...• CDI Enable your programming model

• Transitive Closure of Dependencies in Maven Central

• Maven Archetypes

• Provide a single BOM’s for your framework

• Create Quickstarts

• Tooling

• Path to product

• OpenShift

• Mobile

Friday 29 June 12

Page 70: JBoss Enterprise Maven Repository

Getting in...• CDI Enable your programming model

• Transitive Closure of Dependencies in Maven Central

• Maven Archetypes

• Provide a single BOM’s for your framework

• Create Quickstarts

• Tooling

• Path to product

• OpenShift

• Mobile

Friday 29 June 12

Page 71: JBoss Enterprise Maven Repository

What is there today ?

http://maven.repository.redhat.com

QuickStarts/Archetypes

JBoss Developer Framework

The JBoss Way

JBoss Developer Studio

Forge

Arquillian

OpenShift

Friday 29 June 12

Page 72: JBoss Enterprise Maven Repository

Friday 29 June 12

Page 73: JBoss Enterprise Maven Repository

PlatformCandidateRelease

QualityAssurance

JBossEnterpriseMiddleware

Friday 29 June 12

Page 74: JBoss Enterprise Maven Repository

Documentation

Getting Started

ExamplesBooks

Support

MigrationsUpgrades

Tools/IDE

Builds

PlatformCandidateRelease

QualityAssurance

JBossEnterpriseMiddleware

Standards/Guidelines

Trainings

Friday 29 June 12

Page 75: JBoss Enterprise Maven Repository

Documentation

Getting Started

ExamplesBooks

Support

MigrationsUpgrades

Tools/IDE

Builds

PlatformCandidateRelease

QualityAssurance

JBossEnterpriseMiddleware

Standards/Guidelines

Trainings

Friday 29 June 12

Page 76: JBoss Enterprise Maven Repository

Friday 29 June 12

Page 77: JBoss Enterprise Maven Repository

Friday 29 June 12

Page 78: JBoss Enterprise Maven Repository

Girl-1

Friday 29 June 12

Page 79: JBoss Enterprise Maven Repository

Girl-1 Girl-1-redhat-1

Friday 29 June 12

Page 80: JBoss Enterprise Maven Repository

Girl-1Girl-1-redhat-1

Friday 29 June 12

Page 81: JBoss Enterprise Maven Repository

Friday 29 June 12

Page 82: JBoss Enterprise Maven Repository

Assasin-4

Assasin-4-redhat-3

Friday 29 June 12

Page 83: JBoss Enterprise Maven Repository

Assasin-4

Assasin-4-redhat-3

Friday 29 June 12

Page 84: JBoss Enterprise Maven Repository

richfaces-api.jar

jsf-api.jar

Friday 29 June 12

Page 85: JBoss Enterprise Maven Repository

richfaces-api.jar

jsf-api.jar

BOM POMorg.jboss.spec.javaee6-3.0.0

Friday 29 June 12

Page 86: JBoss Enterprise Maven Repository

Friday 29 June 12

Page 87: JBoss Enterprise Maven Repository

Getting in...

Friday 29 June 12

Page 88: JBoss Enterprise Maven Repository

Getting in...• CDI Enable your programming model

• Transitive Closure of Dependencies in Maven Central

• Maven Archetypes

• Provide a single BOM’s for your framework

• Create Quickstarts

• Tooling

• Path to product

• OpenShift

• Mobile

Friday 29 June 12

Page 89: JBoss Enterprise Maven Repository

Getting in...• CDI Enable your programming model

• Transitive Closure of Dependencies in Maven Central

• Maven Archetypes

• Provide a single BOM’s for your framework

• Create Quickstarts

• Tooling

• Path to product

• OpenShift

• Mobile

Friday 29 June 12

Page 90: JBoss Enterprise Maven Repository

Getting in...• CDI Enable your programming model

• Transitive Closure of Dependencies in Maven Central

• Maven Archetypes

• Provide a single BOM’s for your framework

• Create Quickstarts

• Tooling

• Path to product

• OpenShift

• Mobile

Friday 29 June 12