SlideShare a Scribd company logo
1 of 13
How to set up and run
     PDE build
                             Owen Ou
                         @JingwenOwenOu
 http://owenou.com/blog/2010/09/19/how-to-set-up-and-run-pde-build/
What’s PDE headless
           build?
•   automation of plug-ins build process

•   a bundle that can be executed through command
    line => “headless”

•   can also manually build it with Eclipse UI =>
    “head”

•   demo

•   source + target platform + build.properties =>
    PDE builder => generated build.xml => run

•   Maven Tycho (internally running PDE build)
Pre-requirement of
        PDE build
• three folders:
 • build directory
 • target platform
 • build configuration file
Build directory


• where the build actually happens
• where you put your source code
Build directory
- build_directory
  - plugins
     - plugin_to_build_a
     - plugin_to_build_b
     - ...
  - features
Target platform
• target platform is a set of pre-built plug-ins
  and features
• the “dependencies”
• your plug-ins/features build and run against
  the target platform (both compile time and
  run time)
• demo
Target platform
- target_platform
  - plugins
     - org.eclipse.core.runtime
     - org.eclipse.ui
     - ...
  - features
Build configuration file

• build.propeties
• template in #{eclipseInstall}/plugins/
  org.eclipse.pde.build_#{version}/templates/
  headless-build/build.properties
• demo
Build configuration file

- build_config
  - build.properties
Running PDE build
    > java -jar #{eclipseInstall}/plugins/org.eclipse.equinox.launcher_#{version}.jar

           -application org.eclipse.ant.core.antRunner

           -buildfile #{eclipseInstall}/plugins/org.eclipse.pde.build_#{version}/scripts/build.xml

           -DbuildDirectory=#{path_to_the_build_directory}

           -DbaseLocation=#{path_to_the_target_platform_directory}

           -Dbuilder=#{path_to_the_build_configuration_directory}

•      -application => the org.eclipse.core.runtime.applications extension point, application entry
       point

•      -buildfile => productBuild.xml to control pre-build and post-build phases

•      -Dbuilder => optional if it exists in current folder
Demo: FITpro
     https://fitpro.svn.sourceforge.net/svnroot/
                 fitpro/Eclipse/trunk/
- build_directory          - target_platform                     - build_config

  - plugins                  - plugins                             - build.properties

     - plugin_to_build_a        - org.eclipse.core.runtime

     - plugin_to_build_b        - org.eclipse.ui

     - ...                      - ...

  - features                 - features

     - feature_to_build         - org.eclipse.equinox.launcher

     - ...                      - ...
Summary
•   What have we done?

    •   set up directory structure (plugins/features)

        •   plugins/features to build

        •   target platform

    •   build.properties

•   Equinox’s convention of managing components
Further readings:
• http://owenou.com/blog/2010/09/19/how-
  to-set-up-and-run-pde-build/
• http://help.eclipse.org/helios/index.jsp?
  topic=/org.eclipse.pde.doc.user/tasks/
  pde_p2_integration.htm
• PDE build with Rake: https://
  fitpro.svn.sourceforge.net/svnroot/fitpro/
  Eclipse/trunk/

More Related Content

What's hot

An Introduction to Maven and Flex
An Introduction to Maven and FlexAn Introduction to Maven and Flex
An Introduction to Maven and FlexJustin J. Moses
 
Get the best out of Bootstrap with Bootstrap4XPages (AD202)
Get the best out of Bootstrap with Bootstrap4XPages (AD202)Get the best out of Bootstrap with Bootstrap4XPages (AD202)
Get the best out of Bootstrap with Bootstrap4XPages (AD202)Mark Leusink
 
Writing a Jenkins / Hudson plugin
Writing a Jenkins / Hudson pluginWriting a Jenkins / Hudson plugin
Writing a Jenkins / Hudson pluginAnthony Dahanne
 
Bootstrap4XPages
Bootstrap4XPagesBootstrap4XPages
Bootstrap4XPagesTeamstudio
 
Jenkins Plugin Development With Gradle And Groovy
Jenkins Plugin Development With Gradle And GroovyJenkins Plugin Development With Gradle And Groovy
Jenkins Plugin Development With Gradle And GroovyDaniel Spilker
 
