--- ganttproject-builder/build.xml	2017-03-24 19:03:16.000000000 +0300
+++ build.xml	2017-04-27 12:07:19.410170289 +0300
@@ -1,137 +1,370 @@
-<project name="GanttProject builder">
-    <property file="build-deb.properties"/>
-    <path id="class.path">
-        <pathelement location="build-deb/classes"/>
-        <fileset dir="lib" includes="*.jar"/>
-    </path>
-    <target name="compile-deb-tasks" description="Compile helper code">
-        <mkdir dir="build-deb/classes"/>
-        <javac
-                srcdir="src"
-                destdir="build-deb/classes"
-                classpathref="class.path"
-                target="1.4"
-                source="1.4"
-                debug="yes"
-                includeantruntime="true"
-        />
-        <copy todir="build-deb/classes">
-            <fileset dir="src" includes="**/*.properties"/>
-            <fileset dir="src" includes="**/*.xml"/>
-        </copy>
-        <jar basedir="build-deb/classes" jarfile="lib/ganttproject-build-deb.jar" includes="**/*.class">
-        </jar>
-    </target>
-
-    <taskdef name="desktopEntry" classname="com.googlecode.ant_deb_task.DesktopEntry" classpathref="class.path"/>
-    <taskdef name="deb" classname="com.googlecode.ant_deb_task.Deb" classpathref="class.path"/>
-
-    <target name="distDeb" description="Builds DEB package" depends="distBin,distDebPre">
-        <description>Create a complete GanttProject deb package. Everything included.</description>
-        <desktopEntry
-                toFile="${distDebWork}/usr/share/applications/ganttproject.desktop"
-                name="GanttProject"
-                icon="/usr/share/icons/gnome/scalable/mimetypes/application-x-ganttproject.svg"
-                exec="/usr/bin/ganttproject %U"
-                mimetype="application/x-ganttproject;"
-                categories="Office;"
-                onlyshowin="GNOME;KDE;Unity;LXDE;MATE;Cinnamon;"
-        >
-            <genericname value="GanttProject"/>
-        </desktopEntry>
-        <copy file="ganttproject.svg" tofile="${distDebWork}/usr/share/icons/gnome/scalable/mimetypes/application-x-ganttproject.svg">
-        </copy>
-        <!-- Some docs go into /usr/share/doc/ganttproject -->
-        <mkdir dir="${distDebWork}/usr/share/doc/${package.name}"/>
-        <copy todir="${distDebWork}/usr/share/doc/${package.name}">
-            <fileset dir=".">
-                <include name="LICENSE"/>
-                <include name="README"/>
-                <include name="AUTHORS"/>
-            </fileset>
-        </copy>
-        <deb todir="${distDebPackage}"
-             package="${package.name}"
-             version="${version}"
-             homepage="http://ganttproject.biz/"
-             section="editors"
-             priority="optional"
-             depends="openjdk-7-jre | openjdk-8-jre | oracle-java7-jre | oracle-java8-jre | oracle-java8-installer"
-             conflicts="ganttproject-praha"
-             replaces="ganttproject-praha"
-             postrm="${distDebWork}/postrm"
-             postinst="${distDebWork}/postinst">
-            <version upstream="${version}"/>
-            <maintainer name="GanttProject Team" email="contact@ganttproject.biz"/>
-            <description synopsis="${package.synopsis}">
-                ${package.description}
-            </description>
-            <!-- GanttProject distro goes into /usr/share/ganttproject -->
-            <tarfileset dir="${distBin}" prefix="usr/share/${package.name}">
-                <include name="plugins-${version}/**/"/>
-                <include name="*.jar"/>
-                <include name="*.gan"/>
-                <include name="logging.properties"/>
-            </tarfileset>
-            <tarfileset dir="${distBin}" filemode="755" prefix="usr/share/${package.name}">
-                <include name="ganttproject"/>
-            </tarfileset>
-
-            <!-- Icons, mime types, docs and other stuff -->
-            <tarfileset dir="${distDebWork}/usr" prefix="usr"/>
-        </deb>
-        <rename src="${distDebPackage}/${package.name}_${version}-1_all.deb"
-               dest="${distDebPackage}/${package.name}_${version_build}-1_all.deb"/>
-    </target>
-
-    <taskdef name="bundleapp"
-             classname="com.oracle.appbundler.AppBundlerTask"
-             classpath="lib/appbundler-1.0.jar"/>
-
-    <target name="distMac" depends="distBin">
-        <mkdir dir="${distMacWork}"/>
-
-        <bundleapp outputdirectory="${distMacWork}"
-                   name="GanttProject"
-                   displayname="GanttProject"
-                   identifier="net.sourceforge.ganttproject"
-                   shortversion="${version}"
-                   icon="ganttproject.icns"
-                   copyright="Copyright 2017 BarD Software s.r.o. Distributed under GPL3"
-                   applicationCategory="public.app-category.productivity"
-                   mainclassname="org.bardsoftware.eclipsito.Boot">
-
-            <classpath dir=".">
-              <include name="eclipsito.jar"/>
-            </classpath>
-            <argument value="-app"/>
-            <argument value="net.sourceforge.ganttproject.GanttProject"/>
-            <argument value="-plugins-dir"/>
-            <argument value="$APP_ROOT/Contents/Java/plugins-${version}"/>
-            <argument value="-log"/>
-            <argument value="true"/>
-            <option value="-Dapple.laf.useScreenMenuBar=true"/>
-            <option value="-Dcom.apple.mrj.application.apple.menu.about.name=GanttProject"/>
-            <option value="-Xdock:name=GanttProject"/>
-            <option value="-Xmx512m"/>
-            <option value="-ea"/>
-        </bundleapp>
-        <copy todir="${distMacWork}/GanttProject.app/Contents/Java">
-            <fileset dir="${distBin}">
-                <include name="eclipsito.jar"/>
-                <include name="plugins-${version}/**"/>
-                <include name="logging.properties"/>
-            </fileset>
-        </copy>
-        <copy todir="${distMacWork}" file="HouseBuildingSample.gan"/>
-        <patch patchfile="Info.plist.patch" originalfile="${distMacWork}/GanttProject.app/Contents/Info.plist"/>
-
-        <mkdir dir="${distMacWork}/GanttProject.app/Contents/Java/Classes"/>
-        <copy todir="${distMacWork}/GanttProject.app/Contents/Java/Classes" file="logging.properties"/>
-        <chmod perm="a+rx" file="${distMacWork}/GanttProject.app/Contents/MacOS/JavaAppLauncher"></chmod>
-        <zip destfile="${distMacZip}">
-            <zipfileset dir="${distMacWork}" includes="**">
-            </zipfileset>
-        </zip>
-    </target>
-</project>
+<project name="GanttProject builder" default="build">
+	<property file="build.public.properties"/>
+	<property file="build.private.properties"/>
+
+  <target name="build_biz.ganttproject.core">
+    <ant antfile="../biz.ganttproject.core/build.xml" target="install" inheritall="false">
+      <property name="install.dir" value="${install.dir}"></property>
+      <property name="debug" value="${debug}"></property>
+    </ant>
+  </target>
+	<target name="build_net.sourceforge.ganttproject">
+		<ant antfile="../ganttproject/build.xml" target="install" inheritall="false">
+			<property name="install.dir" value="${install.dir}"></property>
+			<property name="debug" value="${debug}"></property>
+		</ant>
+	</target>
+  <target name="build_biz.ganttproject.impex.ical">
+    <ant antfile="../biz.ganttproject.impex.ical/build.xml" target="install" inheritall="false">
+      <property name="install.dir" value="${install.dir}"></property>
+      <property name="debug" value="${debug}"></property>
+    </ant>
+  </target>
+	<target name="build_org.ganttproject.impex.htmlpdf">
+		<ant antfile="../org.ganttproject.impex.htmlpdf/build.xml" target="install" inheritall="false">
+			<property name="install.dir" value="${install.dir}"></property>
+			<property name="debug" value="${debug}"></property>
+		</ant>
+	</target>
+	<target name="build_biz.ganttproject.impex.msproject2">
+		<ant antfile="../biz.ganttproject.impex.msproject2/build.xml" target="install" inheritall="false">
+			<property name="install.dir" value="${install.dir}"></property>
+			<property name="debug" value="${debug}"></property>
+		</ant>
+	</target>
+	<target name="build_org.ganttproject.chart.pert">
+		<ant antfile="../org.ganttproject.chart.pert/build.xml" target="install" inheritall="false">
+			<property name="install.dir" value="${install.dir}"></property>
+			<property name="debug" value="${debug}"></property>
+		</ant>
+	</target>
+
+	<target name="clean_biz.ganttproject.core">
+    	<ant antfile="../biz.ganttproject.core/build.xml" target="clean" inheritall="false">
+			<property name="install.dir" value="${install.dir}"></property>
+		</ant>
+	</target>
+	<target name="clean_net.sourceforge.ganttproject">
+		<ant antfile="../ganttproject/build.xml" target="clean" inheritall="false">
+			<property name="install.dir" value="${install.dir}"></property>
+		</ant>
+	</target>
+  <target name="clean_biz.ganttproject.impex.ical">
+    <ant antfile="../biz.ganttproject.impex.ical/build.xml" target="clean" inheritall="false">
+      <property name="install.dir" value="${install.dir}"></property>
+    </ant>
+  </target>
+	<target name="clean_org.ganttproject.impex.htmlpdf">
+		<ant antfile="../org.ganttproject.impex.htmlpdf/build.xml" target="clean" inheritall="false">
+			<property name="install.dir" value="${install.dir}"></property>
+		</ant>
+	</target>
+	<target name="clean_biz.ganttproject.impex.msproject2">
+		<ant antfile="../biz.ganttproject.impex.msproject2/build.xml" target="clean" inheritall="false">
+			<property name="install.dir" value="${install.dir}"></property>
+		</ant>
+	</target>
+	<target name="clean_org.ganttproject.chart.pert">
+		<ant antfile="../org.ganttproject.chart.pert/build.xml" target="clean" inheritall="false">
+			<property name="install.dir" value="${install.dir}"></property>
+		</ant>
+	</target>
+
+	<target name="welcome-message">
+		<echo>
+=======================================================
+	Compiling GanttProject 2.8
+=======================================================
+		</echo>
+	</target>
+
+	<target name="init">
+		<mkdir dir="${install.dir}"/>
+		<mkdir dir="${install.dir}/jre_ext"/>
+	</target>
+
+	<target name="copy-launchers">
+		<copy todir="${install.dir}">
+			<fileset dir=".">
+				<include name="ganttproject"/>
+				<include name="README-install.txt"/>
+				<include name="LICENSE"/>
+				<include name="ganttproject.bat"/>
+				<include name="ganttproject.command"/>
+				<include name="ganttproject.exe"/>
+				<include name="ganttproject_16.ico"/>
+				<include name="ganttproject_32_2.ico"/>
+				<include name="GanttProject.app/**"/>
+				<include name="HouseBuildingSample.gan"/>
+				<include name="lib/javagalician.jar"/>
+        <include name="logging.properties"/>
+			</fileset>
+		</copy>
+		<jar destfile="${install.dir}/eclipsito.jar" update="true">
+			<fileset dir="." includes="ganttproject-eclipsito-config.xml"/>
+		</jar>
+	</target>
+	<target name="build" depends="welcome-message,
+		build_biz.ganttproject.core,
+		build_net.sourceforge.ganttproject,
+		build_org.ganttproject.impex.htmlpdf,
+		build_biz.ganttproject.impex.ical,
+		build_biz.ganttproject.impex.msproject2,
+		build_org.ganttproject.chart.pert,
+		copy-launchers">
+	</target>
+
+	<target name="make-package-name">
+    <exec dir="${basedir}" executable="./hg-tip-rev.sh" outputproperty="hg.tip.rev">
+    </exec>
+
+    <property name="package.name.suffix" value="${package.name.version}-r${hg.tip.rev}"/>
+    <property name="package.dir" value="${package.name.prefix}-${package.name.suffix}"/>
+		<echo message="${package.dir}" file="VERSION"/>
+	</target>
+
+	<target name="dist-bin" depends="build, make-package-name">
+		<chmod perm="ugo+rx" file="${install.dir}/ganttproject"></chmod>
+    <chmod perm="ugo+rx" file="${install.dir}/ganttproject.command"></chmod>
+
+		<move file="${install.dir}" tofile="${package.dir}"></move>
+		<zip destfile="${package.dir}.zip" basedir="." includes="/**">
+			<zipfileset dir="${package.dir}" excludes="ganttproject" prefix="${package.dir}">
+			</zipfileset>
+      <zipfileset dir="${package.dir}" includes="ganttproject" prefix="${package.dir}" filemode="755">
+      </zipfileset>
+		</zip>
+		<copy file="${package.dir}.zip" tofile="ganttproject-latest.zip"/>
+	</target>
+
+	<target name="dist-src">
+		<property name="src.dir" value="${basedir}/dist-src"/>
+		<ant antfile="../ganttproject/build.xml" target="copy-src" inheritall="false">
+			<property name="install.dir" value="${src.dir}"></property>
+		</ant>
+		<ant antfile="../org.ganttproject.chart.pert/build.xml" target="copy-src" inheritall="false">
+			<property name="install.dir" value="${src.dir}"></property>
+		</ant>
+		<ant antfile="../org.ganttproject.impex.htmlpdf/build.xml" target="copy-src" inheritall="false">
+			<property name="install.dir" value="${src.dir}"></property>
+		</ant>
+		<ant antfile="../biz.ganttproject.impex.msproject2/build.xml" target="copy-src" inheritall="false">
+			<property name="install.dir" value="${src.dir}"></property>
+		</ant>
+		<mkdir dir="${src.dir}/ganttproject-builder"/>
+		<copy todir="${src.dir}/ganttproject-builder">
+			<fileset dir=".">
+				<include name="deb/**"/>
+        <include name="lib/**"/>
+        <include name="src/**"/>
+        <include name="build-deb.xml"/>
+        <include name="build-deb.properties"/>
+				<include name="build.xml"/>
+				<include name="build.public.properties"/>
+				<include name="build.private.properties"/>
+				<include name="formatter.xml"/>
+        <include name="ganttproject_16.ico"/>
+				<include name="ganttproject_32_2.ico"/>
+				<include name="ganttproject"/>
+				<include name="ganttproject.bat"/>
+        <include name="ganttproject.command"/>
+				<include name="ganttproject.desktop"/>
+				<include name="ganttproject-eclipsito-config.xml"/>
+        <include name="ganttproject.exe"/>
+				<include name="ganttproject.jnlp"/>
+        <include name="ganttproject.nsi"/>
+				<include name="ganttproject-webstart-config.xml"/>
+				<include name="HouseBuildingSample.gan"/>
+        <include name="LICENSE"/>
+				<include name=".project"/>
+			</fileset>
+		</copy>
+	</target>
+
+
+	<target name="webstart_net.sourceforge.ganttproject">
+		<fail message="Please set properties keystore and storepass in build.private.properties">
+			<condition>
+				<not>
+					<and>
+						<isset property="keystore"/>
+						<isset property="storepass"/>
+					</and>
+				</not>
+			</condition>
+		</fail>
+		<ant antfile="../ganttproject/build.xml" target="webstart" inheritall="false">
+			<property name="install.dir" value="${install.dir}"></property>
+			<property name="webstart.dir" value="${webstart.dir}"></property>
+			<property name="keystore" value="${keystore}"/>
+			<property name="storepass" value="${storepass}"/>
+			<property name="alias" value="${alias}"/>
+		</ant>
+	</target>
+
+	<target name="webstart_org.ganttproject.impex.htmlpdf">
+		<fail message="Please set properties keystore and storepass in build.private.properties">
+			<condition>
+				<not>
+					<and>
+						<isset property="keystore"/>
+						<isset property="storepass"/>
+					</and>
+				</not>
+			</condition>
+		</fail>
+		<ant antfile="../org.ganttproject.impex.htmlpdf/build.xml" target="webstart" inheritall="false">
+			<property name="install.dir" value="${install.dir}"></property>
+			<property name="webstart.dir" value="${webstart.dir}"></property>
+			<property name="keystore" value="${keystore}"/>
+			<property name="storepass" value="${storepass}"/>
+			<property name="alias" value="${alias}"/>
+		</ant>
+	</target>
+
+	<target name="webstart_biz.ganttproject.impex.msproject2">
+		<fail message="Please set properties keystore and storepass in build.private.properties">
+			<condition>
+				<not>
+					<and>
+						<isset property="keystore"/>
+						<isset property="storepass"/>
+					</and>
+				</not>
+			</condition>
+		</fail>
+		<ant antfile="../biz.ganttproject.impex.msproject2/build.xml" target="webstart" inheritall="false">
+			<property name="install.dir" value="${install.dir}"></property>
+			<property name="webstart.dir" value="${webstart.dir}"></property>
+			<property name="keystore" value="${keystore}"/>
+			<property name="storepass" value="${storepass}"/>
+			<property name="alias" value="${alias}"/>
+		</ant>
+	</target>
+
+	<target name="webstart_org.ganttproject.chart.pert">
+		<fail message="Please set properties keystore and storepass in build.private.properties">
+			<condition>
+				<not>
+					<and>
+						<isset property="keystore"/>
+						<isset property="storepass"/>
+					</and>
+				</not>
+			</condition>
+		</fail>
+		<ant antfile="../org.ganttproject.chart.pert/build.xml" target="webstart" inheritall="false">
+			<property name="install.dir" value="${install.dir}"></property>
+			<property name="webstart.dir" value="${webstart.dir}"></property>
+			<property name="keystore" value="${keystore}"/>
+			<property name="storepass" value="${storepass}"/>
+			<property name="alias" value="${alias}"/>
+		</ant>
+	</target>
+
+
+	<target name="init-webstart">
+		<fail message="Please set properties keystore and storepass in build.private.properties">
+			<condition>
+				<not>
+					<and>
+						<isset property="keystore"/>
+						<isset property="storepass"/>
+					</and>
+				</not>
+			</condition>
+		</fail>
+		<mkdir dir="${webstart.dir}"/>
+		<mkdir dir="${webstart.dir}/configuration"/>
+	</target>
+	<!--
+	   <target name="dist-webstart" depends="init-webstart, build, webstart_net.sourceforge.ganttproject, webstart_org.ganttproject.impex.htmlpdf, webstart_biz.ganttproject.impex.msproject2, webstart_org.ganttproject.chart.pert">
+	-->
+	<target name="dist-webstart" depends="init-webstart, build, webstart_net.sourceforge.ganttproject">
+		<copy todir="${webstart.dir}" file="ganttproject.jnlp"/>
+		<copy todir="${webstart.dir}/configuration" file="ganttproject-webstart-config.xml"/>
+		<jar destfile="${webstart.dir}/configuration.jar">
+			<fileset dir="${webstart.dir}/configuration" includes="**/*"/>
+		</jar>
+		<signjar jar="${webstart.dir}/configuration.jar" alias="${alias}" keystore="${keystore}" storepass="${storepass}"/>
+		<delete dir="${webstart.dir}/configuration"/>
+	</target>
+
+	<target name="clean" description="Removes all intermediate building files" depends="clean_biz.ganttproject.core,
+		clean_net.sourceforge.ganttproject,
+		clean_org.ganttproject.impex.htmlpdf,
+		clean_biz.ganttproject.impex.ical,
+		clean_biz.ganttproject.impex.msproject2,
+		clean_org.ganttproject.chart.pert">
+		<delete dir="bin"/>
+		<delete dir="dist-bin"/>
+		<delete dir="build-deb"/>
+	</target>
+
+	<target name="dist-win" description="Builds Windows installer" depends="dist-bin">
+		<copy todir="${package.dir}" file="ganttproject.nsi"/>
+		<exec executable="makensis" dir="${package.dir}">
+			<arg value="ganttproject.nsi"/>
+	  </exec>
+		<copy todir="." file="${package.dir}/${package.dir}.exe"/>
+	</target>
+
+	<target name="dist-deb" description="Builds DEB package" depends="make-package-name">
+    <ant antfile="build-deb.xml" inheritall="false">
+      <property name="package-version" value="${package.name.suffix}"></property>
+    </ant>
+    <copy todir="." file="${deb.dir}/${package.name.prefix}_${package.name.suffix}-1_all.deb"></copy>
+	</target>
+
+  <taskdef name="bundleapp"
+           classname="com.oracle.appbundler.AppBundlerTask"
+           classpath="lib/appbundler-1.0.jar" />
+
+  <target name="dist-mac" depends="init,make-package-name">
+    <property name="package.osx.dir" value="ganttproject.app-${package.name.suffix}"/>
+    <mkdir dir="${package.osx.dir}"/>
+    <bundleapp outputdirectory="${package.osx.dir}"
+        name="GanttProject"
+        displayname="GanttProject"
+        identifier="net.sourceforge.ganttproject"
+        shortversion="${package.name.version}"
+        icon="ganttproject.icns"
+        copyright="Copyright 2016 BarD Software s.r.o. Distributed under GPL3"
+        applicationCategory="public.app-category.productivity"
+        mainclassname="org.bardsoftware.eclipsito.Boot">
+
+        <classpath file="eclipsito.jar"/>
+        <argument value="-app"/>
+        <argument value="net.sourceforge.ganttproject.GanttProject"/>
+        <argument value="-plugins-dir"/>
+        <argument value="$APP_ROOT/Contents/Java/plugins"/>
+        <argument value="-log"/>
+        <argument value="true"/>
+        <option value="-Dapple.laf.useScreenMenuBar=true"/>
+				<option value="-Dcom.apple.mrj.application.apple.menu.about.name=GanttProject"/>
+        <option value="-Xdock:name=GanttProject"/>
+        <option value="-Xmx512m"/>
+        <option value="-ea"/>
+  </bundleapp>
+  	<copy todir="${package.osx.dir}/GanttProject.app/Contents/Java">
+  	  <fileset dir="${package.dir}">
+  	  	<include name="eclipsito.jar"/>
+  	  	<include name="plugins/**"/>
+  	  </fileset>
+  	</copy>
+  	<patch patchfile="Info.plist.patch" originalfile="${package.osx.dir}/GanttProject.app/Contents/Info.plist"/>
+  	<chmod perm="ugo+rx" file="${package.osx.dir}/GanttProject.app/Contents/MacOS/JavaAppLauncher"></chmod>
+        <zip destfile="${package.osx.dir}.zip">
+	   <zipfileset dir="${package.osx.dir}" includes="GanttProject.app/**">
+	   </zipfileset>
+        </zip>
+  </target>
+
+	<target name="dist-all" depends="dist-bin,dist-win,dist-deb,dist-mac">
+    <echo>
+=======================================================
+  All packages build completed
+=======================================================
+    </echo>
+	</target>
+</project>