2e. Configure Tycho compiler
- Add debug symbols to .class files
- Treat input as being UTF-8 encoded
2f. Fight duplication by using properties
- Properties are a commonly used concept even in Maven itself
2g. Set Tycho compiler to build each bundle with a JDK that matches the
bundle's Bundle-RequiredExecutionEnvironment (BREE) defined in its OSGi
MANIFEST.MF
- Create a $user.home/.m2/toolchains.xml file that maps BREEs to (local)
JDKs
2h. Fix Maven warning about platform dependent build due to implicit
resource filter usage
- Explicitly set resource filter to be "UTF-8"
3a. Create a feature (project) named c.e.e4.rcp.todo.model.feature that
groups the functionality provided by the three bundles .model, .events
and .service
3b. Create pom.xml for feature with packaging type "eclipse-feature" and
add the feature to the aggregator pom in the root folder
- Again order in module list does not matter
- mvn install builds feature successfully
3c. Show what build.properties in features (as well as bundles) is used
for by including an (extra) README.txt file in the final feature
(build.properties is a (ancient) PDE build concept which is re-used by
Maven Tycho).
3d. Create second feature to group the UI parts of the RCP app
- Add poms to both bundles that make up the UI parts
- Add all three Maven modules to aggregator
3e. Declare feature inclusions and feature dependencies for
.todo.feature towards
- org.eclipse.* as dependencies
- com.example.e4.* as inclusion
3f. Switch to feature dependencies in .product
- Add required re-uses feature metadata to add all included and
dependent features to the product
3g. Externalize strings in feature metadata into feature.properties
files (OPTIONALLY)
- Do not forget to adapt build.properties to include new
feature.properties file
4b. Fix build failure by creating a "category.xml" file that defines the
content of the (p2) repository
- Refer to features (could refer to individual bundles too)
-- Categories logically group functionality, thus from the point of
abstraction categories > features > bundles