SharePoint Framework, Angular and Azure Functions
SharePoint Framework, Angular and Azure FunctionsSharePoint Framework, Angular and Azure Functions
SharePoint Framework, Angular and Azure FunctionsSébastien Levert
 
Features everywhere
Features everywhere Features everywhere
Features everywhere Mediacurrent
 
Bootstrap and XPages (DanNotes 2013)
Bootstrap and XPages (DanNotes 2013)Bootstrap and XPages (DanNotes 2013)
Bootstrap and XPages (DanNotes 2013)Mark Leusink
 
Session on Selenium 4 : What’s coming our way? by Hitesh Prajapati
Session on Selenium 4 : What’s coming our way? by Hitesh PrajapatiSession on Selenium 4 : What’s coming our way? by Hitesh Prajapati
Session on Selenium 4 : What’s coming our way? by Hitesh PrajapatiAgile Testing Alliance
 
Don't worry be API with Slim framework and Joomla
Don't worry be API with Slim framework and JoomlaDon't worry be API with Slim framework and Joomla
Don't worry be API with Slim framework and JoomlaPierre-André Vullioud
 
Whats new in joomla 3.5 & whats coming in future
Whats new in joomla 3.5 & whats coming in futureWhats new in joomla 3.5 & whats coming in future
Whats new in joomla 3.5 & whats coming in futureTim Plummer
 
WP REST API - Building a simple Web Application
WP REST API - Building a simple Web ApplicationWP REST API - Building a simple Web Application
WP REST API - Building a simple Web ApplicationEdmund Chan
 
Develop Basic joomla! MVC component for version 3
Develop Basic joomla! MVC component for version 3Develop Basic joomla! MVC component for version 3
Develop Basic joomla! MVC component for version 3Gunjan Patel
 
CUST-10 Customizing the Upload File(s) dialog in Alfresco Share
CUST-10 Customizing the Upload File(s) dialog in Alfresco ShareCUST-10 Customizing the Upload File(s) dialog in Alfresco Share
CUST-10 Customizing the Upload File(s) dialog in Alfresco ShareAlfresco Software
 
Implementing xpages extension library
Implementing xpages extension libraryImplementing xpages extension library
Implementing xpages extension librarydominion
 
JavaScript All The Things
JavaScript All The ThingsJavaScript All The Things
JavaScript All The ThingsJordan Yaker
 
Introduction To Appium With Robotframework
Introduction To Appium With RobotframeworkIntroduction To Appium With Robotframework
Introduction To Appium With RobotframeworkSyam Sasi
 

What's hot (20)

An Introduction to Maven and Flex
An Introduction to Maven and FlexAn Introduction to Maven and Flex
An Introduction to Maven and Flex
 
Get the best out of Bootstrap with Bootstrap4XPages (AD202)
Get the best out of Bootstrap with Bootstrap4XPages (AD202)Get the best out of Bootstrap with Bootstrap4XPages (AD202)
Get the best out of Bootstrap with Bootstrap4XPages (AD202)
 
Writing a Jenkins / Hudson plugin
Writing a Jenkins / Hudson pluginWriting a Jenkins / Hudson plugin
Writing a Jenkins / Hudson plugin
 
Bootstrap4XPages
Bootstrap4XPagesBootstrap4XPages
Bootstrap4XPages
 
Jenkins Plugin Development With Gradle And Groovy
Jenkins Plugin Development With Gradle And GroovyJenkins Plugin Development With Gradle And Groovy
Jenkins Plugin Development With Gradle And Groovy
 
SharePoint Framework, Angular and Azure Functions
SharePoint Framework, Angular and Azure FunctionsSharePoint Framework, Angular and Azure Functions
SharePoint Framework, Angular and Azure Functions
 
Dfc 2018 NativeScript
Dfc 2018 NativeScriptDfc 2018 NativeScript
Dfc 2018 NativeScript
 
Features everywhere
Features everywhere Features everywhere
Features everywhere
 
Bootstrap and XPages (DanNotes 2013)
Bootstrap and XPages (DanNotes 2013)Bootstrap and XPages (DanNotes 2013)
Bootstrap and XPages (DanNotes 2013)
 
