Difference between revisions of "Dependencies and Linux Packaging"

From Freeplane - free mind mapping and knowledge management software
(suggestion by Hartmut)
m (Reverted edits by Dimitry (talk) to last revision by Artafinde)
(Tag: Rollback)
 
(64 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 
= Packaging Freeplane for Linux distros =
 
= Packaging Freeplane for Linux distros =
This page contains information about Freeplane requirements/dependencies and GNU/Linux packaging information for release 1.2.x (and, to a lesser extent, 1.3.x).
+
This page contains information about Freeplane requirements/dependencies and GNU/Linux packaging information for release 1.2.x and 1.3.x.
  
 
See also [[How_to_build_Freeplane|How to build Freeplane]].
 
See also [[How_to_build_Freeplane|How to build Freeplane]].
Line 14: Line 14:
 
| [http://groovy.codehaus.org/ Groovy]
 
| [http://groovy.codehaus.org/ Groovy]
 
| Dynamic language for the JVM, used for scripting/add-ons
 
| Dynamic language for the JVM, used for scripting/add-ons
| >=1.8.6
+
| >=1.8.6 (2.x is recommended)
 
| groovy (=> use groovy-all.jar to get the deps below as well!)
 
| groovy (=> use groovy-all.jar to get the deps below as well!)
 
|-
 
|-
Line 34: Line 34:
 
| [http://forge.scilab.org/index.php/p/jlatexmath/ JLaTeXMath]
 
| [http://forge.scilab.org/index.php/p/jlatexmath/ JLaTeXMath]
 
| Used for LaTeX Rendering in node extension (1.2.x) / node core (1.3.x)
 
| Used for LaTeX Rendering in node extension (1.2.x) / node core (1.3.x)
| >=0.9.7 (1.2.x) / 1.0.2 (1.3.x)
+
| '''1.2.x''': >=0.9.7; '''1.3.x''': >=1.0.2
| libjlatexmath-java
+
| [http://anonscm.debian.org/viewvc/pkg-java/trunk/libjlatexmath-java/ libjlatexmath-java]
 
|-
 
|-
 
| [http://code.google.com/p/jsyntaxpane/ JSyntaxPane]
 
| [http://code.google.com/p/jsyntaxpane/ JSyntaxPane]
| Provides JEditorPane with syntax highlighting, used for groovy scripts and LaTeX (>= 1.3.x)
+
| Provides JEditorPane with syntax highlighting, used for groovy scripts and LaTeX (>= 1.3.x). See [[#JSyntaxPane|note below]]
| [http://jsyntaxpane.googlecode.com/svn/branches/r095/ current subversion] @revision r156 (1.2.x and 1.3.x)
+
| [http://jsyntaxpane.googlecode.com/svn/branches/r095/ current subversion] @revision r156 including Debian patches from libjsyntaxpane-java-0.9.6~r156-5 (all versions)
| libjsyntaxpane-java
+
| [http://anonscm.debian.org/gitweb/?p=pkg-java/libjsyntaxpane-java.git libjsyntaxpane-java]
 
|-
 
|-
 
| [http://sourceforge.net/projects/simplyhtml/ SimplyHTML]
 
| [http://sourceforge.net/projects/simplyhtml/ SimplyHTML]
 
| Rich text editor used for editing node content / notes / ...
 
| Rich text editor used for editing node content / notes / ...
| >=0.16.07 (1.2.x and 1.3.x)
+
| >=0.16.07 (latest version is recommended)
| simplyhtml
+
| [http://anonscm.debian.org/gitweb/?p=pkg-java/simplyhtml.git simplyhtml]
 
|-
 
|-
 
| [http://javahelp.java.net/ Java Help]
 
| [http://javahelp.java.net/ Java Help]
Line 54: Line 54:
 
| [http://commons.apache.org/proper/commons-lang/ Apache commons lang]
 
| [http://commons.apache.org/proper/commons-lang/ Apache commons lang]
 
| Helper utilities for java.lang
 
| Helper utilities for java.lang
| >=2.0 (1.2.x), >=2.6 (1.3.x)
+
| '''1.2.x''': >=2.0; '''1.3.x''': >=2.6
 
| libcommons-lang-java
 
| libcommons-lang-java
 
|-
 
|-
Line 64: Line 64:
 
| [http://www.jgoodies.com/freeware/libraries/forms/ JGoodies Forms]
 
| [http://www.jgoodies.com/freeware/libraries/forms/ JGoodies Forms]
 
| Helper utilities for forms layout
 
| Helper utilities for forms layout
| >= 1.2.1
+
| >= 1.2.1; '''1.4.x''': 1.6.0 (jgoodies-forms 1.6.0 requires jgoodies-commons 1.4.0)
 
| libjgoodies-forms-java
 
| libjgoodies-forms-java
 
|-
 
|-
 
| [http://savannah.gnu.org/projects/gnu-regexp GNU Regexp]
 
| [http://savannah.gnu.org/projects/gnu-regexp GNU Regexp]
 
| GNU Regexp implementation (not sure if it's used by freeplane directly, but still used by simpyhtml!)
 
| GNU Regexp implementation (not sure if it's used by freeplane directly, but still used by simpyhtml!)
| >=1.1.4
+
| >=1.1.4 (deprecated but still used by simplyhtml)
 
| libgnu-regexp-java
 
| libgnu-regexp-java
 
|-
 
|-
 
| [http://www.knopflerfish.org/ Knopflerfish OSGi]
 
| [http://www.knopflerfish.org/ Knopflerfish OSGi]
 
| OSGi implementation used by freeplane
 
| OSGi implementation used by freeplane
| >=2.3.3
+
| >=2.3.3; '''Freeplane 1.3.15''': >= 5.1.0 (knopflerfish 5.1.0 corresponds to knopflerfish framework 7.1.2!)
 
| libknopflerfish-osgi-framework-java
 
| libknopflerfish-osgi-framework-java
 
|-
 
|-
Line 93: Line 93:
 
|-
 
|-
 
| [http://xerces.apache.org/#xerces2-j Xerces2]
 
| [http://xerces.apache.org/#xerces2-j Xerces2]
| a library for parsing, validating and manipulating XML documents, used by SVG plugin
+
| a library for parsing, validating and manipulating XML documents, used by SVG plugin (not needed when starting from dist, but needed when starting from eclipse??)
 
| >=2.5.0
 
| >=2.5.0
 
| libxerces2-java
 
| libxerces2-java
Line 101: Line 101:
 
| >=1.4?
 
| >=1.4?
 
| libxml-commons-external-java
 
| libxml-commons-external-java
 +
|-
 +
| [http://infonode.net/index.html?idw InfoNode Docking Windows]
 +
| Used for docking windows (>=1.3.x)
 +
| >=1.6.1
 +
| [http://anonscm.debian.org/gitweb/?p=pkg-java/libidw-java.git libidw-java]
 
|-
 
|-
 
| [http://wiki.openstreetmap.org/wiki/JMapViewer JMapViewer]
 
| [http://wiki.openstreetmap.org/wiki/JMapViewer JMapViewer]
| Used by openmaps plugin ('''>=1.3.x only!!''')
+
| Used by openmaps plugin (>=1.3.x)
| >=0.0+svn29245+dfsg-1
+
| >=1.02 (patch for 1.03 is included!) '''warning''': jmapviewer>=1.04 requires Java7!
| now [http://anonscm.debian.org/gitweb/?p=pkg-osm/jmapviewer.git;a=summary available] (Andrew Harvey is [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=649226 working on it])
+
| [http://anonscm.debian.org/gitweb/?p=pkg-grass/jmapviewer.git;a=summary jmapviewer]
 +
|-
 +
| [http://commons.apache.org/proper/commons-codec/ Apache commons codec]
 +
| Used to encode/decode view state (>=1.3.x)
 +
| >=1.7
 +
| libcommons-codec-java (currently at 1.8)
 
|}
 
|}
  
 
If you want to know the mapping between freeplane jars and jars in Debian packages,
 
If you want to know the mapping between freeplane jars and jars in Debian packages,
check out [https://github.com/fnatter/freeplane-debian/blob/master/debian/patches/10_libraries_properties.patch this patch].
+
check out [http://anonscm.debian.org/cgit/pkg-java/freeplane.git/tree/debian/patches/10_libraries_properties.patch this patch].
 +
 
 +
The copyright of each (Linux-relevant) file in the srcpure tarball can be found [http://anonscm.debian.org/cgit/pkg-java/freeplane.git/tree/debian/copyright here].
 +
 
 +
== JSyntaxPane ==
 +
<div id="JSyntaxPane"> </div>
 +
* unfortunately, JSyntaxpane is no longer maintained [https://code.google.com/p/jsyntaxpane/ upstream]
 +
* therefore, patches are in one of two places:
 +
** in Freeplane: freeplane_plugin_jsp/  (currently the LaTeX support)
 +
** as quilt patches in the [http://anonscm.debian.org/gitweb/?p=pkg-java/libjsyntaxpane-java.git;a=shortlog Debian package]
 +
* In order to fix bugs in JSyntaxPane, add [http://anonscm.debian.org/cgit/pkg-java/libjsyntaxpane-java.git/tree/debian/patches patches], create+upload the package and commit the jsyntaxpane.jar from the package to freeplane.git
  
 
== Build-time dependencies ==
 
== Build-time dependencies ==
Line 115: Line 135:
 
* junit, ant, jdk
 
* junit, ant, jdk
 
* 1.3.x: jflex for compiling latex.flex (LaTeX syntax highlighting for JSyntaxPane)
 
* 1.3.x: jflex for compiling latex.flex (LaTeX syntax highlighting for JSyntaxPane)
** done: LaTeXLexer.java must not be included in freeplane_srcpure-1.3.x.tar.gz, it must be built from latex.flex at package build time)
+
** LaTeXLexer.java must be built from latex.flex at package build time
  
 
== Miscellaneous ==
 
== Miscellaneous ==
Line 127: Line 147:
 
* Debian: require openjdk-7-jre as the only JRE (Depends:) because JMapViewer requires it anyway and jdk6 is not in jessie?
 
* Debian: require openjdk-7-jre as the only JRE (Depends:) because JMapViewer requires it anyway and jdk6 is not in jessie?
 
* <s>launch4j => windows only</s>
 
* <s>launch4j => windows only</s>
* latest JSyntaxPane (..r156) required (LaTeX syntax highlighting)
+
* <s>latest JSyntaxPane (..r156) required (LaTeX syntax highlighting)</s>
** is ...r156 correctly pulled as a dependency (as opposed to r148!)????
+
** <s>is ...r156 correctly pulled as a dependency (as opposed to r148!)????</s>
 
* new plugin "Openmaps integration", new dependency [http://wiki.openstreetmap.org/wiki/JMapViewer JMapViewer]
 
* new plugin "Openmaps integration", new dependency [http://wiki.openstreetmap.org/wiki/JMapViewer JMapViewer]
 +
* new feature "Docking Windows", with new dependency [http://www.infonode.net/index.html?idw IDW]
 
* new command line option -U (include in man page!)
 
* new command line option -U (include in man page!)
** also mention latex in core and openmaps integration in 1.3.x manpage
+
** also mention latex in core, openmaps integration, workspace plugins in 1.3.x manpage
 +
*** workspace plugin has been ''disabled'' for 1.3.x!!
 
** bump up version in man-page!
 
** bump up version in man-page!
* make sure that srcpure does not contain *.class, *.exe, *.dll, ...
+
* <s>make sure that srcpure does not contain *.class, *.exe, *.dll, ...</s>
* build LaTeXLexer.java before build target runs
+
* <s>build LaTeXLexer.java before build target runs</s>
 
* <s>remove /etc/kde3/magic/freeplane.magic</s>
 
* <s>remove /etc/kde3/magic/freeplane.magic</s>
 
* install a 48x48 icon (http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html)?
 
* install a 48x48 icon (http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html)?
* Matthias: require openjdk-7-jre >= u21 on 64bit-architectures?
+
* <s>how to fix 80_no_update_check.patch??</s>
* Hartmut's mail:
+
* <s>fix http://lintian.debian.org/tags/menu-icon-uses-relative-path.html (freeplane package)</s> (fixed in 1.2.23-2)
Remove useless build-patches: we use a different build target.
+
 
These two pathces are related to the build target `dist`, but we are
+
== Changes for 1.4.x ==
building the target `build`. So these patches are unnecessary.
+
* gradle build system
#       deleted:    SOURCES/40_no_winmac.patch
+
* three new dependencies for ribbons
#       deleted:    SOURCES/50_no_copy_files.patch
+
* knopflerfish upgraded
 +
 
 +
== Icons ==
 +
Freeplane 1.2.x and 1.3.x come with a single icon for files + application (freeplane_framework/build/freeplane.{svg,png}),
 +
while Freeplane 1.4.x _might_ have two icons (like on Windows):
 +
* for files / mime types: freeplane_framework/build/freeplane.{svg,png}
 +
* for the application: freeplane_framework/build/freeplane_app.{svg,png}
  
 
== Distro-specific information ==
 
== Distro-specific information ==
 
See this [http://pkgs.org/search/?keyword=freeplane search link] for ''older'' packages.
 
See this [http://pkgs.org/search/?keyword=freeplane search link] for ''older'' packages.
  
=== Debian ===
+
=== Debian / Ubuntu ===
Current release for Debian is 1.2.23, maintainer is Felix Natter <fnatter@gmx.net>.
+
Current release for Debian/Ubuntu is 1.3.15, maintainer is Felix Natter <fnatter@gmx.net>.
It's currently in 'experimental'.
+
1.3.12 is in stable/"jessie".
 +
See [http://packages.ubuntu.com/search?keywords=freeplane&searchon=names&suite=all&section=all versions in Ubuntu].
  
 
The packaging source code is maintained in Git repos:
 
The packaging source code is maintained in Git repos:
Line 156: Line 185:
 
* http://anonscm.debian.org/gitweb/?p=pkg-java/freeplane.git
 
* http://anonscm.debian.org/gitweb/?p=pkg-java/freeplane.git
  
Some Dependencies:
+
See the table on the top of the page for Debian git/svn packaging repos of some dependencies.
* http://anonscm.debian.org/gitweb/?p=pkg-java/libjsyntaxpane-java.git
 
* http://anonscm.debian.org/viewvc/pkg-java/trunk/libjlatexmath-java/
 
* http://anonscm.debian.org/gitweb/?p=pkg-osm/jmapviewer.git
 
  
 
=== Mageia Linux ===
 
=== Mageia Linux ===
Current release is 1.2.20, maintainer is Hartmut Goebel <h.goebel@crazy-compilers.com>.
+
Current release is 1.3.11, maintainer is Hartmut Goebel <h.goebel@crazy-compilers.com>.
  
 
The packaging source code is available at:
 
The packaging source code is available at:
 
* https://github.com/htgoebel/freeplane-mageia
 
* https://github.com/htgoebel/freeplane-mageia
 +
 +
=== Archlinux ===
 +
Current Release for Archlinux is 1.5.13, maintainer is Leonidas Spyropoulos <artafinde at gmail dot com>
 +
 +
The package is available in AUR:
 +
* https://aur.archlinux.org/packages/freeplane
 +
* https://aur.archlinux.org/packages/freeplane-git (following 1.6.x branch)
  
 
=== Fedora ===
 
=== Fedora ===
Line 172: Line 205:
 
=== OpenSuSE ===
 
=== OpenSuSE ===
 
see [https://build.opensuse.org/package/view_file?file=freeplane.spec&package=freeplane&project=Office&rev=cf14d37870fb1f12049ad727dc46e083 this link]
 
see [https://build.opensuse.org/package/view_file?file=freeplane.spec&package=freeplane&project=Office&rev=cf14d37870fb1f12049ad727dc46e083 this link]
 +
 +
== Guidelines for adding/upgrading dependencies (Gradle, >= 1.4.x) ==
 +
With the introduction of the gradle build system, most dependencies are downloaded from maven.org, you need to specify only name, group and version (search maven.org to get these information):
 +
  'commons-io:commons-io:2.4'
 +
 +
However, not all dependencies are available via maven, so some dependencies need to be added to git
 +
(like SimplyHTML, IDW, JSyntaxPane, JMapViewer) => Therefore, we differentiate between maven and local dependencies:
 +
 +
=== Maven Dependencies  ===
 +
 +
Example:
 +
  'commons-io:commons-io:2.4'
 +
 +
* sources will ''automatically'' be downloaded and attached by gradle
 +
* of course maven dependencies should be preferred over dependencies added to git
 +
 +
=== Local (git) dependencies ===
 +
 +
Example:
 +
  // from flatDir "localGitDepsRepository":
 +
  compile ':SimplyHTML-0.16.09'
 +
(you might need to add directories to "localGitDepsRepository" in toplevel build.gradle)
 +
 +
* prefer a versioned release over a (git-) snapshot
 +
* commit a versioned jar: &lt;package&gt;-&lt;version&gt;.jar
 +
* make sure to add &lt;package&gt;-&lt;version&gt;-sources.jar (Eclipse source attachments are automatically picked up by the gradle build system if they match this naming pattern)
 +
* use the flat file repository for source attachments to work (see existing libraries like SimplyHTML)
 +
 +
=== Common things to consider for all dependencies ===
 +
 +
Unfortunately, '''some linux distros like Debian/Ubuntu do not allow to simply download dependencies from maven at build time''',
 +
so any dependency (''maven or local git'') need to be packaged separately => every new dependency means more work for package developers.
 +
Therefore, please discuss your intent to add a dependency on [http://freeplane-developer.996965.n3.nabble.com/ freeplane-developer].
 +
 +
* make sure that the dependency does not require a newer version of java than freeplane currently does (i.e. JMapViewer 1.05 would require Java7)
 +
* prefer a library that is actively maintained
 +
* document the exact upstream version and where it can be downloaded (usually in a commit message)

Latest revision as of 11:17, 18 November 2018

Packaging Freeplane for Linux distros

This page contains information about Freeplane requirements/dependencies and GNU/Linux packaging information for release 1.2.x and 1.3.x.

See also How to build Freeplane.

Dependencies

Package Description Version required Debian Package
Groovy Dynamic language for the JVM, used for scripting/add-ons >=1.8.6 (2.x is recommended) groovy (=> use groovy-all.jar to get the deps below as well!)
ANTLR Parser Generator used by groovy >= 2.7.7 antlr (but groovy depends on it)
Apache commons CLI Command line parser, used by groovy. >= 1.2 libcommon-cli-java (but groovy depends on it)
ASM Java bytecode manipulation and analysis framework. >= 3.3.2 libasm3-java (but groovy depends on it)
JLaTeXMath Used for LaTeX Rendering in node extension (1.2.x) / node core (1.3.x) 1.2.x: >=0.9.7; 1.3.x: >=1.0.2 libjlatexmath-java
JSyntaxPane Provides JEditorPane with syntax highlighting, used for groovy scripts and LaTeX (>= 1.3.x). See note below current subversion @revision r156 including Debian patches from libjsyntaxpane-java-0.9.6~r156-5 (all versions) libjsyntaxpane-java
SimplyHTML Rich text editor used for editing node content / notes / ... >=0.16.07 (latest version is recommended) simplyhtml
Java Help deprecated, but still used by simplyhtml >=2.0.0? javahelp2
Apache commons lang Helper utilities for java.lang 1.2.x: >=2.0; 1.3.x: >=2.6 libcommons-lang-java
Apache commons IO Helper utilities for java.io >=2.4 libcommons-io-java
JGoodies Forms Helper utilities for forms layout >= 1.2.1; 1.4.x: 1.6.0 (jgoodies-forms 1.6.0 requires jgoodies-commons 1.4.0) libjgoodies-forms-java
GNU Regexp GNU Regexp implementation (not sure if it's used by freeplane directly, but still used by simpyhtml!) >=1.1.4 (deprecated but still used by simplyhtml) libgnu-regexp-java
Knopflerfish OSGi OSGi implementation used by freeplane >=2.3.3; Freeplane 1.3.15: >= 5.1.0 (knopflerfish 5.1.0 corresponds to knopflerfish framework 7.1.2!) libknopflerfish-osgi-framework-java
Apache Batik used by SVG plugin >=1.7 libbatik-java
Rhino Pure Java open source javascript engine, used by SVG plugin >=1.7R librhino-java
Apache FOP Apache Formatting Objects Processor, used by SVG plugin >=1.0 libfop-java
Xerces2 a library for parsing, validating and manipulating XML documents, used by SVG plugin (not needed when starting from dist, but needed when starting from eclipse??) >=2.5.0 libxerces2-java
Apache XML Commons common code and guidelines for xml projects, used by SVG plugin >=1.4? libxml-commons-external-java
InfoNode Docking Windows Used for docking windows (>=1.3.x) >=1.6.1 libidw-java
JMapViewer Used by openmaps plugin (>=1.3.x) >=1.02 (patch for 1.03 is included!) warning: jmapviewer>=1.04 requires Java7! jmapviewer
Apache commons codec Used to encode/decode view state (>=1.3.x) >=1.7 libcommons-codec-java (currently at 1.8)

If you want to know the mapping between freeplane jars and jars in Debian packages, check out this patch.

The copyright of each (Linux-relevant) file in the srcpure tarball can be found here.

JSyntaxPane

  • unfortunately, JSyntaxpane is no longer maintained upstream
  • therefore, patches are in one of two places:
    • in Freeplane: freeplane_plugin_jsp/ (currently the LaTeX support)
    • as quilt patches in the Debian package
  • In order to fix bugs in JSyntaxPane, add patches, create+upload the package and commit the jsyntaxpane.jar from the package to freeplane.git

Build-time dependencies

  • all of the dependencies above are build-deps too
  • junit, ant, jdk
  • 1.3.x: jflex for compiling latex.flex (LaTeX syntax highlighting for JSyntaxPane)
    • LaTeXLexer.java must be built from latex.flex at package build time

Miscellaneous

  • of course mac stuff can (and must) not be built
  • freeplane_plugin_uispec4j/ can be ignored
  • freeplane_plugin_help/ is no longer needed, can be ignored
  • jortho.jar is built from JOrtho_0.4_freeplane/
  • launch4j is Windows-only

Changes for 1.3.x

  • Debian: require openjdk-7-jre as the only JRE (Depends:) because JMapViewer requires it anyway and jdk6 is not in jessie?
  • launch4j => windows only
  • latest JSyntaxPane (..r156) required (LaTeX syntax highlighting)
    • is ...r156 correctly pulled as a dependency (as opposed to r148!)????
  • new plugin "Openmaps integration", new dependency JMapViewer
  • new feature "Docking Windows", with new dependency IDW
  • new command line option -U (include in man page!)
    • also mention latex in core, openmaps integration, workspace plugins in 1.3.x manpage
      • workspace plugin has been disabled for 1.3.x!!
    • bump up version in man-page!
  • make sure that srcpure does not contain *.class, *.exe, *.dll, ...
  • build LaTeXLexer.java before build target runs
  • remove /etc/kde3/magic/freeplane.magic
  • install a 48x48 icon (http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html)?
  • how to fix 80_no_update_check.patch??
  • fix http://lintian.debian.org/tags/menu-icon-uses-relative-path.html (freeplane package) (fixed in 1.2.23-2)

Changes for 1.4.x

  • gradle build system
  • three new dependencies for ribbons
  • knopflerfish upgraded

Icons

Freeplane 1.2.x and 1.3.x come with a single icon for files + application (freeplane_framework/build/freeplane.{svg,png}), while Freeplane 1.4.x _might_ have two icons (like on Windows):

  • for files / mime types: freeplane_framework/build/freeplane.{svg,png}
  • for the application: freeplane_framework/build/freeplane_app.{svg,png}

Distro-specific information

See this search link for older packages.

Debian / Ubuntu

Current release for Debian/Ubuntu is 1.3.15, maintainer is Felix Natter <fnatter@gmx.net>. 1.3.12 is in stable/"jessie". See versions in Ubuntu.

The packaging source code is maintained in Git repos:

See the table on the top of the page for Debian git/svn packaging repos of some dependencies.

Mageia Linux

Current release is 1.3.11, maintainer is Hartmut Goebel <h.goebel@crazy-compilers.com>.

The packaging source code is available at:

Archlinux

Current Release for Archlinux is 1.5.13, maintainer is Leonidas Spyropoulos <artafinde at gmail dot com>

The package is available in AUR:

Fedora

TODO: where is it?

OpenSuSE

see this link

Guidelines for adding/upgrading dependencies (Gradle, >= 1.4.x)

With the introduction of the gradle build system, most dependencies are downloaded from maven.org, you need to specify only name, group and version (search maven.org to get these information):

 'commons-io:commons-io:2.4'

However, not all dependencies are available via maven, so some dependencies need to be added to git (like SimplyHTML, IDW, JSyntaxPane, JMapViewer) => Therefore, we differentiate between maven and local dependencies:

Maven Dependencies

Example:

 'commons-io:commons-io:2.4'
  • sources will automatically be downloaded and attached by gradle
  • of course maven dependencies should be preferred over dependencies added to git

Local (git) dependencies

Example:

 // from flatDir "localGitDepsRepository":
 compile ':SimplyHTML-0.16.09'

(you might need to add directories to "localGitDepsRepository" in toplevel build.gradle)

  • prefer a versioned release over a (git-) snapshot
  • commit a versioned jar: <package>-<version>.jar
  • make sure to add <package>-<version>-sources.jar (Eclipse source attachments are automatically picked up by the gradle build system if they match this naming pattern)
  • use the flat file repository for source attachments to work (see existing libraries like SimplyHTML)

Common things to consider for all dependencies

Unfortunately, some linux distros like Debian/Ubuntu do not allow to simply download dependencies from maven at build time, so any dependency (maven or local git) need to be packaged separately => every new dependency means more work for package developers. Therefore, please discuss your intent to add a dependency on freeplane-developer.

  • make sure that the dependency does not require a newer version of java than freeplane currently does (i.e. JMapViewer 1.05 would require Java7)
  • prefer a library that is actively maintained
  • document the exact upstream version and where it can be downloaded (usually in a commit message)