5e. Provide a target platform for two different "baselines" (Kepler and Juno release)
- Uses Maven profiles to conditionally set properties based
-- Pass either via (system specific) ~/.m2/settings.xml or on cmd line with "-P profileName"
- Set .product version to prevent builds for different target platforms from interfering with each other
-- Build A creates a fixed version product which incorrectly gets used by build B
-- https://bugs.eclipse.org/408335
5f. Fix OSGi metadata version range to be compatible with Juno
6a. Create pom for .product project with packaging type
"eclipse-repository" to represent the product zip files
- Use "tycho-p2-director-plugin" in .product pom to activate product
builds
- Add to aggregator pom
- mvn install complaining about missing launcher dependencies "[ERROR]
Internal error: java.lang.RuntimeException: "No solution found because
the problem is unsatisfiable.": ["Unable to satisfy dependency from
com.example.e4.rcp.todo.product 0.0.0 to
org.eclipse.equinox.executable.feature.group 0.0.0.", "No solution found
because the problem is unsatisfiable."] -> [Help 1]"
6b. Add “org.eclipse.equinox.executable.feature.group” Installable Unit
(IU) to .target platform to fix broken build caused by missing
dependencies
6c. Rename application launcher name from "eclipse/eclipse.exe" to
product-specific "todo/todo.exe"
- Tycho reads the launcher name from the .product file defining the RCP
product/application
6d. Add a root folder named "todo/" to product archives to extract
archives not to the current directory but to create todo/ instead (todo/
then contains the product/application)
- pom "id" is verbatim of todo.product "uid" (in case multiple .products
(e.g. community vs. enterprise product) are used, each can have specific
root folder)
6e. Add rootFolders for Linux to extract the RCP application to /opt/
folder according to the LSB
6f. Add a license.txt file to the root of the RCP application
- Use rootFiles/ folder in todo.feature to host severeal license files
(alternatively could have used root=file:license.txt in build.properties
of said feature)
7a. Create product zips for all environments/platforms for which we ship
the RCP product/application
- Maven/Tycho build still _platform-independent_
8a. Create .model.test bundle containing JUnit tests for headless
execution (non-UI)
- Introduces packaging type "eclipse-test-plugin"
- Add Orbit p2 repository in .target file (it hosts org.junit bundles)
8b. Create SWTBot based .todo.uitest bundle containing JUnit-like tests
testing the UI layer
- Add c.e.e4.rcp.todo.uitest bundle (uses SWTBot)
-- Use import-package instead of require-bundle
- Add SWTBot p2 repository in .target file
- Add .todo.uitest to aggregator pom
- Maven/Tycho validateS/resolves/builds successfully but fails to run
SWTBot tests with "Could not find a display"
8c. Fix test execution failure "Could not find a display"
- Configure "tycho-suirefire-plugin" with <useUIHarness> to run tests in
UI harness
- Add implicit 3.x "org.eclipse.platform.ide" dependency to target
platforms (caused by useUIHarness)
8d. Fix hanging test (caused by modal dialog) by explicitly executing
tests in _non_ UI thread
- Use <useUIThread> configuration to run tests outside of UI thread
8e. Start our e4 app and RCP product instead of generic app/product when
running UI tests
- Add application/product configuration to .uitest pom
- Use profile property due to an incompatibility in Eclispe Juno with
SWTBot