Set up your development environment

Java

To compile HALE the Java Development Kit (JDK) version 7 or later is needed.
Windows users can get it here.

Eclipse

HALE is based on Equinox and Eclipse and also uses Eclipse as its IDE.
For the development at least version 3.8/4.2 (Juno) of Eclipse should be used..
Eclipse can be downloaded at http://www.eclipse.org/downloads/. It is recommended to use the Eclipse Classic package.

If you are using Juno and have cloned the HALE repository, you can add some helpful Addons to Eclipse using a Software configuration file included in the repository (at hale/hale-platform/eclipse/JunoClassic.p2f). To import the file use File->Import...->Install->Install Software Items from File.

Required plugins

Eclipse plugins required for compiling and running HALE.

  • Groovy-Eclipse (make sure to install the optional Groovy 2.3 compiler)

Projects

If not already done, follow the steps described in How to access the HALE sources for cloning the HALE Git repository. Make sure you have also initialized/updated the submodules (e.g. with git submodule update --init)
Use File->Import...->General->Existing Projects into Workspace to import Eclipse projects from the cloned repository.

master branch

The projects in the master branch are grouped in the following folders:

  • build - anything related to the build process
  • platform - platform project, libraries, tools, preferences
  • common - HALE core projects (APIs, models) [No UI or server related projects]
  • ui - HALE core UI projects including the application project with the product definition
  • io - Implementations of HALE I/O providers (e.g. XML/GML, XSD)
  • server - Web application/server related projects
  • ext - Optional HALE extensions, e.g. third party provided, grouped again by specific extension
  • cst - The conceptual schema transformer (CST) as transformation service implementation, Java transformation functions
  • util - Utility projects
  • legacy - Legacy projects that will be deleted step by step (because they will not be used any more in that form, the code still needed will be migrated to other projects)

Projects in the folders ui, common, server, cst, util, io must follow naming conventions in project/bundle and package names.

In principle you can import all available projects into the workspace, though you can omit the legacy projects and the following projects are currently unsupported and not guaranteed to compile (we recommend to either not import them into the workspace or to close them if there are any issues):

com.onespatial.jrc.tns.oml.rif.translator
com.onespatial.jrc.tns.oml.rif.translator.test
com.onespatial.jrc.tns.rif.exporter
eu.esdihumboldt.hale.ui.views.tasks.legacy
eu.xsdi.mdl
eu.xsdi.mdlui

maintenance-2.1 branch

If working on the maintenance-2.1 branch please import all projects contained in the following folders:

cst
gmlhandler
hale
humboldt-commons/trunk
humboldt-specification/trunk

The project eu.esdihumboldt.hale.eap2uml is currently unsupported and will have compilation errors. Close the project in Eclipse or remove it from your workspace.

Target platform

The hale-platform project contains a file hale-platform.target. This file represents the platform environment for the HALE projects. The environment is needed for the projects to be able to compile. This is how to set the defined target platform:
  1. Open the file in Eclipse.
  2. Wait until the job Resolving Target Definition is completed (otherwise you will get errors when you continue). If there are errors resolving the platform, usually just trying it again (by closing and opening the target file again) works.
  3. Select Set as Target Platform in the upper right corner of the editor.

Launch HALE

The eu.esdihumboldt.hale.ui.application project (or eu.esdi-humboldt.hale if working on maintenance-2.1 branch) contains a file HALE.product which is the product definition of HALE. Open the file in Eclipse and select Launch an Eclipse application in the editor (either on the page Overview or in the toolbar in the upper right corner of the editor).