SlideShare a Scribd company logo
You've Got Plugins in Your Plugins: Bundling Plugin Dependencies - Atlassian Summit 2012
You’ve got Plugins in your Plugins
just like chocolate and peanut butter



Jonathan Doklovic
Developer Relations, Atlassian
But I already know how to use maven
dependencies to add other jars to my
plugin’s jar!




                                  Your Mind Right Now
Using maven dependencies
to add other plugins to your
      plugin’s bundle
             WTF?
Bundling Dependent Plugins
 with your Plugin that all get
     Installed Separately
Why Is This Useful?
•• Using Common Plugin Code
   Using Common Plugin Code
Why Is This Useful?
•• Using Common Plugin Code
   Using Common Plugin Code
Why Is This Useful?
•• Using Common Plugin Code
   Using Common Plugin Code
Why Is This Useful?
•• Using Common Plugin Code
   Using Common Plugin Code
Why Is This Useful?
•• Using Common Plugin Code
   Using 3rd Party Plugin Points
Why Is This Useful?
•• Using Common Plugin Code
   Using 3rd Party Plugin Points
Why Is This Useful?
•• Using Common Plugin Code
   Using 3rd Party Plugin Points
Why Is This Useful?
•• Using Common Plugin Code
   Using 3rd Party Plugin Points
Why Is This Useful?
•• Using Common PluginPlugins
   Marketplace Enabled Code
Why Is This Useful?
•• Using Common PluginPlugins
   Marketplace Enabled Code
Why Is This Useful?
•• Using Common PluginPlugins
   Marketplace Enabled Code
Why Is This Useful?
•• Using Common PluginPlugins
   Marketplace Enabled Code
OBR
 How Do We Do This?
OSGi Bundle Repository
OBR
 How Do We Do This?
OSGi Bundle Repository
The OBR repository file is an XML-based
representation of bundle meta-data.
The goal is to provide a generic model for
describing dependencies among resources.



                                    felix.apache.org
Atlassian dOBR
• A zip file containing OBR xml and Plugin Artifacts
• Generated by AMPS/Plugin SDK
• Used by UPM to install dependencies
Atlassian dOBR
• A zip file containing OBR xml and Plugin Artifacts
• Generated by AMPS/Plugin SDK
• Used by UPM to install dependencies
Atlassian dOBR
• A zip file containing OBR xml and Plugin Artifacts
• Generated by AMPS/Plugin SDK
• Used by UPM to install dependencies
Atlassian dOBR
• A zip file containing OBR xml and Plugin Artifacts
• Generated by AMPS/Plugin SDK
• Used by UPM to install dependencies
Creating An OBR
Add Stuff to your POM.xml
<plugin>
   <groupId>com.atlassian.maven.plugins</groupId>
   <artifactId>maven-confluence-plugin</artifactId>
   ...
   <configuration>
       ...
       <instructions>
           <!-- just having this makes an OBR -->
       </instructions>
   </configuration>
</plugin>
Add Stuff to your POM.xml

<properties>
   <my.library.version>1.0</my.library.version>
   ....
</properties>
Add Stuff to your POM.xml
<dependencies>
    <dependency>
         <groupId>my.company.whatever</groupId>
         <artifactId>my-library</artifactId>
         <version>${my.library.version}</version>
         <scope>provided</scope>
    </dependency>
    ....
</dependencies>
Add Stuff to your POM.xml
   <configuration>
      ...
      <!-- Specify what to bundle in the OBR -->
      <pluginDependencies>
        <pluginDependency>
          <groupId>my.company.library</groupId>
          <artifactId>my-library</artifactId>
        </pluginDependency>
      </pluginDependencies>
      <instructions>
        <!-- Specify what package to include. -->
        <Import-Package>
          my.company.library;version="${my.library.version}"
        </Import-Package>
      </instructions>
    </configuration>
Build with SDK
• MUST use SDK 3.9+
• in ./target/ you get
 • my-plugin.jar
 • my-plugin.obr
Upload OBR to Marketplace
       instead of jar
Resources

    http://atlss.in/create-obr

 http://atlss.in/marketplace-obr
Thank you!

More Related Content

