SlideShare a Scribd company logo
Eclipse RCP outside ofEclipse RCP outside of
Eclipse IDE - Gradle to theEclipse IDE - Gradle to the
rescue!rescue!
Eclipse DemoCamp Poznań 2015
Michał Ćmil
@michalcmil
AgendaAgenda
Eclipse RCP build system
Our project
Issues
Gradle
Introduction
Sample applications
Eclipse RCP
Project experiences
Our projectOur project
e(fx)clipse + Java 8 based
Heavy usage of Eclipse technologies: EMF, ECP, Teneo,
Birt
Java EE 7 backend (WildFly)
Around 50 modules
Some code is in JavaScript (via Nashorn)
Eclipse RCP Build SystemEclipse RCP Build System
Eclipse RCP application are made
of plugins/bundles
Plugins come from update
sites defined via Target
Platform
Eclipse Plug-in Development
Environment (IDE)
Maven Tycho (headless)
Target PlatformTarget Platform
Issues with the standardIssues with the standard
aproachaproach
Unstable builds
Sharing modules between client and server
Tightly coupled with IDE
Very hard to add external dependencies
Unstable BuildsUnstable Builds
Sharing code betweenSharing code between
client and serverclient and server
Maven for server side
Eclipse Tycho + PDE for client side
Some modules were used by both...
We had to maintain 3 build system and needed two
runs of Maven on the same code to build the app
Tightly coupled with IDETightly coupled with IDE
Configuring the development environment
is a pain...
Hard to add externalHard to add external
dependenciesdependencies
Could be done better...Could be done better...
Project structure known from Maven
Tests in src/test/
Continuous integration and releasing
/src/main/java, /src/main/resources?
So... Is there any hope?So... Is there any hope?
Groovy based build tool
Maven's Conventions and
Dependency Management
Tons of defaults and
plugins
Supports Nexus,
Artifactory etc.
Ant's Flexibility
Imperative language
available in the DSL
Minimal Java BuildMinimal Java Build
apply plugin: 'java'
$gradle build
Minimal Java Build withMinimal Java Build with
Guava and JUnitGuava and JUnit
apply plugin: 'java'
repositories {
mavenCentral()
}
dependencies {
compile 'com.google.guava:guava:18.0'
testCompile 'junit:junit:4.12'
}
$gradle build
The Bridge between GradleThe Bridge between Gradle
and Eclipse RCPand Eclipse RCP
https://github.com/akhikhl/wuff
Andrey Hihlovskiy will present Wuff at Gradle Summit 12.06.2015
WuffWuff
Eclipse plugins are normal Gradle dependencies
Update Site is downloaded into a local Maven
repository
Automatically bundles non-OSGi dependencies
Manifest Generation
Runs and creates executable Eclipse applications
compile 'efxclipse-1_2:org.eclipse.e4.ui.di:+'
compile 'com.google.guava:guava:18.0'
testCompile 'junit:junit:4.12'
Minimal e(fx)clipse sampleMinimal e(fx)clipse sample
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'org.akhikhl.wuff:wuff-plugin:0.0.14'
}
}
apply plugin: 'org.akhikhl.wuff.efxclipse-app'
wuff {
selectedEclipseVersion = 'efxclipse-1.2'
}
products {
nativeLauncher = false
}
https://github.com/mcmil/wuff-skeleton
$gradle scaffold
$gradle build
$gradle run
ScaffoldingScaffolding
src
!"" main
#"" java
$ !"" pl
$ !"" cmil
$ !"" wuff
$ !"" skeleton
$ !"" SamplePart.ja
va
!"" resources
#"" Application.e4xmi
#"" css
$ !"" default.css
!"" plugin.xml
EffectEffect
Multi module sampleMulti module sample
apply plugin: 'org.akhikhl.wuff.eclipse-config'
wuff {
selectedEclipseVersion = 'efxclipse-1.2'
}
products {
nativeLauncher = false
}
project(':pl.cmil.wuff.sample.main') {
apply plugin: 'org.akhikhl.wuff.efxclipse-app'
dependencies {
compile project(':pl.cmil.wuff.sample.services')
}
}
project(':pl.cmil.wuff.sample.services') {
apply plugin: 'org.akhikhl.wuff.osgi-bundle'
dependencies {
compile 'com.google.guava:guava:18.0'
}
}
https://github.com/mcmil/wuff-efxclipse-samples
Additional featuresAdditional features
Supports Equinox, EclipseRCP, e(fx)clipse, IDE apps,
SWT Apps
Easy switching between Eclipse versions
Generating features and repositories
Automatic conversion of existing applications
Platform-specific products
https://github.com/akhikhl/wuff-sandbox
Wuff DocumentationWuff Documentation
https://github.com/akhikhl/wuff/tree/master/exampleshttps://github.com/akhikhl/wuff/wiki
Did it help?Did it help?
Stable builds
Easier for developers
Maven-like dependencies (also external - like
Guava, Jersey)
Maven-like structure and tests
Maven repositories (Maven Central, jCenter,
local Nexus)
Did it help?Did it help?
IDE independent
No tooling needed - Gradle Wrapper automatically
downloads itself on Windows/Linux
One command build for the whole application
Works great on Jenkins
gradlew build & gradlew run
It's not perfectIt's not perfect
A lot of automatics that can fail
Manifests generation and merging
Relatively long builds
client minimally 30-40s
server minimally 90s with deployment
CPU intensive (can work on multiple cores)
Speeding up the buildSpeeding up the build
Daemon
Gradle is always running
Parallel builds (module level)
New Gradle releases
Performance is a priority - biggest builds
around 4000 modules
Gradle Profiler
https://discuss.gradle.org/t/the-gradle-
roadmap/105
Speeding up the buildSpeeding up the build
IntelliJ Plugin
Starting the application straighlty from the
IDE (without using gradle)
Incremental builds for classes and resources
(gradle build not required)
https://github.com/mcmil/wuff-intellij-plugin
Buildship - AnotherBuildship - Another
approachapproach
Deep Gradle-Eclipse integration plugin
Gradle guys are building an eclipse plugin for gradle-
based projects in the Eclipse IDE...
...and they use Gradle to build it
Started 24.03.2015 - currently only snapshots available
http://www.vogella.com/tutorials/EclipseGradle/article.html
https://github.com/eclipse/buildship
SourcesSources
Wuff:
e(fx)clipse Wuff samples:
,
Gradle:
Gradle Free E-Books:
Eclipse architecture:
Buildship:
Eclipse and Gradle Tutorial:
Why Gradle:
https://github.com/akhikhl/wuff
https://github.com/mcmil/wuff-
efxclipse-samples https://github.com/mcmil/wuff-skeleton
http://gradle.org/
http://gradle.org/books/
http://www.aosabook.org/en/eclipse.html
https://github.com/eclipse/buildship
http://www.vogella.com/tutorials/
EclipseGradle/article.html
http://www.drdobbs.com/jvm/why-build-your-java-
projects-with-gradle/240168608

