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.
Difference between revisions of "MemoryAnalyzer/Building MAT With Tycho"
(→Install and Configure Maven) |
(→Prerequisites) |
||
Line 13: | Line 13: | ||
=== Clone the Source Code from Git === | === Clone the Source Code from Git === | ||
MAT sources are in a Git repository, therefore you need a git client. Have a look at [[MemoryAnalyzer/Contributor_Reference#Get the source]] | MAT sources are in a Git repository, therefore you need a git client. Have a look at [[MemoryAnalyzer/Contributor_Reference#Get the source]] | ||
+ | |||
+ | === Java 1.8 === | ||
+ | The MAT build has to be run with Java 1.8. Make sure the JAVA_HOME environment variable is set to point to a JDK 1.8 installation. | ||
=== Install and Configure Maven === | === Install and Configure Maven === | ||
The Memory Analyzer build requires a Maven 3.0.* installation. It is already present on the Hudson server at Eclipse. For local build one can download it from [http://maven.apache.org/download.html here]. | The Memory Analyzer build requires a Maven 3.0.* installation. It is already present on the Hudson server at Eclipse. For local build one can download it from [http://maven.apache.org/download.html here]. | ||
− | |||
− | |||
If you need to set a proxy for Maven, a snippet like this can be added to the Maven settings file: | If you need to set a proxy for Maven, a snippet like this can be added to the Maven settings file: |
Revision as of 08:53, 20 December 2016
Contents
Introduction
This page describes how Memory Analyzer can be built using Maven/Tycho. The build will
- build all MAT bundles
- execute all tests
- (optional) run FindBugs static checks
- build eclipse features containing the MAT plugins and produce an update site (p2 repository) with them
- produce standalone (Eclipse RCP based) products for different OS platforms
- sign and upload the produced artifacts (when executed on the Eclipse Hudson server)
Prerequisites
Clone the Source Code from Git
MAT sources are in a Git repository, therefore you need a git client. Have a look at MemoryAnalyzer/Contributor_Reference#Get the source
Java 1.8
The MAT build has to be run with Java 1.8. Make sure the JAVA_HOME environment variable is set to point to a JDK 1.8 installation.
Install and Configure Maven
The Memory Analyzer build requires a Maven 3.0.* installation. It is already present on the Hudson server at Eclipse. For local build one can download it from here.
If you need to set a proxy for Maven, a snippet like this can be added to the Maven settings file:
<proxies> <proxy> <active>true</active> <protocol>http</protocol> <port>8080</port> <host>myproxy_host</host> <nonProxyHosts>non_proxy_hosts</nonProxyHosts> </proxy> </proxies>
More information on Maven settings: http://maven.apache.org/ref/3.0.3/maven-settings/settings.html
Building MAT from Sources
Execute the build
- Open a console and go into the <mat_src>/parent folder (it contains the parent pom.xml)
- To build MAT with the default profile (build-snapshot) simply execute
mvn clean install
- This will cause a fresh build of all bundles, execute tests, build eclipse features, an update site (p2 repository) and standalone products
- If you want to also FindBugs checks are performed as part of the build, then execute
mvn clean install findbugs:findbugs
Where to find the results?
You can find the results of the build in the corresponding .../target/ directories for each plugin, feature, etc... Of particular interest are:
- <mat_src>/org.eclipse.mat.updatesite/target/site/ - it contains a p2 repository with MAT features
- <mat_src>/org.eclipse.mat.product/target/products/ - it contains all standalone RCP applications
Building MAT Standalone RCPs from an Existing MAT Update Site
Configure and execute the build
- Open a console and go into the <mat_src>/parent folder (it contains the parent pom.xml)
- To produce only the standalone products, using an already existing MAT repository (i.e. without building the bundles again) specify that the build-release-rcp profile is used when you start maven:
mvn clean install -P build-release-rcp
- It will take the already existing MAT plugins/features from the repository specified by the mat-release-repo-url property in <mat_src>/parent/pom.xml. One can overwrite this location when calling maven. For example, to build products with the older 1.5.0 release, use:
mvn clean install -P build-release-rcp -Dmat-release-repo-url=http://download.eclipse.org/mat/1.5/update-site/
Where to find the results?
You can find the standalone products under <mat_src>/org.eclipse.mat.product/target/products/
Further Information
- The platforms for which RCPs are built are specified in the <mat_src>/parent/pom.xml file
Known Problems
Wrong file permissions
When building MAT on a Windows box, the RCPs for any other OS will not have the proper permissions (e.g. the executables won't have the x flag). Building under Linux or other non-Windows OS helps.
Hudson Job at Eclipse
The Hudson instance of the Memory Analyzer Project at the Eclise is https://hudson.eclipse.org/mat/.
Snapshot / Nightly builds
The tycho-mat-nightly job checks regularly for changes to the Git repository and produces a snapshot build (see Building MAT from Sources) above
The job is additionally configured to sign the plugins and features in the update site, and to upload all artifacts to the download server. One can download such nightly/snapshot builds here: http://www.eclipse.org/mat/snapshotBuilds.php
Info: Signing is activated by the build-server profile (i.e. with parameter '-P build-server' added to the maven command)
Release Builds
The job mat-standalone-packages can only be triggered manually to build the MAT standalone packages/products using an already existing MAT update site. This can be used in the following scenario - MAT has contributed its bundles and features to the simultaneous Eclipse release as part of a milestone or a release candidate. After the simultaneous release is complete, we would like to have exactly these bundles also packed in the standalone packages, potentially including also the final version of the dependencies (part of the same simultaneous release).
The job is configured to use the build-release-rcp profile when calling maven.