PPTX
Getting started with WordPress development
PPTX
5 Things You Shouldn't Do With A WordPress Plugin
PDF
WordPress Theme & Plugin development best practices - phpXperts seminar 2011
PPTX
ADF in action 1.2
PDF
How to Submit a plugin to WordPress.org Repository
PPTX
Play with Alfresco ADF 2.0.0 Angular
PPTX
Web components Introduction
PDF
Intro to WordPress Plugin Development
Getting started with WordPress development
5 Things You Shouldn't Do With A WordPress Plugin
WordPress Theme & Plugin development best practices - phpXperts seminar 2011
ADF in action 1.2
How to Submit a plugin to WordPress.org Repository
Play with Alfresco ADF 2.0.0 Angular
Web components Introduction
Intro to WordPress Plugin Development

What's hot (20)

PDF
Unleash the power of HTTP with ASP.NET Web API
PPTX
Rebrand WordPress Admin
PPT
Week 7 introduction to theme development
PPTX
Building the basics (WordPress Ottawa 2014)
PDF
Scalable web application architecture
PPT
Week 12 - Search Engine Optimization
PPT
Week 5 - Introduction to plug-ins and widgets
PDF
Adobe Experience Manager - 6th Edition by Cedric Huesler
PPTX
How to create your own WordPress plugin
PPT
Week 11 - Hosting and Migration
PPTX
WordPress Theme Development: Part 2
PPT
WordPress plugins
PPTX
WordPress theme development from scratch : ICT MeetUp 2013 Nepal
PDF
Behavior Driven Development with Cucumber
PPT
Week 9 - Introduction to Child Themes
PDF
Play Framework on Google App Engine - Productivity Stack
PDF
Introducing WordPress Multitenancy (Wordcamp Vegas/Orlando 2015/WPCampus)
PPT
Building and Deployment of Drupal sites with Features and Context
PPTX
Oracle APEX & PhoneGap
ODP
How I Learned to Stop Worrying and Backup WordPress
Unleash the power of HTTP with ASP.NET Web API
Rebrand WordPress Admin
Week 7 introduction to theme development
Building the basics (WordPress Ottawa 2014)
Scalable web application architecture
Week 12 - Search Engine Optimization
Week 5 - Introduction to plug-ins and widgets
Adobe Experience Manager - 6th Edition by Cedric Huesler
How to create your own WordPress plugin
Week 11 - Hosting and Migration
WordPress Theme Development: Part 2
WordPress plugins
WordPress theme development from scratch : ICT MeetUp 2013 Nepal
Behavior Driven Development with Cucumber
Week 9 - Introduction to Child Themes
Play Framework on Google App Engine - Productivity Stack
Introducing WordPress Multitenancy (Wordcamp Vegas/Orlando 2015/WPCampus)
Building and Deployment of Drupal sites with Features and Context
Oracle APEX & PhoneGap
How I Learned to Stop Worrying and Backup WordPress
Ad

Similar to You've Got Plugins in Your Plugins: Bundling Plugin Dependencies - Atlassian Summit 2012 (20)

PDF
Intelligent Projects with Maven - DevFest Istanbul
PDF
BMO - Intelligent Projects with Maven
PPTX
Installing Plug-ins
ODP
A winning combination: Plone as CMS and your favorite Python web framework as...
PPTX
A quick guide on how to work with Maven and Git
PDF
CQCON CQ Maven Methods
PDF
CQ Maven Methods
PDF
Declaring Server App Components in Pure Java
PPTX
Introduction to maven
KEY
Intro to WordPress Plugins
PDF
Google Cloud Endpointsによる API構築
PPTX
Build your android app with gradle
ODP
PDF
Continuous Deployment @ AWS Re:Invent
KEY
Expose Yourself! How to Leverage Plugin Extensibility to Delight your Users, ...
PDF
Introduction to maven, its configuration, lifecycle and relationship to JS world
PPTX
Apache Maven - eXo VN office presentation
PDF
Creating Your First WordPress Plugin
PPT
Rails Plugins 1 Plugin
PDF
WebObjects Developer Tools
Intelligent Projects with Maven - DevFest Istanbul
BMO - Intelligent Projects with Maven
Installing Plug-ins
A winning combination: Plone as CMS and your favorite Python web framework as...
A quick guide on how to work with Maven and Git
CQCON CQ Maven Methods
CQ Maven Methods
Declaring Server App Components in Pure Java
Introduction to maven
Intro to WordPress Plugins
Google Cloud Endpointsによる API構築
Build your android app with gradle
Continuous Deployment @ AWS Re:Invent
Expose Yourself! How to Leverage Plugin Extensibility to Delight your Users, ...
Introduction to maven, its configuration, lifecycle and relationship to JS world
Apache Maven - eXo VN office presentation
Creating Your First WordPress Plugin
Rails Plugins 1 Plugin
WebObjects Developer Tools
Ad

