How to build Freeplane

From Freeplane - free mind mapping and knowledge management software
Revision as of 16:46, 16 March 2013 by Ldmpub (talk | contribs) (Add tips to build under Windows)

First steps

To build Freeplane, you can:

  1. Get the source code in one of the following ways:
    • Download the freeplane_src archive from http://sourceforge.net/projects/freeplane/files/ (NOT the freeplane_srcpure archive -- this does not contain the external libraries required for the build.)
    • Check out the latest source code from the git repository [1]
  2. Build the source code, by typing the following commands:
    • cd freeplane_framework/ant
    • ant [Without parameters, this defaults to 'dist' to build all targets. See the Using ant section below for more details.]

After the code finishes building, target files can be found inside the freeplane_framework/dist directory.

Information on the Git repository used by Freeplane is available on the Git howto wiki page.

Using ant

Building Freeplane requires that you have ant installed on your computer. From the ant directory you can run ant TARGET where TARGET is one of the following:

  • build (create directory with binaries in freeplane/freeplane_framework/build)
  • binzip (create binary zipfile in freeplane/freeplane_framework/dist)
  • srczip (create source zipfile in freeplane/freeplane_framework/dist)
  • installer (create windows installer in freeplane/freeplane_framework/dist)
  • portableinstaller (create portable-windows installer in freeplane/freeplane_framework/dist)
  • dmg4mac (create OS X DMG file in freeplane/freeplane_framework/dist)

Specifying no target will end up building all of the above targets.

If you wish to specify a destination build directory, you can do so by adding the build property as a commandline argument to ant:

  • ant -Dbuild=<destination directory> build .


If you change some translation (.properties) files you may get an error like this:

check-translation:
[check-translation]
D:\Freeplane121\freeplane\viewer-resources\translations\Resources_en.properties requires formatting - content changed
BUILD FAILED
D:\Freeplane121\freeplane_framework\ant\build.xml:56: The following error occurred while executing this line:
D:\Freeplane121\freeplane_framework\ant\build.xml:37: The following error occurred while executing this line:
D:\Freeplane121\freeplane\ant\build.xml:50: The following error occurred while executing this line:
D:\Freeplane121\freeplane\ant\build.xml:191: 1 files require proper formatting - run format-translation to fix

In this case you have to format the properties-Files.

This is done with

ant format-translation

Change eolstyle parameter if your are building Freeplane under Windows

If you are running under Windows, you need to change the parameter eolstyle in 2 build.xml files because this parameter is set by default to unix:

  • in freeplane\ant, file build.xml change propertie eolstyle from unix to windows, the new line should be:
<property name="eolstyle" value="windows" />
  • do the same in freeplane\JOrtho_0.4_freeplane, file build.xml.


Ant options for building freeplane for upload on Source Forge servers

Please consider following settings

For building test versions:

ant -Dminor=XX 
  • -Dminor=XX adds the testversion number to the file names for creating the test version.

Build files

The build is described in build.xml files:

 $ grep -H /freeplane.*jar freeplane/ant/ant.properties; \
   egrep '(<jar )|property.*name="free.*jar"' */ant/build.xml
 freeplane/ant/ant.properties:  freeplaneviewer.jar = ${freeplane.dist.lib}/freeplaneviewer.jar
 freeplane/ant/ant.properties:  freeplaneeditor.jar = ${freeplane.dist.lib}/freeplaneeditor.jar
 freeplane/ant/ant.properties:  freeplaneosgi.jar = ${freeplane.dist.lib}/freeplaneosgi.jar
 freeplane/ant/ant.properties:  freeplanemac.jar = ${freeplane.ext.lib}/freeplanemac.jar
 freeplane/ant/build.xml:  <property name="freeplaneant.jar" value="${workspace}/freeplane_framework/ant/lib/freeplaneant.jar" />
 freeplane/ant/build.xml:  <property name="freeplaneplugin.jar" value="${dist.osgi.dir}/org.freeplane.core.jar" />
 freeplane/ant/build.xml:  <jar jarfile="${freeplaneviewer.jar}">
 freeplane/ant/build.xml:  <jar jarfile="${freeplaneeditor.jar}" manifest="${manifest}">
 freeplane/ant/build.xml:  <jar jarfile="${freeplaneosgi.jar}">
 freeplane/ant/build.xml:  <jar jarfile="${freeplaneplugin.jar}">
 freeplane_mac/ant/build.xml:  <jar jarfile="${workspace}/freeplane/lib/freeplanemac.jar" update="false" >
 freeplane_plugin_bugreport/ant/build.xml:  <property name="freeplaneplugin.jar" value="${dist}/org.freeplane.plugin.bugreport.jar"/>
 freeplane_plugin_bugreport/ant/build.xml:  <jar jarfile="${freeplaneplugin.jar}">
 freeplane_plugin_help/ant/build.xml:  <property name="freeplaneplugin.jar" value="${dist}/org.freeplane.plugin.help.jar"/>
 freeplane_plugin_help/ant/build.xml:  <jar jarfile="${freeplaneplugin.jar}">
 freeplane_plugin_latex/ant/build.xml:  <property name="freeplaneplugin.jar" value="${dist}/org.freeplane.plugin.latex.jar"/>
 freeplane_plugin_latex/ant/build.xml:  <jar jarfile="${freeplaneplugin.jar}">
 freeplane_plugin_script/ant/build.xml:  <property name="freeplaneplugin.jar" value="${dist}/org.freeplane.plugin.script.jar"/>
 freeplane_plugin_script/ant/build.xml:  <jar jarfile="${freeplaneplugin.jar}">
 freeplane_plugin_svg/ant/build.xml:  <property name="freeplaneplugin.jar" value="${dist}/org.freeplane.plugin.svg.jar"/>
 freeplane_plugin_svg/ant/build.xml:  <jar jarfile="${freeplaneplugin.jar}">

The additional project freeplane_framework, have a higher level scope; the latter is the centralized entry into the build system to build the whole application:

 $ cd freeplane_framework/ant
 $ ant build dist