Session on Selenium 4 : What’s coming our way? by Hitesh Prajapati
Session on Selenium 4 : What’s coming our way? by Hitesh PrajapatiSession on Selenium 4 : What’s coming our way? by Hitesh Prajapati
Session on Selenium 4 : What’s coming our way? by Hitesh Prajapati
 
Don't worry be API with Slim framework and Joomla
Don't worry be API with Slim framework and JoomlaDon't worry be API with Slim framework and Joomla
Don't worry be API with Slim framework and Joomla
 
Whats new in joomla 3.5 & whats coming in future
Whats new in joomla 3.5 & whats coming in futureWhats new in joomla 3.5 & whats coming in future
Whats new in joomla 3.5 & whats coming in future
 
Selenium training
Selenium trainingSelenium training
Selenium training
 
Introduce phaser
Introduce phaserIntroduce phaser
Introduce phaser
 
WP REST API - Building a simple Web Application
WP REST API - Building a simple Web ApplicationWP REST API - Building a simple Web Application
WP REST API - Building a simple Web Application
 
Develop Basic joomla! MVC component for version 3
Develop Basic joomla! MVC component for version 3Develop Basic joomla! MVC component for version 3
Develop Basic joomla! MVC component for version 3
 
CUST-10 Customizing the Upload File(s) dialog in Alfresco Share
CUST-10 Customizing the Upload File(s) dialog in Alfresco ShareCUST-10 Customizing the Upload File(s) dialog in Alfresco Share
CUST-10 Customizing the Upload File(s) dialog in Alfresco Share
 
Implementing xpages extension library
Implementing xpages extension libraryImplementing xpages extension library
Implementing xpages extension library
 
JavaScript All The Things
JavaScript All The ThingsJavaScript All The Things
JavaScript All The Things
 
Introduction To Appium With Robotframework
Introduction To Appium With RobotframeworkIntroduction To Appium With Robotframework
Introduction To Appium With Robotframework
 

Viewers also liked

First Touch with OSGi
First Touch with OSGiFirst Touch with OSGi
First Touch with OSGiOwen Ou
 
Ten Things You Didn't Know Git And GitHub Could Do
Ten Things You Didn't Know Git And GitHub Could DoTen Things You Didn't Know Git And GitHub Could Do
Ten Things You Didn't Know Git And GitHub Could DoOwen Ou
 
Implementing a command line client to GitHub in Go
Implementing a command line client to GitHub in GoImplementing a command line client to GitHub in Go
Implementing a command line client to GitHub in GoOwen Ou
 
Introducing eclipse rap
Introducing eclipse rapIntroducing eclipse rap
Introducing eclipse rapOwen Ou
 
Learn BEM: CSS Naming Convention
Learn BEM: CSS Naming ConventionLearn BEM: CSS Naming Convention
Learn BEM: CSS Naming ConventionIn a Rocket
 
SEO: Getting Personal
SEO: Getting PersonalSEO: Getting Personal
SEO: Getting PersonalKirsty Hulse
 
How to Build a Dynamic Social Media Plan
How to Build a Dynamic Social Media PlanHow to Build a Dynamic Social Media Plan
How to Build a Dynamic Social Media PlanPost Planner
 

Viewers also liked (7)

First Touch with OSGi
First Touch with OSGiFirst Touch with OSGi
First Touch with OSGi
 
Ten Things You Didn't Know Git And GitHub Could Do
Ten Things You Didn't Know Git And GitHub Could DoTen Things You Didn't Know Git And GitHub Could Do
Ten Things You Didn't Know Git And GitHub Could Do
 
Implementing a command line client to GitHub in Go
Implementing a command line client to GitHub in GoImplementing a command line client to GitHub in Go
Implementing a command line client to GitHub in Go
 
Introducing eclipse rap
Introducing eclipse rapIntroducing eclipse rap
Introducing eclipse rap
 
Learn BEM: CSS Naming Convention
Learn BEM: CSS Naming ConventionLearn BEM: CSS Naming Convention
Learn BEM: CSS Naming Convention
 
SEO: Getting Personal
SEO: Getting PersonalSEO: Getting Personal
SEO: Getting Personal
 