More from Atlassian (20)

PPTX
International Women's Day 2020
PDF
10 emerging trends that will unbreak your workplace in 2020
PDF
Forge App Showcase
PDF
Let's Build an Editor Macro with Forge UI
PDF
Meet the Forge Runtime
PDF
Forge UI: A New Way to Customize the Atlassian User Experience
PDF
Take Action with Forge Triggers
PDF
Observability and Troubleshooting in Forge
PDF
Trusted by Default: The Forge Security & Privacy Model
PDF
Designing Forge UI: A Story of Designing an App UI System
PDF
Forge: Under the Hood
PDF
Access to User Activities - Activity Platform APIs
PDF
Design Your Next App with the Atlassian Vendor Sketch Plugin
PDF
Tear Up Your Roadmap and Get Out of the Building
PDF
Nailing Measurement: a Framework for Measuring Metrics that Matter
PDF
Building Apps With Color Blind Users in Mind
PDF
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
PDF
Beyond Diversity: A Guide to Building Balanced Teams
PDF
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
PDF
Building Apps With Enterprise in Mind
International Women's Day 2020
10 emerging trends that will unbreak your workplace in 2020
Forge App Showcase
Let's Build an Editor Macro with Forge UI
Meet the Forge Runtime
Forge UI: A New Way to Customize the Atlassian User Experience
Take Action with Forge Triggers
Observability and Troubleshooting in Forge
Trusted by Default: The Forge Security & Privacy Model
Designing Forge UI: A Story of Designing an App UI System
Forge: Under the Hood
Access to User Activities - Activity Platform APIs
Design Your Next App with the Atlassian Vendor Sketch Plugin
Tear Up Your Roadmap and Get Out of the Building
Nailing Measurement: a Framework for Measuring Metrics that Matter
Building Apps With Color Blind Users in Mind
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Beyond Diversity: A Guide to Building Balanced Teams
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
Building Apps With Enterprise in Mind

Recently uploaded (20)

PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
cuic standard and advanced reporting.pdf
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Encapsulation_ Review paper, used for researhc scholars
PPT
Teaching material agriculture food technology
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PPTX
MYSQL Presentation for SQL database connectivity
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Machine learning based COVID-19 study performance prediction
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PDF
A comparative analysis of optical character recognition models for extracting...
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Approach and Philosophy of On baking technology
Diabetes mellitus diagnosis method based random forest with bat algorithm
cuic standard and advanced reporting.pdf
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
MIND Revenue Release Quarter 2 2025 Press Release
Encapsulation_ Review paper, used for researhc scholars
Teaching material agriculture food technology
NewMind AI Weekly Chronicles - August'25-Week II
MYSQL Presentation for SQL database connectivity
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Machine learning based COVID-19 study performance prediction
Assigned Numbers - 2025 - Bluetooth® Document
A comparative analysis of optical character recognition models for extracting...
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Network Security Unit 5.pdf for BCA BBA.
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Group 1 Presentation -Planning and Decision Making .pptx
Dropbox Q2 2025 Financial Results & Investor Presentation
Advanced methodologies resolving dimensionality complications for autism neur...
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Approach and Philosophy of On baking technology

