In order to build Atlassian Connect, we had to work around all the legacy code and architecture that made it impossible to scale P2 plugins in our hosted OnDemand platform in the first place. Learn how the Connect team jumped through flaming hoops, juggled sharp objects, and used non-existent technology not only to build Atlassian Connect, but new also tools and techniques useful to any plugin developer.
2. A P2 Plugin and a
SaaS Platform Walk
Into a Bar…
Jonathan Doklovic, Principal Developer, Atlassian
3. Stuff That Came out of Developing
Atlassian Connect That Can Help
Make Writing P2 Plugins and Even
Plain Old Java Projects Easier And
More Efficient
Jonathan Doklovic, Principal Developer, Atlassian
17. GIT Flow + Maven
K I S S YO U R S A N I T Y G O O D BY E
I want to
merge A LOT
without
conflicts!
Screw
conflicts, I
want to change
poms !
A LOT!
I want
SNAPSHOTS!
I
want to add
files to your
working
folder
I want to assume
you only have one
master branch
and commit to
source control
myself!
18. Maven JGIT Flow Plugin
• No need to install git-flow!
• No maven-release-plugin!
• Smartly manages version changes between branches!
• Full GIT Flow lifecycle / merge strategy!
• Extra “goodies” for dealing with CI
K I S S T H E M AV E N R E L E A S E P L U G I N G O O D BY E
bitbucket.org/atlassian/jgit-flow
30. Atlassian Spring Scanner
• No jar transforms!
• No runtime classpath scanning!
• Moves all component related things into java!
• Makes OSGi BND actually work!
• Compile time scanning == super fast plugin loads
K I S S T R A N S F O R M S A N D C L A S S PAT H S C A N N I N G G O O D BY E
bitbucket.org/atlassian/atlassian-spring-scanner
44. Dynamic Plugin Modules
bitbucket.org/atlassian/atlassian-pocketknife
• Modules are registered as OSGi Services!
• Complete control over module lifecycle!
• Super fast startup!
• No longer confined to what’s in atlassian-plugin.xml!
M AG I C A L M O D U L E S A P P E A R A N D D I S A P P E A R
52. json-schema Generator
• Generate json-schema from JAVA POJOs!
• Easy to use annotations!
• Schema can be validated with ANY json-schema validator!
• Plain Ol’ JAVA library can be embedded in anything
53.
54. json-schema + Maven
• Generate json-schema from JAVA POJOs!
• Easy to use annotations!
• Schema can be validated with ANY json-schema validator!
• Now embedded in a Maven plugin!
• Adds javadocs as schema descriptions!
• Compile time generation