More Related Content

What's hot

Eclipse 2011 Hot Topics
Eclipse 2011 Hot TopicsEclipse 2011 Hot Topics
Eclipse 2011 Hot Topics
Lars Vogel
 
Vietnam qa meetup
Vietnam qa meetupVietnam qa meetup
Vietnam qa meetup
Syam Sasi
 
Continous UI testing with Espresso and Jenkins
Continous UI testing with Espresso and JenkinsContinous UI testing with Espresso and Jenkins
Continous UI testing with Espresso and Jenkins
Sylwester Madej
 
Appium Dockerization: from Scratch to Advanced Implementation - HUSTEF 2019
Appium Dockerization: from Scratch to Advanced Implementation - HUSTEF 2019Appium Dockerization: from Scratch to Advanced Implementation - HUSTEF 2019
Appium Dockerization: from Scratch to Advanced Implementation - HUSTEF 2019
Sargis Sargsyan
 
ColdFusion Components
ColdFusion ComponentsColdFusion Components
ColdFusion Components
jsmith
 
Fastlane - Automation and Continuous Delivery for iOS Apps
Fastlane - Automation and Continuous Delivery for iOS AppsFastlane - Automation and Continuous Delivery for iOS Apps
Fastlane - Automation and Continuous Delivery for iOS Apps
Sarath C
 
