Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "EMF DiffMerge/BuildConfiguration"

(Created page with "== Build concepts == EMF Diff/Merge uses Maven Tycho for its build. In order to minimize required build descriptors, it relies on the Tycho/Release_Notes/0.24#POM-less_Tych...")
 
Line 5: Line 5:
 
== Project stucture ==
 
== Project stucture ==
  
The contents from the project are available in [http://git.eclipse.org/c/diffmerge/|four different repositories], each following a similar structure:             
+
The contents from the project are available in [[http://git.eclipse.org/c/diffmerge/|four different repositories]], each following a similar structure:             
  
* ''releng'': build-specific artifacts
 
** ''.configuration'': Maven module containing global configuration options for the entire repository, e.g. Tycho version
 
** ''.target'': target platform descriptor; contains dependencies by perfect version matching
 
** ''.update'': p2 repository descriptor
 
* ''plugin'': the plug-in projects themselves
 
* ''features'': eclipse feature projects
 
  
Note that all folders containing projects also have a pom.xml file that references all subprojects manually. This is required by Maven to find all the folders that represent a project to build.
+
Given that both the patterns and the coevolution repository depends on the core repository, the corresponding jobs have to be set up as follows:
  
Given that both the patterns and the coevolution repository depends on the core repository, the built p2 repository of the core is to be made available for the corresponding build jobs. One way to achieve this would be to add it to the target platform descriptions, however that is impractical as version numbers would have to be increased after each build.
+
* A CI update site created by the core repository is made available to the other builds using the Maven property [[http://git.eclipse.org/c/diffmerge/org.eclipse.emf.diffmerge.coevolution.git/tree/releng/org.eclipse.emf.diffmerge.coevolution.configuration/pom.xml#n13|core.repo.url]]. This can be set up correctly by the build on hudson.
 
+
It is better to only use target platform descriptors for stable dependencies, such as platform or EMF; and continously built dependencies should be specified using the ''repository'' tag in the configuration module. Following this idea the corresponding jobs have to be set up as follows:
+
 
+
* A CI update site created by the core repository is made available to the other builds using the Maven property [http://git.eclipse.org/c/diffmerge/org.eclipse.emf.diffmerge.coevolution.git/tree/releng/org.eclipse.emf.diffmerge.coevolution.configuration/pom.xml#n13|core.repo.url]. This can be set up correctly by the build on hudson.
+
 
* The patterns and coevolution builds are also triggered each time the core project builds.
 
* The patterns and coevolution builds are also triggered each time the core project builds.
  
 
== Adding a new project to the build ==
 
== Adding a new project to the build ==
  
* It is recommended for each project to be stored in a folder with the same name as the project id. Not explicitly required, but helps avoiding nasty issues.
+
== Advanced concepts ==
* Make sure each project is referenced by its container module explicitly.
+
 
 +
=== Release builds ===

Revision as of 12:34, 21 February 2017

Build concepts

EMF Diff/Merge uses Maven Tycho for its build. In order to minimize required build descriptors, it relies on the pom-less builds feature available from Tycho 0.24. It is important to note that this means Maven version 3.3 is required to execute these builds.

Project stucture

The contents from the project are available in [different repositories], each following a similar structure:


Given that both the patterns and the coevolution repository depends on the core repository, the corresponding jobs have to be set up as follows:

  • A CI update site created by the core repository is made available to the other builds using the Maven property [[1]]. This can be set up correctly by the build on hudson.
  • The patterns and coevolution builds are also triggered each time the core project builds.

Adding a new project to the build

Advanced concepts

Release builds

Back to the top