Gradle and Eclipse RCP Ned Twigg

Slides:



Advertisements
Similar presentations
An open source QA stack testing tools for agile teams Presented by Aaron Evans
Advertisements

Jenkins User Conference San Francisco, Sept #jenkinsconf Business Process Model & Notation (BPMN) Workflows in Jenkins Max Spring Cisco
Developing in CAS. Why? As distributed you edit CAS 3 with Eclipse and build with Maven 2 – Best Practice for Release Engineering – Difficult edit-debug.
CSS: where do we want to go? Gabriele Carcassi Contributions from: Gabriele Carcassi, Kunal Shroff – BNL Jan Hatje – DESY Kay Kasemir – ORNL.
CPSC 875 John D. McGregor Architecture evolution.
Programming with Android: SDK install and initial setup Luca Bedogni Marco Di Felice Dipartimento di Informatica: Scienza e Ingegneria Università di Bologna.
Build your Android App with Gradle Android new build system.
Java Build Tool Comparison HJUG - April 29th, 2009 John Tyler.
AppManager 7: Deep Technical Dive Tim Sedlack & Michi Schniebel Sr. Product Managers.
Cosc 4730 Installing IDEs And a note on carriers..
Android: Hello World Frank Xu Gannon University. Steps Configuration ▫Android SDK ▫Android Development Tools (ADT)  Eclipse plug-in ▫Android SDK and.
Presented by IBM developer Works ibm.com/developerworks/ 2006 January – April © 2006 IBM Corporation. Making the most of Creating Eclipse plug-ins.
Automating the Build Process using ANT SE-2030 Dr. Mark L. Hornick 1.
SEEM4570: XAMPP, Eclipse, Summary of Html Kangfei Zhao Room 711,ERB
Agenda Introduction to the Guidewire platform
© 2009 IBM Corporation 1 RTC ClearQuest Importer and Synchronizer Lorelei Ngooi – RTC ClearQuest Synchronizer Lead.
Erlware For Managing Distribution and Build Erlang User Conference 2007.
Maven & Bamboo CONTINUOUS INTEGRATION. QA in a large organization In a large organization that manages over 100 applications and over 20 developers, implementing.
MAVEN-BLUEMARTINI Yannick Robin. What is maven-bluemartini?  maven-bluemartini is Maven archetypes for Blue Martini projects  Open source project on.
Sumedha Rubasinghe October,2009 Introduction to Programming Tools.
Automating the Build Process using Ant SE-2030 Dr. Rob Hasker 1 Based on material by Dr. Mark L. Hornick.
Understanding Eclipse Development Environment Hen-I Yang July 7, 2006
Guidelines for Homework 6. Getting Started Homework 6 requires that you complete Homework 5. –All of HW5 must run on the GridFarm. –HW6 may run elsewhere.
Subversion (SVN) Tutorial for CS421 Dan Fleck Spring 2010.
Setting Up The Android SDK (Software Development Kit) A basic step by step guide leading to set up and your first Hello World App.
Warmup A programmer’s wife tells him, “Would you mind going to the store and picking up a loaf of bread? Also, if they have eggs, get a dozen.” The programmer.
Ant Build Tools.  Creating a product from source may take several steps: Compile Link Copy files to various directories Remove intermediate files Generate.
OSGi Enablement for Tuscany Raymond Feng. Overview.
Automating the Build Process using ANT SE-2030 Dr. Rob Hasker 1 Based on material by Dr. Mark L. Hornick.
Ant & Jar Ant – Java-based build tool Jar – pkzip archive, that contains metadata (a manifest file) that the JRE understands.
Managed by UT-Battelle for the Department of Energy Kay Kasemir ORNL/SNS Jan Control System Studio Training - Development Setup.
Liferay Installation Prepared by: Do Xuan Hai 8 August 2011.
Installing Repast in the Eclipse IDE Charlie Gieseler 6/28/04.
Refactoring and Synchronization with the StarTeam Plug-in for Eclipse  Jim Wogulis  Principal Architect, Borland Software Corporation.
XFEL The European X-Ray Laser Project X-Ray Free-Electron Laser Matthias Clausen, DESY XFEL Refrigerator Controls – April CSS Introduction 2 nd.
Managed by UT-Battelle for the Department of Energy Kay Kasemir, Xihui Chen ORNL/SNS April Control System Studio Training - Development.
CSS Build and Update System Kunal Shroff EPICS Spring Collaboration Meeting, June 2010 Aix-en-Provence.
A Simple Introduction to Git: a distributed version-control system CS 5010 Program Design Paradigms “Bootcamp” Lesson 0.5 © Mitchell Wand, This.
14th Oct 2005CERN AB Controls Development Process of Accelerator Controls Software G.Kruk L.Mestre, V.Paris, S.Oglaza, V. Baggiolini, E.Roux and Application.
CPSC 871 John D. McGregor Change management Module 2 Session 3.
Build Systems Presentation December 14, 2015 Noon-1pm Kathy Lee Simunich Bldg. 203/ D120 Brought to you by: Argonne Java.
SPI NIGHTLIES Alex Hodgkins. SPI nightlies  Build and test various software projects each night  Provide a nightlies summary page that displays all.
Loader Tutorial Set Up. Requirements Java 7 Eclipse IvyIDE plugin Git Optional: Ant Maven.
® IBM Software Group © 2006 IBM Corporation Rational Asset Manager v7.2 Using Scripting Tutorial for using command line and scripting using Ant Tasks Carlos.
Build and Deployment Process Understand NCI’s DevOps and continuous integration requirements Understand NCI’s build and distribution requirements.
Software Deployment & Release 26/03/2015 1EN-ICE.
Maven. Introduction Using Maven (I) – Installing the Maven plugin for Eclipse – Creating a Maven Project – Building the Project Understanding the POM.
JavaFX on Mobile and Embedded: Status and Future Plans
CSS Build and Update System Kunal Shroff EPICS Fall Collaboration Meeting, June 2010 Aix-en-Provence.
ImageJ2. Why ImageJ2? ● Support the next generation of image data ● Interoperate and collaborate with other projects ● Broaden the ImageJ community ●
Getting Started as an EdgeX Developer
Build Fundamentals and Continuous Integration
Open-O Integration Project Introduction
Maven 04 March
Build Automation with Gradle
Getting Started as an EdgeX Developer
Brian Leonard ブライアン レオナルド
A Simple Introduction to Git: a distributed version-control system
Instructor: Prasun Dewan (FB 150,
slides borrowed and adapted from Alex Mariakis and CSE 390a
X in [Integration, Delivery, Deployment]
JavaTeaching and Importing a github repository
Setting up an Eclipse project from a repository on GitHub
JENKINS TIPS Ideas for making your life with Jenkins easier
Carthage ios 8 onwards Dependency manager that streamlines the process of integrating the libraries into the project.
Building LabKey with Gradle
Presentation transcript:

Gradle and Eclipse RCP Ned Twigg All code examples available here https://github.com/diffplug/gradle_and_eclipse_rcp

Why Gradle Relative to Ant / Maven Drastically lower activation energy to begin to automate something which doesn’t already have a plugin. Relative to Make / Batch / Shell / Scons / etc You have the power of the entire JVM ecosystem behind you Write-once-run-anywhereish List of things in our build that started out as a dozen lines of Groovy, and grew into independent projects A system for setting up our TeamCity / Artifactory / GitBlit server A system for distributing VPN credentials An RCP-aware obfuscator Spotless, a format enforcement plugin Goomph, a bunch of SWT and RCP build utilities

About the author At DiffPlug, we build and ship an Eclipse RCP application to customers on Windows, Mac, and Linux. Possible to ship several beta releases per day (with fast incremental- update) for tight iteration with a customer. We have unit tests and UI integration tests which run on a CI server One-click and a new developer has the code and a working IDE One-click and the application installers, update sites, and auto- updater are all uploaded and live.

What’s missing in Gradle core (we’ll address each in turn with either a plugin or a workaround) Consume dependencies from P2 Gradle can speak Ivy, Maven, and flatdir, but not P2 Generate OSGi metadata Lots of ways to generate OSGi metadata, with varying levels of automagic Difficult to sync MANIFEST.MF with Eclipse Setup a targetplatform Need to ensure Eclipse and Gradle are working from the same stuff Run Eclipse headless build

Fantastic work by Andrey Hihlovskiy Kickstarted SWT/Eclipse/RCP development in Gradle world Addresses every problem in the last slide Includes “the whole kitchen sink” Does lots of stuff whether you ask it to or not Very difficult to do “clean” OSGi (lots of Require-Bundle) Not abandoned, but not heavily developed either We have shipped applications with it in the past, but have chosen to deprecate it entirely in favor of a collection of plugins with a tighter focus.

1. Consume dependencies from P2 Nobody is working on native support at the moment stalled gradle-dev discussion about adding support for P2 https://groups.google.com/forum/#!searchin/gradle-dev/p2/gradle-dev/YQ2- V-RizQg/swXSWeGmqboJ Workaround A - pioneered by Wuff Download an Eclipse SDK Put all of its jars into a local maven repository Use the Require-Bundle metadata to populate maven dependencies (ignores Import-Package) Workaround B - must specify all jars (and their versions) manually

2. Generate OSGi metadata Gradle ships with an OSGi-generator, and there are several on GitHub All have bugs, except https://github.com/jruyi/osgibnd-gradle-plugin Just takes bnd-directives Add a task to the end of jar which copies to your working directory from the compiled jar TODO: include a demonstration snippet, or build it into Goomph

3. Setup a targetplatform Create a ‘targetplatform’ project, and apply bnd-platform to it. Declare all of your plugins as a dependency of targetplatform The plugin will create a directory which contains every dependency in your project. Dependencies which already have OSGi metadata will be left unchanged Dependencies which don’t have OSGi metadata will be wrapped by bnd You can specify custom bnd settings, either to wrap non-OSGi bundles or to modify existing OSGi bundles

4. Run Eclipse PDE headless PdeProductBuildTask PdeAntBuildTask P2DirectorModel

Goomph – future plans Not sure where this will be when the talk happens… https://mail.google.com/mail/u/1/#search/goomph/150f51f6ac32f988 https://www.eclipse.org/forums/index.php/m/1714355/?srch=goomph#msg_1714355 Goal is to leverage Oomph to: Download artifacts from P2 repositories Setup targetplatform and projects for the developer We’ll see how much is done in time for the talk