How to Build a Dynamic Social Media Plan
How to Build a Dynamic Social Media PlanHow to Build a Dynamic Social Media Plan
How to Build a Dynamic Social Media Plan
 

Similar to Pde build

Tutorial 1: Your First Science App - Araport Developer Workshop
Tutorial 1: Your First Science App - Araport Developer WorkshopTutorial 1: Your First Science App - Araport Developer Workshop
Tutorial 1: Your First Science App - Araport Developer WorkshopVivek Krishnakumar
 
Eclipse IDE, 2019.09, Java Development
Eclipse IDE, 2019.09, Java Development Eclipse IDE, 2019.09, Java Development
Eclipse IDE, 2019.09, Java Development Pei-Hsuan Hsieh
 
NI Package Manager
NI Package ManagerNI Package Manager
NI Package ManagerDMC, Inc.
 
Deliver Python Apps with Docker
Deliver Python Apps with DockerDeliver Python Apps with Docker
Deliver Python Apps with DockerAnton Egorov
 
habitat at docker bud
habitat at docker budhabitat at docker bud
habitat at docker budMandi Walls
 
Intelligent Projects with Maven - DevFest Istanbul
Intelligent Projects with Maven - DevFest IstanbulIntelligent Projects with Maven - DevFest Istanbul
Intelligent Projects with Maven - DevFest IstanbulMert Çalışkan
 
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 Studygustavoeliano
 
Build Your First SharePoint Framework Webpart
Build Your First SharePoint Framework WebpartBuild Your First SharePoint Framework Webpart
Build Your First SharePoint Framework WebpartEric Overfield
 
SenchaCon 2016: Develop, Test & Deploy with Docker - Jonas Schwabe
SenchaCon 2016: Develop, Test & Deploy with Docker - Jonas Schwabe SenchaCon 2016: Develop, Test & Deploy with Docker - Jonas Schwabe
SenchaCon 2016: Develop, Test & Deploy with Docker - Jonas Schwabe Sencha
 
Voiture tech talk
Voiture tech talkVoiture tech talk
Voiture tech talkHoppinger
 
Continuous Integration/Deployment with Docker and Jenkins
Continuous Integration/Deployment with Docker and JenkinsContinuous Integration/Deployment with Docker and Jenkins
Continuous Integration/Deployment with Docker and JenkinsFrancesco Bruni
 
Dojo javascript toolkit
Dojo javascript toolkit Dojo javascript toolkit
Dojo javascript toolkit Predhin Sapru
 
Selenium web driver_2.0_presentation
Selenium web driver_2.0_presentationSelenium web driver_2.0_presentation
Selenium web driver_2.0_presentationsayhi2sudarshan
 
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...Paul Withers
 
Hudson
HudsonHudson
Hudson8x8
 
Jenkins advance topic
Jenkins advance topicJenkins advance topic
Jenkins advance topicKalkey
 

Similar to Pde build (20)

Tutorial 1: Your First Science App - Araport Developer Workshop
Tutorial 1: Your First Science App - Araport Developer WorkshopTutorial 1: Your First Science App - Araport Developer Workshop
Tutorial 1: Your First Science App - Araport Developer Workshop
 
Eclipse IDE, 2019.09, Java Development
Eclipse IDE, 2019.09, Java Development Eclipse IDE, 2019.09, Java Development
Eclipse IDE, 2019.09, Java Development
 
NI Package Manager
NI Package ManagerNI Package Manager
NI Package Manager
 
Deliver Python Apps with Docker
Deliver Python Apps with DockerDeliver Python Apps with Docker
Deliver Python Apps with Docker
 
habitat at docker bud
habitat at docker budhabitat at docker bud
habitat at docker bud
 
What's new in p2 (2009)?
What's new in p2 (2009)?What's new in p2 (2009)?
What's new in p2 (2009)?
 
Intelligent Projects with Maven - DevFest Istanbul
Intelligent Projects with Maven - DevFest IstanbulIntelligent Projects with Maven - DevFest Istanbul
Intelligent Projects with Maven - DevFest Istanbul
 
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 First SharePoint Framework Webpart
Build Your First SharePoint Framework WebpartBuild Your First SharePoint Framework Webpart
Build Your First SharePoint Framework Webpart
 
Maven
MavenMaven
Maven
 