How React Native, Appium and me made each other shine @ContinuousDeliveryAmst...
How React Native, Appium and me made each other shine @ContinuousDeliveryAmst...How React Native, Appium and me made each other shine @ContinuousDeliveryAmst...
How React Native, Appium and me made each other shine @ContinuousDeliveryAmst...
Wim Selles
 
Springboot and camel
Springboot and camelSpringboot and camel
Springboot and camel
Deepak Kumar
 
Genymotion with Jenkins
Genymotion with JenkinsGenymotion with Jenkins
Genymotion with Jenkins
Vishal Nayak
 
Connecting Connect with Spring Boot
Connecting Connect with Spring BootConnecting Connect with Spring Boot
Connecting Connect with Spring Boot
Vincent Kok
 
How to become an Eclipse committer in 20 minutes and fork the IDE
How to become an Eclipse committer in 20 minutes and fork the IDEHow to become an Eclipse committer in 20 minutes and fork the IDE
How to become an Eclipse committer in 20 minutes and fork the IDE
Lars Vogel
 
Tips for better CI on Android
Tips for better CI on AndroidTips for better CI on Android
Tips for better CI on Android
Tomoaki Imai
 
Appium workshop technopark trivandrum
Appium workshop technopark trivandrumAppium workshop technopark trivandrum
Appium workshop technopark trivandrum
Syam Sasi
 
Introduction to Protractor
Introduction to ProtractorIntroduction to Protractor
Introduction to Protractor
Florian Fesseler
 
Automated android testing using jenkins ci
Automated android testing using jenkins ciAutomated android testing using jenkins ci
Automated android testing using jenkins ci
sveinungkb
 
No more waiting for API - Android Stub Server
No more waiting for API - Android Stub ServerNo more waiting for API - Android Stub Server
No more waiting for API - Android Stub Server
Sylwester Madej
 
Advanced automated visual testing with Selenium
Advanced automated visual testing with SeleniumAdvanced automated visual testing with Selenium
Advanced automated visual testing with Selenium
adamcarmi
 
Build Automation in Android
Build Automation in AndroidBuild Automation in Android
Build Automation in Android
Angelo Rüggeberg
 
Continuous Integration of Mobile Apps with Docker and Appium
Continuous Integration of Mobile Apps with Docker and AppiumContinuous Integration of Mobile Apps with Docker and Appium
Continuous Integration of Mobile Apps with Docker and Appium
Emergya
 
All the Laravel Things – Up & Running to Making $$
All the Laravel Things – Up & Running to Making $$All the Laravel Things – Up & Running to Making $$
All the Laravel Things – Up & Running to Making $$
Joe Ferguson
 

What's hot (20)

Eclipse 2011 Hot Topics
Eclipse 2011 Hot TopicsEclipse 2011 Hot Topics
Eclipse 2011 Hot Topics
 
Vietnam qa meetup
Vietnam qa meetupVietnam qa meetup
Vietnam qa meetup
 
Continous UI testing with Espresso and Jenkins
Continous UI testing with Espresso and JenkinsContinous UI testing with Espresso and Jenkins
Continous UI testing with Espresso and Jenkins
 
Appium Dockerization: from Scratch to Advanced Implementation - HUSTEF 2019
Appium Dockerization: from Scratch to Advanced Implementation - HUSTEF 2019Appium Dockerization: from Scratch to Advanced Implementation - HUSTEF 2019
Appium Dockerization: from Scratch to Advanced Implementation - HUSTEF 2019
 
ColdFusion Components
ColdFusion ComponentsColdFusion Components
ColdFusion Components
 
Fastlane - Automation and Continuous Delivery for iOS Apps
Fastlane - Automation and Continuous Delivery for iOS AppsFastlane - Automation and Continuous Delivery for iOS Apps
Fastlane - Automation and Continuous Delivery for iOS Apps
 
How React Native, Appium and me made each other shine @ContinuousDeliveryAmst...
How React Native, Appium and me made each other shine @ContinuousDeliveryAmst...How React Native, Appium and me made each other shine @ContinuousDeliveryAmst...
How React Native, Appium and me made each other shine @ContinuousDeliveryAmst...
 
Springboot and camel
Springboot and camelSpringboot and camel
Springboot and camel
 