You've Got Plugins in Your Plugins: Bundling Plugin Dependencies - Atlassian Summit 2012

  • 2. You’ve got Plugins in your Plugins just like chocolate and peanut butter Jonathan Doklovic Developer Relations, Atlassian
  • 3. But I already know how to use maven dependencies to add other jars to my plugin’s jar! Your Mind Right Now
  • 4. Using maven dependencies to add other plugins to your plugin’s bundle WTF?
  • 5. Bundling Dependent Plugins with your Plugin that all get Installed Separately
  • 6. Why Is This Useful? •• Using Common Plugin Code Using Common Plugin Code
  • 7. Why Is This Useful? •• Using Common Plugin Code Using Common Plugin Code
  • 8. Why Is This Useful? •• Using Common Plugin Code Using Common Plugin Code
  • 9. Why Is This Useful? •• Using Common Plugin Code Using Common Plugin Code
  • 10. Why Is This Useful? •• Using Common Plugin Code Using 3rd Party Plugin Points
  • 11. Why Is This Useful? •• Using Common Plugin Code Using 3rd Party Plugin Points
  • 12. Why Is This Useful? •• Using Common Plugin Code Using 3rd Party Plugin Points
  • 13. Why Is This Useful? •• Using Common Plugin Code Using 3rd Party Plugin Points
  • 14. Why Is This Useful? •• Using Common PluginPlugins Marketplace Enabled Code
  • 15. Why Is This Useful? •• Using Common PluginPlugins Marketplace Enabled Code
  • 16. Why Is This Useful? •• Using Common PluginPlugins Marketplace Enabled Code
  • 17. Why Is This Useful? •• Using Common PluginPlugins Marketplace Enabled Code
  • 18. OBR How Do We Do This? OSGi Bundle Repository
  • 19. OBR How Do We Do This? OSGi Bundle Repository
  • 20. The OBR repository file is an XML-based representation of bundle meta-data. The goal is to provide a generic model for describing dependencies among resources. felix.apache.org
  • 21. Atlassian dOBR • A zip file containing OBR xml and Plugin Artifacts • Generated by AMPS/Plugin SDK • Used by UPM to install dependencies
  • 22. Atlassian dOBR • A zip file containing OBR xml and Plugin Artifacts • Generated by AMPS/Plugin SDK • Used by UPM to install dependencies
  • 23. Atlassian dOBR • A zip file containing OBR xml and Plugin Artifacts • Generated by AMPS/Plugin SDK • Used by UPM to install dependencies
  • 24. Atlassian dOBR • A zip file containing OBR xml and Plugin Artifacts • Generated by AMPS/Plugin SDK • Used by UPM to install dependencies
  • 26. Add Stuff to your POM.xml <plugin> <groupId>com.atlassian.maven.plugins</groupId> <artifactId>maven-confluence-plugin</artifactId> ... <configuration> ... <instructions> <!-- just having this makes an OBR --> </instructions> </configuration> </plugin>
  • 27. Add Stuff to your POM.xml <properties> <my.library.version>1.0</my.library.version> .... </properties>
  • 28. Add Stuff to your POM.xml <dependencies> <dependency> <groupId>my.company.whatever</groupId> <artifactId>my-library</artifactId> <version>${my.library.version}</version> <scope>provided</scope> </dependency> .... </dependencies>
  • 29. Add Stuff to your POM.xml <configuration> ... <!-- Specify what to bundle in the OBR --> <pluginDependencies> <pluginDependency> <groupId>my.company.library</groupId> <artifactId>my-library</artifactId> </pluginDependency> </pluginDependencies> <instructions> <!-- Specify what package to include. --> <Import-Package> my.company.library;version="${my.library.version}" </Import-Package> </instructions> </configuration>
  • 30. Build with SDK • MUST use SDK 3.9+ • in ./target/ you get • my-plugin.jar • my-plugin.obr
  • 31. Upload OBR to Marketplace instead of jar
  • 32. Resources http://atlss.in/create-obr http://atlss.in/marketplace-obr

Editor's Notes

  • #2: \n
  • #3: This slide should begin your presentation\n
  • #4: \n
  • #5: \n
  • #6: \n
  • #7: Talk through plugin suite examples.\ne.g. workflow sharing plugin\n
  • #8: Talk through plugin suite examples.\ne.g. workflow sharing plugin\n
  • #9: Talk through plugin suite examples.\ne.g. workflow sharing plugin\n
  • #10: Talk through plugin suite examples.\ne.g. workflow sharing plugin\n
  • #11: \n
  • #12: \n
  • #13: \n
  • #14: \n
  • #15: \n
  • #16: \n
  • #17: \n
  • #18: \n
  • #19: \n
  • #20: \n
  • #21: This could be used for making a single statement of a few words or a sentence.\n\n
  • #22: this can be used for key ideas that you want people to tweet\n
  • #23: this can be used for key ideas that you want people to tweet\n
  • #24: this can be used for key ideas that you want people to tweet\n
  • #25: \n
  • #26: \n
  • #27: \n
  • #28: \n
  • #29: \n
  • #30: \n
  • #31: \n
  • #32: \n
  • #33: fin\n