SenchaCon 2016: Develop, Test & Deploy with Docker - Jonas Schwabe
SenchaCon 2016: Develop, Test & Deploy with Docker - Jonas Schwabe SenchaCon 2016: Develop, Test & Deploy with Docker - Jonas Schwabe
SenchaCon 2016: Develop, Test & Deploy with Docker - Jonas Schwabe
 
Voiture tech talk
Voiture tech talkVoiture tech talk
Voiture tech talk
 
Creation&imitation
Creation&imitationCreation&imitation
Creation&imitation
 
Continuous Integration/Deployment with Docker and Jenkins
Continuous Integration/Deployment with Docker and JenkinsContinuous Integration/Deployment with Docker and Jenkins
Continuous Integration/Deployment with Docker and Jenkins
 
Dojo javascript toolkit
Dojo javascript toolkit Dojo javascript toolkit
Dojo javascript toolkit
 
Selenium web driver_2.0_presentation
Selenium web driver_2.0_presentationSelenium web driver_2.0_presentation
Selenium web driver_2.0_presentation
 
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
 
Building JavaScript
Building JavaScriptBuilding JavaScript
Building JavaScript
 
Hudson
HudsonHudson
Hudson
 
Jenkins advance topic
Jenkins advance topicJenkins advance topic
Jenkins advance topic
 

Pde build

  • 1. How to set up and run PDE build Owen Ou @JingwenOwenOu http://owenou.com/blog/2010/09/19/how-to-set-up-and-run-pde-build/
  • 2. What’s PDE headless build? • automation of plug-ins build process • a bundle that can be executed through command line => “headless” • can also manually build it with Eclipse UI => “head” • demo • source + target platform + build.properties => PDE builder => generated build.xml => run • Maven Tycho (internally running PDE build)
  • 3. Pre-requirement of PDE build • three folders: • build directory • target platform • build configuration file
  • 4. Build directory • where the build actually happens • where you put your source code
  • 5. Build directory - build_directory - plugins - plugin_to_build_a - plugin_to_build_b - ... - features
  • 6. Target platform • target platform is a set of pre-built plug-ins and features • the “dependencies” • your plug-ins/features build and run against the target platform (both compile time and run time) • demo
  • 7. Target platform - target_platform - plugins - org.eclipse.core.runtime - org.eclipse.ui - ... - features
  • 8. Build configuration file • build.propeties • template in #{eclipseInstall}/plugins/ org.eclipse.pde.build_#{version}/templates/ headless-build/build.properties • demo
  • 9. Build configuration file - build_config - build.properties
  • 10. Running PDE build > java -jar #{eclipseInstall}/plugins/org.eclipse.equinox.launcher_#{version}.jar -application org.eclipse.ant.core.antRunner -buildfile #{eclipseInstall}/plugins/org.eclipse.pde.build_#{version}/scripts/build.xml -DbuildDirectory=#{path_to_the_build_directory} -DbaseLocation=#{path_to_the_target_platform_directory} -Dbuilder=#{path_to_the_build_configuration_directory} • -application => the org.eclipse.core.runtime.applications extension point, application entry point • -buildfile => productBuild.xml to control pre-build and post-build phases • -Dbuilder => optional if it exists in current folder
  • 11. Demo: FITpro https://fitpro.svn.sourceforge.net/svnroot/ fitpro/Eclipse/trunk/ - build_directory - target_platform - build_config - plugins - plugins - build.properties - plugin_to_build_a - org.eclipse.core.runtime - plugin_to_build_b - org.eclipse.ui - ... - ... - features - features - feature_to_build - org.eclipse.equinox.launcher - ... - ...
  • 12. Summary • What have we done? • set up directory structure (plugins/features) • plugins/features to build • target platform • build.properties • Equinox’s convention of managing components
  • 13. Further readings: • http://owenou.com/blog/2010/09/19/how- to-set-up-and-run-pde-build/ • http://help.eclipse.org/helios/index.jsp? topic=/org.eclipse.pde.doc.user/tasks/ pde_p2_integration.htm • PDE build with Rake: https:// fitpro.svn.sourceforge.net/svnroot/fitpro/ Eclipse/trunk/

Editor's Notes