Genymotion with Jenkins
Genymotion with JenkinsGenymotion with Jenkins
Genymotion with Jenkins
 
Connecting Connect with Spring Boot
Connecting Connect with Spring BootConnecting Connect with Spring Boot
Connecting Connect with Spring Boot
 
How to become an Eclipse committer in 20 minutes and fork the IDE
How to become an Eclipse committer in 20 minutes and fork the IDEHow to become an Eclipse committer in 20 minutes and fork the IDE
How to become an Eclipse committer in 20 minutes and fork the IDE
 
Tips for better CI on Android
Tips for better CI on AndroidTips for better CI on Android
Tips for better CI on Android
 
Appium workshop technopark trivandrum
Appium workshop technopark trivandrumAppium workshop technopark trivandrum
Appium workshop technopark trivandrum
 
Introduction to Protractor
Introduction to ProtractorIntroduction to Protractor
Introduction to Protractor
 
Automated android testing using jenkins ci
Automated android testing using jenkins ciAutomated android testing using jenkins ci
Automated android testing using jenkins ci
 
No more waiting for API - Android Stub Server
No more waiting for API - Android Stub ServerNo more waiting for API - Android Stub Server
No more waiting for API - Android Stub Server
 
Advanced automated visual testing with Selenium
Advanced automated visual testing with SeleniumAdvanced automated visual testing with Selenium
Advanced automated visual testing with Selenium
 
Build Automation in Android
Build Automation in AndroidBuild Automation in Android
Build Automation in Android
 
Continuous Integration of Mobile Apps with Docker and Appium
Continuous Integration of Mobile Apps with Docker and AppiumContinuous Integration of Mobile Apps with Docker and Appium
Continuous Integration of Mobile Apps with Docker and Appium
 
All the Laravel Things – Up & Running to Making $$
All the Laravel Things – Up & Running to Making $$All the Laravel Things – Up & Running to Making $$
All the Laravel Things – Up & Running to Making $$
 

Viewers also liked

Wuff: Building Eclipse Applications and Plugins with Gradle
Wuff: Building Eclipse Applications and Plugins with GradleWuff: Building Eclipse Applications and Plugins with Gradle
Wuff: Building Eclipse Applications and Plugins with Gradle
Andrey Hihlovsky
 
Eclipse Buildship JUG Hamburg
Eclipse Buildship JUG HamburgEclipse Buildship JUG Hamburg
Eclipse Buildship JUG Hamburg
simonscholz
 
Einführung in die webOS Programmierung
Einführung in die webOS ProgrammierungEinführung in die webOS Programmierung
Einführung in die webOS Programmierung
Markus Leutwyler
 
Griffon In Front Grails In Back
Griffon In Front Grails In BackGriffon In Front Grails In Back
Griffon In Front Grails In BackJim Shingler
 
Cruise control
Cruise controlCruise control
Cruise control
Rajesh Kumar
 
Build And Automation
Build And AutomationBuild And Automation
Build And Automation
Rajesh Kumar
 
Groovy 3 and the new Groovy Meta Object Protocol in examples
Groovy 3 and the new Groovy Meta Object Protocol in examplesGroovy 3 and the new Groovy Meta Object Protocol in examples
Groovy 3 and the new Groovy Meta Object Protocol in examples
GR8Conf
 
Vagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und Architekten
OPITZ CONSULTING Deutschland
 
Configuration Management
Configuration ManagementConfiguration Management
Configuration Management
Rajesh Kumar
 
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
Puppet
 
Git vs SVN - Eine vergleichende Einführung
Git vs SVN - Eine vergleichende EinführungGit vs SVN - Eine vergleichende Einführung
Git vs SVN - Eine vergleichende Einführung
Mario Müller
 
How to deploy PHP projects with docker
How to deploy PHP projects with dockerHow to deploy PHP projects with docker
How to deploy PHP projects with docker
Ruoshi Ling
 
Jenkins - Continuous Integration after Hudson, CruiseControl, and home built
Jenkins - Continuous Integration after Hudson, CruiseControl, and home builtJenkins - Continuous Integration after Hudson, CruiseControl, and home built
Jenkins - Continuous Integration after Hudson, CruiseControl, and home builtMark Waite
 
