Wuff is a Gradle plugin that allows building Eclipse RCP applications outside of the Eclipse IDE using Gradle. It addresses issues with the standard Eclipse build system like unstable builds, difficulty sharing code between client and server modules, and tight coupling with the IDE. Wuff treats Eclipse plugins as normal Gradle dependencies, generates manifests, and bundles non-OSGi dependencies to create executable Eclipse applications with a Maven-like structure and dependency management. This provides a more stable, IDE-independent build system for Eclipse RCP projects.
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
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
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?
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
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'
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