SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Downloaden Sie, um offline zu lesen
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 deïŹned 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
ConïŹguring 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/wuïŹ€
Andrey Hihlovskiy will present WuïŹ€ 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/wuïŹ€-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/wuïŹ€-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-speciïŹc products
https://github.com/akhikhl/wuïŹ€-sandbox
Wuff DocumentationWuff Documentation
https://github.com/akhikhl/wuïŹ€/tree/master/exampleshttps://github.com/akhikhl/wuïŹ€/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 ProïŹler
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/wuïŹ€-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
WuïŹ€:
e(fx)clipse WuïŹ€ samples:
,
Gradle:
Gradle Free E-Books:
Eclipse architecture:
Buildship:
Eclipse and Gradle Tutorial:
Why Gradle:
https://github.com/akhikhl/wuïŹ€
https://github.com/mcmil/wuïŹ€-
efxclipse-samples https://github.com/mcmil/wuïŹ€-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

Weitere Àhnliche Inhalte

Was ist angesagt?

Was ist angesagt? (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 $$
 

Andere mochten auch

Griffon In Front Grails In Back
Griffon In Front Grails In BackGriffon In Front Grails In Back
Griffon In Front Grails In Back
Jim Shingler
 
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
 
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
Mark Waite
 

Andere mochten auch (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
 

Ähnlich wie Eclipse RCP outside of Eclipse IDE - Gradle to the rescue!

Ähnlich wie 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
 

KĂŒrzlich hochgeladen

AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
VishalKumarJha10
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
masabamasaba
 

KĂŒrzlich hochgeladen (20)

AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban
 
Chinsurah Escorts ☎8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎8617697112 Starting From 5K to 15K High Profile Escorts ...
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 

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 deïŹned 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 ConïŹguring 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/wuïŹ€ Andrey Hihlovskiy will present WuïŹ€ 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/wuïŹ€-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/wuïŹ€-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-speciïŹc products https://github.com/akhikhl/wuïŹ€-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 ProïŹler 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/wuïŹ€-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 WuïŹ€: e(fx)clipse WuïŹ€ samples: , Gradle: Gradle Free E-Books: Eclipse architecture: Buildship: Eclipse and Gradle Tutorial: Why Gradle: https://github.com/akhikhl/wuïŹ€ https://github.com/mcmil/wuïŹ€- efxclipse-samples https://github.com/mcmil/wuïŹ€-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