Abläufe mit PHP und Phing automatisieren
Abläufe mit PHP und Phing automatisierenAbläufe mit PHP und Phing automatisieren
Abläufe mit PHP und Phing automatisieren
Christian Münch
 

Viewers also liked (14)

Wuff: Building Eclipse Applications and Plugins with Gradle
Wuff: Building Eclipse Applications and Plugins with GradleWuff: Building Eclipse Applications and Plugins with Gradle
Wuff: Building Eclipse Applications and Plugins with Gradle
 
Eclipse Buildship JUG Hamburg
Eclipse Buildship JUG HamburgEclipse Buildship JUG Hamburg
Eclipse Buildship JUG Hamburg
 
Einführung in die webOS Programmierung
Einführung in die webOS ProgrammierungEinführung in die webOS Programmierung
Einführung in die webOS Programmierung
 
Griffon In Front Grails In Back
Griffon In Front Grails In BackGriffon In Front Grails In Back
Griffon In Front Grails In Back
 
Cruise control
Cruise controlCruise control
Cruise control
 
Build And Automation
Build And AutomationBuild And Automation
Build And Automation
 
Groovy 3 and the new Groovy Meta Object Protocol in examples
Groovy 3 and the new Groovy Meta Object Protocol in examplesGroovy 3 and the new Groovy Meta Object Protocol in examples
Groovy 3 and the new Groovy Meta Object Protocol in examples
 
Vagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und Architekten
 
Configuration Management
Configuration ManagementConfiguration Management
Configuration Management
 
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
 
Git vs SVN - Eine vergleichende Einführung
Git vs SVN - Eine vergleichende EinführungGit vs SVN - Eine vergleichende Einführung
Git vs SVN - Eine vergleichende Einführung
 
How to deploy PHP projects with docker
How to deploy PHP projects with dockerHow to deploy PHP projects with docker
How to deploy PHP projects with docker
 
Jenkins - Continuous Integration after Hudson, CruiseControl, and home built
Jenkins - Continuous Integration after Hudson, CruiseControl, and home builtJenkins - Continuous Integration after Hudson, CruiseControl, and home built
Jenkins - Continuous Integration after Hudson, CruiseControl, and home built
 
Abläufe mit PHP und Phing automatisieren
Abläufe mit PHP und Phing automatisierenAbläufe mit PHP und Phing automatisieren
Abläufe mit PHP und Phing automatisieren
 

Similar to Eclipse RCP outside of Eclipse IDE - Gradle to the rescue!

Eclipse Overview
Eclipse Overview Eclipse Overview
Eclipse Overview
Lars Vogel
 
The End of the world as we know it - AKA your last NullPointerException $1B b...
The End of the world as we know it - AKA your last NullPointerException $1B b...The End of the world as we know it - AKA your last NullPointerException $1B b...
The End of the world as we know it - AKA your last NullPointerException $1B b...
Michael Vorburger
 
OpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plans
OpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plansOpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plans
OpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plans
Michael Vorburger
 
Java Intro: Unit1. Hello World
Java Intro: Unit1. Hello WorldJava Intro: Unit1. Hello World
Java Intro: Unit1. Hello World
Yakov Fain
 
The Build System of Commercial RCP Application A Case Study
The Build System of Commercial RCP Application A Case StudyThe Build System of Commercial RCP Application A Case Study
The Build System of Commercial RCP Application A Case Study
gustavoeliano
 
Build your operator with the right tool
Build your operator with the right toolBuild your operator with the right tool
Build your operator with the right tool
Rafał Leszko
 
OpenCL Programming 101
OpenCL Programming 101OpenCL Programming 101
OpenCL Programming 101
Yoss Cohen
 
Eclipse
EclipseEclipse
Eclipse
Nicola Pedot
 
Run your Java apps on Cloud Foundry
Run your Java apps on Cloud FoundryRun your Java apps on Cloud Foundry
Run your Java apps on Cloud Foundry
Andy Piper
 
Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)
Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)
Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)
jaxLondonConference
 
Ellip Studio - Training session
Ellip Studio - Training sessionEllip Studio - Training session
Ellip Studio - Training session
terradue
 
React native
React nativeReact native
Build Your Kubernetes Operator with the Right Tool!
Build Your Kubernetes Operator with the Right Tool!Build Your Kubernetes Operator with the Right Tool!
Build Your Kubernetes Operator with the Right Tool!
Rafał Leszko
 
Introduction to JIB and Google Cloud Run
Introduction to JIB and Google Cloud RunIntroduction to JIB and Google Cloud Run
Introduction to JIB and Google Cloud Run
Saiyam Pathak
 
Whats new in Eclipse Indigo ? (@DemoCamp Grenoble 2011)
Whats new in Eclipse Indigo ? (@DemoCamp Grenoble 2011)Whats new in Eclipse Indigo ? (@DemoCamp Grenoble 2011)
Whats new in Eclipse Indigo ? (@DemoCamp Grenoble 2011)
Mickael Istria
 
Electron - cross platform desktop applications made easy
Electron - cross platform desktop applications made easyElectron - cross platform desktop applications made easy
Electron - cross platform desktop applications made easy
Ulrich Krause
 
An Introduction to Eclipse Che - Next-Gen Eclipse Java IDE
An Introduction to Eclipse Che - Next-Gen Eclipse Java IDEAn Introduction to Eclipse Che - Next-Gen Eclipse Java IDE
An Introduction to Eclipse Che - Next-Gen Eclipse Java IDE
KubeAcademy
 
Introduction to Eclipse IDE
Introduction to Eclipse IDEIntroduction to Eclipse IDE
Introduction to Eclipse IDE
Muhammad Hafiz Hasan
 
Maven: Managing Software Projects for Repeatable Results
Maven: Managing Software Projects for Repeatable ResultsMaven: Managing Software Projects for Repeatable Results
Maven: Managing Software Projects for Repeatable Results
Steve Keener
 

Similar to Eclipse RCP outside of Eclipse IDE - Gradle to the rescue! (20)

Eclipse Overview
Eclipse Overview Eclipse Overview
Eclipse Overview
 
The End of the world as we know it - AKA your last NullPointerException $1B b...
The End of the world as we know it - AKA your last NullPointerException $1B b...The End of the world as we know it - AKA your last NullPointerException $1B b...
The End of the world as we know it - AKA your last NullPointerException $1B b...
 
OpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plans
OpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plansOpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plans
OpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plans
 
Java Intro: Unit1. Hello World
Java Intro: Unit1. Hello WorldJava Intro: Unit1. Hello World
Java Intro: Unit1. Hello World
 
The Build System of Commercial RCP Application A Case Study
The Build System of Commercial RCP Application A Case StudyThe Build System of Commercial RCP Application A Case Study
The Build System of Commercial RCP Application A Case Study
 
Build your operator with the right tool
Build your operator with the right toolBuild your operator with the right tool
Build your operator with the right tool
 
OpenCL Programming 101
OpenCL Programming 101OpenCL Programming 101
OpenCL Programming 101
 
Eclipse
EclipseEclipse
Eclipse
 
Run your Java apps on Cloud Foundry
Run your Java apps on Cloud FoundryRun your Java apps on Cloud Foundry
Run your Java apps on Cloud Foundry
 
Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)
Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)
Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)
 
Ellip Studio - Training session
Ellip Studio - Training sessionEllip Studio - Training session
Ellip Studio - Training session
 
React native
React nativeReact native
React native
 
Build Your Kubernetes Operator with the Right Tool!
Build Your Kubernetes Operator with the Right Tool!Build Your Kubernetes Operator with the Right Tool!
Build Your Kubernetes Operator with the Right Tool!
 
Introduction to JIB and Google Cloud Run
Introduction to JIB and Google Cloud RunIntroduction to JIB and Google Cloud Run
Introduction to JIB and Google Cloud Run
 
Whats new in Eclipse Indigo ? (@DemoCamp Grenoble 2011)
Whats new in Eclipse Indigo ? (@DemoCamp Grenoble 2011)Whats new in Eclipse Indigo ? (@DemoCamp Grenoble 2011)
Whats new in Eclipse Indigo ? (@DemoCamp Grenoble 2011)
 
Ja coco ignite
Ja coco igniteJa coco ignite
Ja coco ignite
 
Electron - cross platform desktop applications made easy
Electron - cross platform desktop applications made easyElectron - cross platform desktop applications made easy
Electron - cross platform desktop applications made easy
 
An Introduction to Eclipse Che - Next-Gen Eclipse Java IDE
An Introduction to Eclipse Che - Next-Gen Eclipse Java IDEAn Introduction to Eclipse Che - Next-Gen Eclipse Java IDE
An Introduction to Eclipse Che - Next-Gen Eclipse Java IDE
 
Introduction to Eclipse IDE
Introduction to Eclipse IDEIntroduction to Eclipse IDE
Introduction to Eclipse IDE
 
Maven: Managing Software Projects for Repeatable Results
Maven: Managing Software Projects for Repeatable ResultsMaven: Managing Software Projects for Repeatable Results
Maven: Managing Software Projects for Repeatable Results
 

Recently uploaded

Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
Ortus Solutions, Corp
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
Cyanic lab
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Anthony Dahanne
 
De mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FMEDe mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FME
Jelle | Nordend
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
Visitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.appVisitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.app
NaapbooksPrivateLimi
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
Globus
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
Tier1 app
 
Software Testing Exam imp Ques Notes.pdf
Software Testing Exam imp Ques Notes.pdfSoftware Testing Exam imp Ques Notes.pdf
Software Testing Exam imp Ques Notes.pdf
MayankTawar1
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
Globus
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
kalichargn70th171
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Globus
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
wottaspaceseo
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
WSO2
 

Recently uploaded (20)

Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
 
De mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FMEDe mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FME
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
Visitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.appVisitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.app
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 
Software Testing Exam imp Ques Notes.pdf
Software Testing Exam imp Ques Notes.pdfSoftware Testing Exam imp Ques Notes.pdf
Software Testing Exam imp Ques Notes.pdf
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
 

Eclipse RCP outside of Eclipse IDE - Gradle to the rescue!

  • 1. Eclipse RCP outside ofEclipse RCP outside of Eclipse IDE - Gradle to theEclipse IDE - Gradle to the rescue!rescue! Eclipse DemoCamp Poznań 2015 Michał Ćmil @michalcmil
  • 2. AgendaAgenda Eclipse RCP build system Our project Issues Gradle Introduction Sample applications Eclipse RCP Project experiences
  • 3. Our projectOur project e(fx)clipse + Java 8 based Heavy usage of Eclipse technologies: EMF, ECP, Teneo, Birt Java EE 7 backend (WildFly) Around 50 modules Some code is in JavaScript (via Nashorn)
  • 4. Eclipse RCP Build SystemEclipse RCP Build System Eclipse RCP application are made of plugins/bundles Plugins come from update sites defined via Target Platform Eclipse Plug-in Development Environment (IDE) Maven Tycho (headless)
  • 6. Issues with the standardIssues with the standard aproachaproach Unstable builds Sharing modules between client and server Tightly coupled with IDE Very hard to add external dependencies
  • 8. Sharing code betweenSharing code between client and serverclient and server Maven for server side Eclipse Tycho + PDE for client side Some modules were used by both... We had to maintain 3 build system and needed two runs of Maven on the same code to build the app
  • 9. Tightly coupled with IDETightly coupled with IDE Configuring the development environment is a pain...
  • 10. Hard to add externalHard to add external dependenciesdependencies
  • 11. Could be done better...Could be done better... Project structure known from Maven Tests in src/test/ Continuous integration and releasing /src/main/java, /src/main/resources?
  • 12. So... Is there any hope?So... Is there any hope?
  • 13. Groovy based build tool Maven's Conventions and Dependency Management Tons of defaults and plugins Supports Nexus, Artifactory etc. Ant's Flexibility Imperative language available in the DSL
  • 14. Minimal Java BuildMinimal Java Build apply plugin: 'java' $gradle build
  • 15. Minimal Java Build withMinimal Java Build with Guava and JUnitGuava and JUnit apply plugin: 'java' repositories { mavenCentral() } dependencies { compile 'com.google.guava:guava:18.0' testCompile 'junit:junit:4.12' } $gradle build
  • 16. The Bridge between GradleThe Bridge between Gradle and Eclipse RCPand Eclipse RCP https://github.com/akhikhl/wuff Andrey Hihlovskiy will present Wuff at Gradle Summit 12.06.2015
  • 17. WuffWuff Eclipse plugins are normal Gradle dependencies Update Site is downloaded into a local Maven repository Automatically bundles non-OSGi dependencies Manifest Generation Runs and creates executable Eclipse applications compile 'efxclipse-1_2:org.eclipse.e4.ui.di:+' compile 'com.google.guava:guava:18.0' testCompile 'junit:junit:4.12'
  • 18. Minimal e(fx)clipse sampleMinimal e(fx)clipse sample buildscript { repositories { jcenter() } dependencies { classpath 'org.akhikhl.wuff:wuff-plugin:0.0.14' } } apply plugin: 'org.akhikhl.wuff.efxclipse-app' wuff { selectedEclipseVersion = 'efxclipse-1.2' } products { nativeLauncher = false } https://github.com/mcmil/wuff-skeleton $gradle scaffold $gradle build $gradle run
  • 19. ScaffoldingScaffolding src !"" main #"" java $ !"" pl $ !"" cmil $ !"" wuff $ !"" skeleton $ !"" SamplePart.ja va !"" resources #"" Application.e4xmi #"" css $ !"" default.css !"" plugin.xml
  • 21. Multi module sampleMulti module sample apply plugin: 'org.akhikhl.wuff.eclipse-config' wuff { selectedEclipseVersion = 'efxclipse-1.2' } products { nativeLauncher = false } project(':pl.cmil.wuff.sample.main') { apply plugin: 'org.akhikhl.wuff.efxclipse-app' dependencies { compile project(':pl.cmil.wuff.sample.services') } } project(':pl.cmil.wuff.sample.services') { apply plugin: 'org.akhikhl.wuff.osgi-bundle' dependencies { compile 'com.google.guava:guava:18.0' } } https://github.com/mcmil/wuff-efxclipse-samples
  • 22. Additional featuresAdditional features Supports Equinox, EclipseRCP, e(fx)clipse, IDE apps, SWT Apps Easy switching between Eclipse versions Generating features and repositories Automatic conversion of existing applications Platform-specific products https://github.com/akhikhl/wuff-sandbox
  • 24. Did it help?Did it help? Stable builds Easier for developers Maven-like dependencies (also external - like Guava, Jersey) Maven-like structure and tests Maven repositories (Maven Central, jCenter, local Nexus)
  • 25. Did it help?Did it help? IDE independent No tooling needed - Gradle Wrapper automatically downloads itself on Windows/Linux One command build for the whole application Works great on Jenkins gradlew build & gradlew run
  • 26. It's not perfectIt's not perfect A lot of automatics that can fail Manifests generation and merging Relatively long builds client minimally 30-40s server minimally 90s with deployment CPU intensive (can work on multiple cores)
  • 27. Speeding up the buildSpeeding up the build Daemon Gradle is always running Parallel builds (module level) New Gradle releases Performance is a priority - biggest builds around 4000 modules Gradle Profiler https://discuss.gradle.org/t/the-gradle- roadmap/105
  • 28. Speeding up the buildSpeeding up the build IntelliJ Plugin Starting the application straighlty from the IDE (without using gradle) Incremental builds for classes and resources (gradle build not required) https://github.com/mcmil/wuff-intellij-plugin
  • 29. Buildship - AnotherBuildship - Another approachapproach Deep Gradle-Eclipse integration plugin Gradle guys are building an eclipse plugin for gradle- based projects in the Eclipse IDE... ...and they use Gradle to build it Started 24.03.2015 - currently only snapshots available http://www.vogella.com/tutorials/EclipseGradle/article.html https://github.com/eclipse/buildship
  • 30. SourcesSources Wuff: e(fx)clipse Wuff samples: , Gradle: Gradle Free E-Books: Eclipse architecture: Buildship: Eclipse and Gradle Tutorial: Why Gradle: https://github.com/akhikhl/wuff https://github.com/mcmil/wuff- efxclipse-samples https://github.com/mcmil/wuff-skeleton http://gradle.org/ http://gradle.org/books/ http://www.aosabook.org/en/eclipse.html https://github.com/eclipse/buildship http://www.vogella.com/tutorials/ EclipseGradle/article.html http://www.drdobbs.com/jvm/why-build-your-java- projects-with-gradle/240168608