-<?xml version="1.0"?>\r
-<!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\r
- Filename: build.xml\r
- Purpose: Ant build file for Jabref.\r
-\r
- Ant-Download: http://jakarta.apache.org/ant\r
- Ant-Manual: http://jakarta.apache.org/ant/manual/index.html\r
-\r
- Jabref homepage: http://jabref.sourceforge.net\r
- Jabref@SourceForge: http://sourceforge.net/projects/jabref\r
- Jabref@FreeCode: http://apps.freecode.com/projects/jabref\r
- Jabref@Ohloh: https://www.ohloh.net/p/jabref\r
- Jabref git repository: git://jabref.git.sourceforge.net/gitroot/jabref/jabref\r
-\r
- Further questions:\r
- help mailing list: https://lists.sourceforge.net/lists/listinfo/jabref-users\r
-\r
- Precondition: 1. Ant should be installed.\r
- 2. JAVA_HOME environment variable contains the path to JDK1.6 or higher\r
- 3. ANT_HOME environment variable contains the path to ant's home directory\r
-\r
- Language: XML\r
- Compiler: Ant\r
- Authors: Joerg K. Wegner, wegnerj@informatik.uni-tuebingen.de\r
- Morten O. Alver\r
-\r
- modified: see at git checkout and "gitk build.xml"\r
-\r
-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->\r
-\r
-<project name="JabRef" default="jars" basedir=".">\r
-\r
- <!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\r
- PROPERTY SETUP\r
- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->\r
-\r
- <!-- some version information -->\r
- <property name="jabref.version" value="2.9.1" />\r
- <property name="jabref.version.full" value="2.9.1.1" /> <!-- a version number with 4 places. Required by launch4j -->\r
- <property name="jabref.year" value="2013" />\r
- <property name="jabref.placeholder.version" value="@version@" />\r
- <property name="jabref.placeholder.year" value="@year@" />\r
- <!-- used by replace task -->\r
-\r
- <!-- Set the properties for intermediate directory -->\r
- <property name="build.jar" value="JabRef-${jabref.version}.jar" />\r
- <property name="build.dir" value="build" />\r
- <property name="build.classes" value="${build.dir}/classes" />\r
- <property name="build.tmp" value="${build.dir}/tmp" />\r
- <property name="build.osx" value="${build.dir}/classes/osxadapter" />\r
- <property name="build.lib" value="${build.dir}/lib" />\r
- <property name="build.win" value="${build.dir}/windows" />\r
- <property name="build.images" value="${build.dir}/images" />\r
- <property name="build.fonts" value="${build.dir}/images/font" />\r
- <property name="build.resource" value="${build.dir}/resource" />\r
- <property name="build.help" value="${build.dir}/help" />\r
- <property name="build.javadocs" value="${build.dir}/docs/API" />\r
- <property name="build.extensions" value="${build.dir}/extensions" />\r
- <property name="build.extension-javadocs" value="${build.extensions}/API" />\r
- <property name="build.extension-layout" value="${build.extensions}/layout" />\r
- <property name="build.openoffice.meta" value="${build.resource}/openoffice" />\r
- <property name="build.tests" value="${build.dir}/tests" />\r
-\r
- <!-- Set the properties for source directories -->\r
- <property name="src.dir" value="src" />\r
- <property name="src.tests" value="src/java/tests" />\r
- <property name="plugin.dir" value="src/plugins/" />\r
- <property name="txt.dir" value="src/txt" />\r
- <property name="java.dir" value="${src.dir}/java" />\r
- <property name="osx.dir" value="${src.dir}/osx" />\r
- <property name="win.installer.dir" value="${src.dir}/windows/nsis" />\r
- <property name="resource.dir" value="${src.dir}/resource" />\r
- <property name="bin.dir" value="${src.dir}/scripts" />\r
- <property name="images.dir" value="${src.dir}/images" />\r
- <property name="fonts.dir" value="${src.dir}/images/font" />\r
- <property name="help.dir" value="${src.dir}/help" />\r
- <property name="extensions.dir" value="${src.dir}/extensions" />\r
- <property name="layout.dir" value="${src.dir}/resource/layout" />\r
- <property name="lib.dir" value="lib" />\r
- <property name="buildlib.dir" value="buildlib" />\r
- <property name="tests.dir" value="${src.dir}/tests" />\r
-\r
- <property name="osxbin.dir" value="osx" />\r
-\r
- <!-- Load user dependent properties. Has to happen before setting the properties here -->\r
- <!-- For instance to redefine the NSIS-compiler write \r
- nsis.executable="d:\\prog\\dev\\NSIS\\makensis.exe"\r
- -->\r
- <property file="user.properties" />\r
-\r
- <property name="nsis.executable" value="C:\Program files\NSIS\makensis.exe"/>\r
- <property name="nsis.executable.linux" value="makensis"/>\r
- <property name="launch4j.dir" location="/opt/launch4j" />\r
-\r
- <!-- win.installer can only be build under Windows if the nsis.executable is found -->\r
- <condition property="is.windows">\r
- <and>\r
- <isset property="nsis.executable" />\r
- <os family="windows" />\r
- </and>\r
- </condition>\r
-\r
- <fileset id="jarsFileset" dir="${lib.dir}">\r
- <include name="antlr.jar" />\r
- <include name="antlr-3.4-complete.jar" />\r
- <include name="jgoodies-common-1.4.0.jar" />\r
- <include name="jgoodies-looks-2.5.2.jar" />\r
- <include name="jgoodies-forms-1.6.0.jar" />\r
- <include name="jayatana-1.2.4.jar" />\r
- <include name="spin.jar" />\r
- <include name="glazedlists-1.8.0_java15.jar" />\r
- <include name="microba.jar" />\r
- <include name="pdfbox-1.7.1.jar" />\r
- <include name="jempbox-1.7.1.jar" />\r
- <include name="fontbox-1.7.1.jar" />\r
- <include name="zoom-java.jar" />\r
- <include name="mysql-connector-java-5.0.7-bin.jar" />\r
- <include name="postgresql-9.2-1002.jdbc4.jar" />\r
- <!-- Plugin runtime dependencies -->\r
- <include name="plugin/JPFCodeGenerator-rt.jar" />\r
- <include name="plugin/jpf.jar" />\r
- <include name="plugin/jpf-boot.jar" />\r
- <include name="plugin/commons-logging.jar" />\r
- </fileset>\r
-\r
- <!-- Openoffice connection dependencies. Compile-time only -->\r
- <fileset id="ooFileset" dir="${lib.dir}">\r
- <include name="oo/unoil.jar" />\r
- <include name="oo/ridl.jar" />\r
- <include name="oo/juh.jar" />\r
- <include name="oo/jurt.jar" />\r
- </fileset>\r
-\r
- <!-- Done by MrDlib -->\r
- <fileset id="splJars" dir="${lib.dir}">\r
- <include name="spl/**/*.jar" />\r
- <include name="spl/*.jar" />\r
- </fileset>\r
- <fileset id="deletableMeta-InfFiles" dir="${build.tmp}/META-INF">\r
- <exclude name="services/**/*" /> \r
- </fileset>\r
- <!-- Done by MrDlib -->\r
-\r
- <!-- Build classpath -->\r
- <path id="classpath">\r
- <pathelement path="${build.classes}" />\r
- <pathelement path="${build.dir}" />\r
- <!-- Done by MrDlib -->\r
- <pathelement path="${lib.dir}/spl" />\r
- <fileset refid="splJars" />\r
- <!-- Done by MrDlib -->\r
- <fileset refid="jarsFileset" />\r
- <fileset refid="ooFileset" />\r
- </path>\r
-\r
- <!-- Classpath for running the code generator -->\r
- <path id="codegenerator">\r
- <pathelement location="${lib.dir}/plugin/JPFCodeGenerator.jar" />\r
- <pathelement location="${lib.dir}/plugin/jpf.jar" />\r
- <pathelement location="${lib.dir}/plugin/jpf-boot.jar" />\r
- <pathelement location="${lib.dir}/plugin/velocity-dep-1.5.jar" />\r
- </path>\r
-\r
- <!-- Classpath for tests -->\r
- <path id="classpathTest">\r
- <path refid="classpath" />\r
- <pathelement location="${buildlib.dir}/junit.jar" />\r
- </path>\r
-\r
- <target name="run" depends="build">\r
- <java classname="net.sf.jabref.JabRefMain" fork="true">\r
- <classpath refid="classpath" />\r
- </java>\r
- </target>\r
-\r
- <!-- Runs project -->\r
- <target name="runFromJar">\r
- <java dir="${build.lib}" classname="net.sf.jabref.JabRefMain" fork="true">\r
- <classpath>\r
- <pathelement location="${build.lib}/${build.jar}" />\r
- </classpath>\r
- </java>\r
- </target>\r
-\r
- <!-- Only rerun the code generator if plug-in xml or jars are newer than generated java file. -->\r
- <uptodate property="needsNoRegenerate" targetfile="${java.dir}/net/sf/jabref/plugin/core/generated/_JabRefPlugin.java">\r
- <srcfiles dir=".">\r
- <include name="${plugin.dir}/**/plugin.xml" />\r
- <include name="${lib.dir}/plugin/*.jar" />\r
- </srcfiles>\r
- </uptodate>\r
-\r
- <!-- Run the JPF Code Generator -->\r
- <target name="generate" unless="needsNoRegenerate">\r
- <java classname="net.sf.jabref.plugin.util.CodeGenerator" fork="true">\r
- <arg value="${plugin.dir}" />\r
- <classpath refid="codegenerator" />\r
- </java>\r
- </target>\r
-\r
- <!-- Compiles project excluding tests -->\r
- <target name="compile" depends="generate">\r
- <mkdir dir="${build.classes}" />\r
- <javac debug="on" deprecation="on" destdir="${build.classes}" encoding="UTF8"\r
- source="1.6" target="1.6">\r
- <src path="${java.dir}" />\r
- <exclude name="tests/**" />\r
- <exclude name="**/JabRefMain.java" />\r
- <classpath refid="classpath" />\r
- </javac>\r
- <javac debug="off" deprecation="on" destdir="${build.classes}" source="1.6" target="1.6">\r
- <src path="${java.dir}" />\r
- <include name="**/JabRefMain.java" />\r
- </javac>\r
- </target>\r
-\r
- <!-- Compiles project including tests -->\r
- <target name="compiletest">\r
- <mkdir dir="${build.classes}" />\r
- <javac debug="on" destdir="${build.classes}" source="1.6" target="1.6">\r
- <src path="${java.dir}" />\r
- <include name="tests/**" />\r
- <classpath refid="classpathTest" />\r
- </javac>\r
- </target>\r
-\r
- <!-- Builds the OSXAdapter -->\r
- <target name="osx">\r
- <mkdir dir="${build.classes}" />\r
-\r
- <javac srcdir="${osx.dir}" debug="off" destdir="${build.classes}" target="1.6">\r
- </javac>\r
- </target>\r
-\r
- <!-- Copies in the OSXAdapter class, which is compilable only on Mac -->\r
- <target name="non_osx">\r
- <mkdir dir="${build.osx}" />\r
- <copy file="${osxbin.dir}/OSXAdapter.class" todir="${build.osx}" />\r
- </target>\r
-\r
- <!-- Jars up project -->\r
- <target name="jars" depends="build, unjarlib">\r
- <mkdir dir="${build.lib}" />\r
- \r
- <mkdir dir="${build.tmp}" />\r
- <jar destfile="${build.lib}/${build.jar}" > \r
- <!--<jar destfile="${build.lib}/JabRef-${revision}.jar" manifest="${src.dir}/MANIFEST.MF">-->\r
-\r
- <fileset dir="${build.classes}" />\r
- <fileset dir="${build.tmp}" />\r
- <fileset dir="${build.dir}">\r
- <include name="images/**" />\r
- <include name="help/**" />\r
- <include name="resource/**" />\r
- </fileset>\r
-\r
- <!-- Add Plugins -->\r
- <fileset dir="${src.dir}">\r
- <include name="plugins/**" />\r
- </fileset>\r
- <!-- Done by MrDlib -->\r
- <fileset dir ="${java.dir}">\r
- <include name="spl/localization/spljabref.properties"/>\r
- <include name="spl/gui/ajax-loader.gif"/>\r
- <include name="spl/gui/mrdlib header.png"/>\r
- </fileset>\r
- <!-- Done by MrDlib -->\r
- <fileset dir="${lib.dir}">\r
- <include name="EndNote.zip" />\r
- </fileset>\r
- <fileset dir="${txt.dir}">\r
- <include name="gpl2.txt" />\r
- <include name="gpl3.txt" />\r
- <include name="lesser.txt" />\r
- <include name="jgoodies.txt" />\r
- <include name="README" />\r
- </fileset>\r
- <manifest>\r
- <attribute name="Main-Class" value="net.sf.jabref.JabRefMain" />\r
- <attribute name="Class-Path" value="." />\r
- </manifest>\r
- </jar>\r
-\r
- </target>\r
-\r
- <!-- updates version information with git information.\r
- should be used in development builds only\r
-\r
- Use "ant addgitinfo jars" to generate a jar with version information in the filename\r
- -->\r
- <target name="addgitinfo" description="Adds git version information in ${jabref.version} and ${build.jar}">\r
- <exec executable="git" searchpath="true" outputproperty="git.version" failifexecutionfails="true" errorproperty="">\r
- <arg value="log" />\r
- <arg value="-1" />\r
- <arg value="--pretty=format:%cd - %H" />\r
- <arg value="--date=iso" />\r
- </exec>\r
- <script language="javascript"><![CDATA[\r
- var gitVersion = project.getProperty("git.version");\r
- if ((gitVersion != undefined) && (gitVersion.length() > 0)) {\r
- // convert "2012-12-16 15:44:07 +0100 - a249a226" to "2012-12-16 15.44.07 - a249a226"\r
- gitVersion = gitVersion.substr(0,13) + "." + gitVersion.substr(14,2) + "." + gitVersion.substr(17, 2) + gitVersion.substr(25);\r
-\r
- // we have to update the properties using JavaScript as properties are normally immutable\r
- // Properties can be updated using JavaScript and not with the <property>-Task\r
- var jabrefVersion = project.getProperty("jabref.version");\r
- jabrefVersion = jabrefVersion + " - " + gitVersion;\r
- project.setProperty("jabref.version", jabrefVersion);\r
- project.setProperty("build.jar", "JabRef-" + jabrefVersion + ".jar");\r
- }\r
- ]]></script>\r
- </target>\r
-\r
- <!-- copy all necessary files and insert version informations -->\r
- <target name="build" depends="compile, buildinfos" description="Build project">\r
-\r
- <mkdir dir="${build.resource}" />\r
-\r
- <copy todir="${build.resource}">\r
- <fileset dir="${resource.dir}">\r
- <include name="**" />\r
- </fileset>\r
- </copy>\r
- <mkdir dir="${build.images}" />\r
- <copy todir="${build.images}">\r
- <fileset dir="${images.dir}">\r
- <include name="**" />\r
- </fileset>\r
- </copy>\r
-\r
- <mkdir dir="${build.help}" />\r
- <copy todir="${build.help}">\r
- <fileset dir="${help.dir}" />\r
- </copy>\r
-\r
- <!-- Insert version informations -->\r
- <replace dir="${build.help}">\r
- <replacefilter\r
- token="${jabref.placeholder.version}" \r
- value="${jabref.version}" />\r
- <replacefilter\r
- token="${jabref.placeholder.year}" \r
- value="${jabref.year}" />\r
- <include name="**/About.html" />\r
- </replace>\r
- <replace dir="${build.openoffice.meta}" token="${jabref.placeholder.version}" value="${jabref.version}">\r
- <include name="meta.xml" />\r
- </replace>\r
-\r
- </target>\r
-\r
- <!-- Prepare for testing -->\r
- <target name="buildtest" depends="build, compiletest" description="Build project for testing">\r
-\r
- <mkdir dir="${build.tests}" />\r
- <copy todir="${build.tests}">\r
- <fileset dir="${tests.dir}">\r
- <include name="**" />\r
- </fileset>\r
- </copy>\r
- </target>\r
-\r
- <!-- generate and save some build infos !!! necessary for dynamic build infos !!! -->\r
- <!-- todo : replace it by the replace task :-),\r
- src/resource/build.properties = template\r
- build/resource/build.properties = real info file\r
- -->\r
- <target name="buildinfos">\r
- <tstamp />\r
- <!-- get date -->\r
- <buildnumber />\r
- <!-- generate new build number -> build.number -->\r
- <echo message="build number = ${build.number}" />\r
- <!-- write the file, please do not edit this lines -->\r
- <echo file="${resource.dir}/build.properties">builddate=${TODAY}\r
-build=${build.number}\r
-version=${jabref.version}</echo>\r
- </target>\r
-\r
-\r
- <!-- Creates all docs -->\r
- <target name="docs" depends="javadocs" description="Generates all the documentation" />\r
-\r
- <!-- Creates javadocs -->\r
- <target name="javadocs" depends="compile" description="Generates the javadocs">\r
- <mkdir dir="${build.javadocs}" />\r
- <javadoc sourcepath="${java.dir}" destdir="${build.javadocs}" author="true" version="true" windowtitle="JabRef API" link="http://docs.oracle.com/javase/6/docs/api/">\r
-\r
- <fileset dir="${java.dir}" defaultexcludes="yes">\r
- <include name="**/*.java" />\r
- </fileset>\r
-\r
- <classpath refid="classpath" />\r
- </javadoc>\r
- </target>\r
-\r
- <!-- Creates javadocs for the extensions -->\r
- <target name="extension-javadocs" depends="build" description="Generates the javadocs for the extensions archive">\r
- <mkdir dir="${build.extension-javadocs}" />\r
- <copy todir="${build.extension-javadocs}">\r
- <fileset dir="${help.dir}" defaultexcludes="yes">\r
- <include name="CustomExports.html" />\r
- <include name="CustomImports.html" />\r
- </fileset>\r
- </copy>\r
-\r
- <javadoc sourcepath="${java.dir}" destdir="${build.extension-javadocs}" author="true" version="true" windowtitle="JabRef-Extensions API" link="http://docs.oracle.com/javase/6/docs/api/" Overview="${extensions.dir}/API/overview.html" access="protected">\r
- <!-- \r
- create javadoc only selectively for classes that \r
- users extending JabRef are likely to use\r
- -->\r
- <fileset dir="${java.dir}" defaultexcludes="yes">\r
- <include name="net/sf/jabref/imports/ImportFormat.java" />\r
- <include name="net/sf/jabref/imports/ImportFormatReader.java" />\r
- <include name="net/sf/jabref/BibtexEntry.java" />\r
- <include name="net/sf/jabref/BibtexEntryType.java" />\r
- <include name="net/sf/jabref/AuthorList.java" />\r
- <include name="net/sf/jabref/AuthorList.java" />\r
- <include name="net/sf/jabref/export/layout/LayoutFormatter.java" />\r
- </fileset>\r
-\r
- <classpath refid="classpath" />\r
- </javadoc>\r
- </target>\r
-\r
- <!-- Creates javadocs for the extensions -->\r
- <target name="extensions" depends="extension-javadocs" description="Generates the extensions archive">\r
- <!-- copy examples -->\r
- <copy todir="${build.extensions}">\r
- <fileset dir="${java.dir}">\r
- <include name="net/sf/jabref/export/layout/format/CurrentDate.java" />\r
- <include name="net/sf/jabref/export/layout/format/ToLowerCase.java" />\r
- <include name="net/sf/jabref/export/layout/format/HTMLChars.java" />\r
- <include name="net/sf/jabref/imports/*Importer.java" />\r
- </fileset>\r
- </copy>\r
- <mkdir dir="${build.extension-layout}" />\r
- <copy todir="${build.extension-layout}">\r
- <fileset dir="${layout.dir}" />\r
- </copy>\r
- <copy todir="${build.extensions}">\r
- <fileset dir="${extensions.dir}" />\r
- <filterset>\r
- <filter token="version" value="${jabref.version}" />\r
- </filterset>\r
- </copy>\r
- <!-- create extensions-zip file -->\r
- <zip destfile="${build.dir}/jabref-extensions.zip">\r
- <zipfileset dir="${build.extensions}" prefix="jabref-extensions" />\r
- </zip>\r
- </target>\r
-\r
- <target name="clean" depends="win.installer.clean" description="Clean project">\r
- <delete dir="${build.dir}" />\r
- </target>\r
-\r
- <!-- Unpacks jar needed jar files from lib directory into temp directory. -->\r
- <target name="unjarlib" description="Unpacks jars from library">\r
- <mkdir dir="${build.tmp}" />\r
- <unjar dest="${build.tmp}">\r
- <fileset refid="jarsFileset" />\r
- <fileset refid="splJars" />\r
- </unjar>\r
- <!-- done by MrDlib -->\r
- <delete includeEmptyDirs="true">\r
- <fileset refid="deletableMeta-InfFiles" />\r
- </delete>\r
- <!-- done by MrDlib -->\r
- <!-- rename the microba license file -->\r
- <move file="${build.tmp}/license.txt" tofile="${build.tmp}/microba-license.txt" />\r
- </target>\r
-\r
-\r
- <target name="osxjar" depends="jars">\r
- <jarbundler dir="${build.lib}"\r
- name="JabRef"\r
- mainclass="net.sf.jabref.JabRef"\r
- jars="${build.lib}/${build.jar}"\r
- icon="${images.dir}/JabRef-Logo.icns"\r
- version="${jabref.version}"\r
- jvmversion="1.5+"\r
- stubfile="${osxbin.dir}/JavaApplicationStub"\r
- signature="JABr">\r
- <documenttype name="BibTeX file" extensions="bib" role="Editor"\r
- iconFile="${images.dir}/JabRef-Logo.icns"/>\r
- </jarbundler>\r
- <!-- After running jarbundler we need to hack the Info.plist file: -->\r
- <replace file="${build.lib}/JabRef.app/Contents/Info.plist" token="<key>CFBundleDocumentTypes</key>"\r
- value="<key>NSPrincipalClass</key>${line.separator}\r
- <string>NSApplication</string>${line.separator}\r
- <key>CFBundleDocumentTypes</key>"/>\r
- <zip basedir="${build.lib}" destfile="${build.lib}/JabRef-${jabref.version}-OSX.zip" includes="JabRef.app/" level="9" />\r
- </target>\r
-\r
-\r
- <!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->\r
- <!-- Build Windows Installer -->\r
- <!-- -->\r
- <!-- Don't forget to set nsis.executable and launch4j.dir properties -->\r
- <!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->\r
-\r
- <target name="win.installer.clean" description="Delete Installer and Exe-Wrapper + Temp-files">\r
- <delete failonerror="false" dir="${win.installer.dir}/dist" />\r
- <delete file="${win.installer.dir}/JabRefSetup.exe" />\r
- </target>\r
-\r
- <target name="win.installer.win.pre" description="Precondition for win.installer on Windows">\r
- <fail unless="is.windows" message="Not running on windows or NSIS not found. Please make sure that user.properties exists" />\r
- </target>\r
-\r
- <target name="win.installer.step1">\r
- <!-- Gather everything that will go into the installer in dist -->\r
- <mkdir dir="${win.installer.dir}/dist" />\r
-\r
- <copy file="${build.lib}/${build.jar}" todir="${win.installer.dir}/dist" />\r
-\r
- <available property="win.installer.jar.available" file="${win.installer.dir}/dist/${build.jar}" />\r
-\r
- <fail unless="win.installer.jar.available" message="Did not find jar: ${build.jar}" />\r
-\r
- <copy todir="${win.installer.dir}/dist">\r
- <fileset dir="${txt.dir}">\r
- <include name="gpl2.txt" />\r
- <include name="gpl3.txt" />\r
- <include name="lesser.txt" />\r
- <include name="README" />\r
- </fileset>\r
- </copy>\r
-\r
- <!-- "Create Exe-Wrapper" -->\r
-\r
- <!-- first of all, update version information -->\r
- <script language="javascript"><![CDATA[\r
- // create new property with a maximum length of 50 characters\r
- var txtFileVersion = project.getProperty("jabref.version");\r
- if (txtFileVersion.length()>50) {\r
- txtFileVersion = txtFileVersion.substring(0,50);\r
- }\r
- project.setProperty("txtFileVersion", txtFileVersion);\r
- ]]></script>\r
- <delete file="jabref-launch4j.tmp" />\r
- <copy file="jabref-launch4j.xml" tofile="jabref-launch4j.tmp" />\r
- <replace file="jabref-launch4j.tmp">\r
- <replacefilter token="1.1.1" value="${jabref.version}" />\r
- <replacefilter token="3.3.3" value="${txtFileVersion}" />\r
- <replacefilter token="2.2.2.2" value="${jabref.version.full}" />\r
- <replacefilter token="./" value="${basedir}/" />\r
- </replace>\r
-\r
- <!-- launch4j ant task does not work as ld.exe gets the wrong path passed - see https://sourceforge.net/tracker/?func=detail&aid=3598164&group_id=95944&atid=613100 -->\r
- <exec\r
- executable="${launch4j.dir}/launch4jc.exe"\r
- dir="${launch4j.dir}">\r
- <arg value="${basedir}/jabref-launch4j.tmp"/>\r
- </exec>\r
- </target>\r
-\r
- <target name="win.installer.step2.linux" description="Create Windows-Installer on Linux">\r
- <!-- Finally create Windows-Installer -->\r
- <exec dir="." executable="${nsis.executable.linux}" failonerror="true">\r
- <arg line="'-DVERSION=${jabref.version}' ${win.installer.dir}/setup.nsi" />\r
- </exec>\r
- </target>\r
-\r
- <target name="win.installer.step2.win" description="Create Windows-Installer on Windows">\r
- <exec dir="." executable="${nsis.executable}" failonerror="true">\r
- <arg line="'/DVERSION=${jabref.version}' ${win.installer.dir}/setup.nsi" />\r
- </exec>\r
- </target>\r
-\r
- <target name="win.installer.step3">\r
- <move file="${win.installer.dir}/JabRefSetup.exe" tofile="${build.lib}/JabRef-${jabref.version}-setup.exe" />\r
- <delete dir="${win.installer.dir}/dist" />\r
- </target>\r
-\r
- <target name="win.installer" description="Copy files in place to be used by the installer" depends="win.installer.win.pre, jars, win.installer.step1, win.installer.step2.win, win.installer.step3">\r
- </target>\r
-\r
- <target name="win.installer.linux" description="Copy files in place to be used by the installer" depends="jars, win.installer.step1, win.installer.step2.linux, win.installer.step3">\r
- <delete dir="${win.installer.dir}/dist" />\r
-\r
- </target>\r
-\r
- <target name="test" depends="buildtest" description="Runs all unit tests">\r
- <java fork="yes" classname="junit.textui.TestRunner" failonerror="true">\r
- <arg value="tests.net.sf.jabref.AllTests" />\r
- <classpath refid="classpathTest" />\r
- </java>\r
- </target>\r
-\r
- <!--+++++++++++++++++++++++++++++++++++++++++++++++++\r
- Auxiliary targets\r
- +++++++++++++++++++++++++++++++++++++++++++++++++-->\r
-\r
- <target name="profile" depends="jars" description="Profile JabRef">\r
- <fail unless="netbeans.home">This target can only run inside the NetBeans IDE.</fail>\r
-\r
- <nbprofiledirect>\r
- <classpath refid="classpath" />\r
- </nbprofiledirect>\r
-\r
- <property environment="env" />\r
- <java fork="true" classname="net.sf.jabref.JabRef" dir="${build.dir}" jvm="${profiler.info.jvm}">\r
- <jvmarg value="${profiler.info.jvmargs.agent}" />\r
- <jvmarg line="${profiler.info.jvmargs}" />\r
- <env key="LD_LIBRARY_PATH" path="${profiler.info.agentpath}:${env.LD_LIBRARY_PATH}" />\r
- <classpath refid="classpath" />\r
- </java>\r
- </target>\r
-\r
- <!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\r
- What's about the software design ?!;-)\r
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->\r
-\r
- <target name="jalopy" description="SOFTWAREDESIGN: source code formatter using the JOELib convention.">\r
- <taskdef name="jalopy" classname="de.hunsicker.jalopy.plugin.ant.AntPlugin">\r
- <classpath>\r
- <pathelement path="${classpath}" />\r
- <fileset dir="${lib.dir}">\r
- <include name="*.jar" />\r
- </fileset>\r
- <fileset dir="${buildlib.dir}">\r
- <include name="*.jar" />\r
- </fileset>\r
- </classpath>\r
- </taskdef>\r
- <jalopy fileformat="unix" convention="${src.dir}/java/jalopy.format.convention.xml" history="file" historymethod="adler32" loglevel="error" threads="2" classpathref="classpath" backup="bak">\r
- <fileset dir="${src.dir}">\r
- <include name="java/net/sf/jabref/**/*.java" />\r
- </fileset>\r
- </jalopy>\r
- </target>\r
-\r
- <taskdef name="jarbundler" classpath="${buildlib.dir}/jarbundler-2.2.0.jar" classname="net.sourceforge.jarbundler.JarBundler" />\r
-\r
- <target name="zipsrc">\r
- <!-- clone current repo into tmp dir. Reason: we want to have a clean src.zip, but do not want to execute "git clean -xdf" to allow developers having some temporary files (and user.properties) -->\r
- <tempfile property="temp.dir" destDir="${java.io.tmpdir}" prefix="jabrefsrc"/>\r
- <mkdir dir="${temp.dir}"/>\r
- <exec executable="git" searchpath="true" failifexecutionfails="true" outputproperty="devnull" errorproperty="devnull">\r
- <arg value="clone" />\r
- <arg value="${basedir}/.." />\r
- <arg value="${temp.dir}" />\r
- </exec>\r
- <!-- <property name="temp.dir" value="C:\Users\Oliver\AppData\Local\Temp\jabrefsrc628715364" /> -->\r
-\r
- <!-- we want to have jabref-${jabref.version} as main directory -->\r
- <property name="distsrc" value="${temp.dir}/distsrc/" />\r
- <mkdir dir="${distsrc}" />\r
- <move file="${temp.dir}/jabref" tofile="${distsrc}/jabref-${jabref.version}" />\r
-\r
- <zip destfile="${build.lib}/JabRef-${jabref.version}-src.zip" basedir="${distsrc}" level="9" />\r
- <tar destfile="${build.lib}/JabRef-${jabref.version}-src.tar.bz2" basedir="${distsrc}" excludes=".git/" compression="bzip2" />\r
-\r
- <delete dir="${temp.dir}" failonerror="no"/>\r
- </target>\r
-\r
- <!-- creates all distribution files in ${build.lib} -->\r
- <target name="release" depends="clean, win.installer, osxjar, zipsrc" />\r
-</project>\r
+<?xml version="1.0"?>
+<!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ Filename: build.xml
+ Purpose: Ant build file for Jabref.
+
+ Ant-Download: http://jakarta.apache.org/ant
+ Ant-Manual: http://jakarta.apache.org/ant/manual/index.html
+
+ Jabref homepage: http://jabref.sourceforge.net
+ Jabref@SourceForge: http://sourceforge.net/projects/jabref
+ Jabref@FreeCode: http://apps.freecode.com/projects/jabref
+ Jabref@Ohloh: https://www.ohloh.net/p/jabref
+ Jabref git repository: git://jabref.git.sourceforge.net/gitroot/jabref/jabref
+
+ Further questions:
+ help mailing list: https://lists.sourceforge.net/lists/listinfo/jabref-users
+
+ Precondition: 1. Ant should be installed.
+ 2. JAVA_HOME environment variable contains the path to JDK1.6 or higher
+ 3. ANT_HOME environment variable contains the path to ant's home directory
+
+ Language: XML
+ Compiler: Ant
+ Authors: Joerg K. Wegner, wegnerj@informatik.uni-tuebingen.de
+ Morten O. Alver
+
+ modified: see at git checkout and "gitk build.xml"
+
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
+
+<project name="JabRef" default="jars" basedir=".">
+
+ <!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ PROPERTY SETUP
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
+
+ <!-- some version information -->
+ <property name="jabref.version" value="2.9.2" />
+ <property name="jabref.version.full" value="2.9.2.0" /> <!-- a version number with 4 places. Required by launch4j -->
+ <property name="jabref.year" value="2013" />
+ <property name="jabref.placeholder.version" value="@version@" />
+ <property name="jabref.placeholder.year" value="@year@" />
+ <!-- used by replace task -->
+
+ <!-- Set the properties for intermediate directory -->
+ <property name="build.jar" value="JabRef-${jabref.version}.jar" />
+ <property name="build.dir" value="build" />
+ <property name="build.classes" value="${build.dir}/classes" />
+ <property name="build.tmp" value="${build.dir}/tmp" />
+ <property name="build.osx" value="${build.dir}/classes/osxadapter" />
+ <property name="build.lib" value="${build.dir}/lib" />
+ <property name="build.win" value="${build.dir}/windows" />
+ <property name="build.images" value="${build.dir}/images" />
+ <property name="build.fonts" value="${build.dir}/images/font" />
+ <property name="build.resource" value="${build.dir}/resource" />
+ <property name="build.help" value="${build.dir}/help" />
+ <property name="build.javadocs" value="${build.dir}/docs/API" />
+ <property name="build.extensions" value="${build.dir}/extensions" />
+ <property name="build.extension-javadocs" value="${build.extensions}/API" />
+ <property name="build.extension-layout" value="${build.extensions}/layout" />
+ <property name="build.openoffice.meta" value="${build.resource}/openoffice" />
+ <property name="build.tests" value="${build.dir}/tests" />
+
+ <!-- Set the properties for source directories -->
+ <property name="src.dir" value="src" />
+ <property name="src.tests" value="src/java/tests" />
+ <property name="plugin.dir" value="src/plugins/" />
+ <property name="txt.dir" value="src/txt" />
+ <property name="java.dir" value="${src.dir}/java" />
+ <property name="osx.dir" value="${src.dir}/osx" />
+ <property name="win.installer.dir" value="${src.dir}/windows/nsis" />
+ <property name="resource.dir" value="${src.dir}/resource" />
+ <property name="bin.dir" value="${src.dir}/scripts" />
+ <property name="images.dir" value="${src.dir}/images" />
+ <property name="fonts.dir" value="${src.dir}/images/font" />
+ <property name="help.dir" value="${src.dir}/help" />
+ <property name="extensions.dir" value="${src.dir}/extensions" />
+ <property name="layout.dir" value="${src.dir}/resource/layout" />
+ <property name="lib.dir" value="lib" />
+ <property name="buildlib.dir" value="buildlib" />
+ <property name="tests.dir" value="${src.dir}/tests" />
+
+ <property name="osxbin.dir" value="osx" />
+
+ <!-- Load user dependent properties. Has to happen before setting the properties here -->
+ <!-- For instance to redefine the NSIS-compiler write
+ nsis.executable="d:\\prog\\dev\\NSIS\\makensis.exe"
+ -->
+ <property file="user.properties" />
+
+ <property name="nsis.executable" value="C:\Program files\NSIS\makensis.exe"/>
+ <property name="nsis.executable.linux" value="makensis"/>
+ <property name="launch4j.dir" location="/opt/launch4j" />
+
+ <!-- win.installer can only be build under Windows if the nsis.executable is found -->
+ <condition property="is.windows">
+ <and>
+ <isset property="nsis.executable" />
+ <os family="windows" />
+ </and>
+ </condition>
+
+ <fileset id="jarsFileset" dir="${lib.dir}">
+ <include name="antlr.jar" />
+ <include name="antlr-3.4-complete.jar" />
+ <include name="jgoodies-common-1.4.0.jar" />
+ <include name="jgoodies-looks-2.5.2.jar" />
+ <include name="jgoodies-forms-1.6.0.jar" />
+ <include name="jayatana-1.2.4.jar" />
+ <include name="spin.jar" />
+ <include name="glazedlists-1.8.0_java15.jar" />
+ <include name="microba.jar" />
+ <include name="pdfbox-1.7.1.jar" />
+ <include name="jempbox-1.7.1.jar" />
+ <include name="fontbox-1.7.1.jar" />
+ <include name="zoom-java.jar" />
+ <include name="mysql-connector-java-5.0.7-bin.jar" />
+ <include name="postgresql-9.2-1002.jdbc4.jar" />
+ <!-- Plugin runtime dependencies -->
+ <include name="plugin/JPFCodeGenerator-rt.jar" />
+ <include name="plugin/jpf.jar" />
+ <include name="plugin/jpf-boot.jar" />
+ <include name="plugin/commons-logging.jar" />
+ </fileset>
+
+ <!-- Openoffice connection dependencies. Compile-time only -->
+ <fileset id="ooFileset" dir="${lib.dir}">
+ <include name="oo/unoil.jar" />
+ <include name="oo/ridl.jar" />
+ <include name="oo/juh.jar" />
+ <include name="oo/jurt.jar" />
+ </fileset>
+
+ <!-- Done by MrDlib -->
+ <fileset id="splJars" dir="${lib.dir}">
+ <include name="spl/**/*.jar" />
+ <include name="spl/*.jar" />
+ </fileset>
+ <fileset id="deletableMeta-InfFiles" dir="${build.tmp}/META-INF">
+ <exclude name="services/**/*" />
+ </fileset>
+ <!-- Done by MrDlib -->
+
+ <!-- Build classpath -->
+ <path id="classpath">
+ <pathelement path="${build.classes}" />
+ <pathelement path="${build.dir}" />
+ <!-- Done by MrDlib -->
+ <pathelement path="${lib.dir}/spl" />
+ <fileset refid="splJars" />
+ <!-- Done by MrDlib -->
+ <fileset refid="jarsFileset" />
+ <fileset refid="ooFileset" />
+ </path>
+
+ <!-- Classpath for running the code generator -->
+ <path id="codegenerator">
+ <pathelement location="${lib.dir}/plugin/JPFCodeGenerator.jar" />
+ <pathelement location="${lib.dir}/plugin/jpf.jar" />
+ <pathelement location="${lib.dir}/plugin/jpf-boot.jar" />
+ <pathelement location="${lib.dir}/plugin/velocity-dep-1.5.jar" />
+ </path>
+
+ <!-- Classpath for tests -->
+ <path id="classpathTest">
+ <path refid="classpath" />
+ <pathelement location="${buildlib.dir}/junit.jar" />
+ </path>
+
+ <target name="run" depends="build">
+ <java classname="net.sf.jabref.JabRefMain" fork="true">
+ <classpath refid="classpath" />
+ </java>
+ </target>
+
+ <!-- Runs project -->
+ <target name="runFromJar">
+ <java dir="${build.lib}" classname="net.sf.jabref.JabRefMain" fork="true">
+ <classpath>
+ <pathelement location="${build.lib}/${build.jar}" />
+ </classpath>
+ </java>
+ </target>
+
+ <!-- Only rerun the code generator if plug-in xml or jars are newer than generated java file. -->
+ <uptodate property="needsNoRegenerate" targetfile="${java.dir}/net/sf/jabref/plugin/core/generated/_JabRefPlugin.java">
+ <srcfiles dir=".">
+ <include name="${plugin.dir}/**/plugin.xml" />
+ <include name="${lib.dir}/plugin/*.jar" />
+ </srcfiles>
+ </uptodate>
+
+ <!-- Run the JPF Code Generator -->
+ <target name="generate" unless="needsNoRegenerate">
+ <java classname="net.sf.jabref.plugin.util.CodeGenerator" fork="true">
+ <arg value="${plugin.dir}" />
+ <classpath refid="codegenerator" />
+ </java>
+ </target>
+
+ <!-- Compiles project excluding tests -->
+ <target name="compile" depends="generate">
+ <mkdir dir="${build.classes}" />
+ <javac debug="on" deprecation="on" destdir="${build.classes}" encoding="UTF8"
+ source="1.6" target="1.6">
+ <src path="${java.dir}" />
+ <exclude name="tests/**" />
+ <exclude name="**/JabRefMain.java" />
+ <classpath refid="classpath" />
+ </javac>
+ <javac debug="off" deprecation="on" destdir="${build.classes}" source="1.6" target="1.6">
+ <src path="${java.dir}" />
+ <include name="**/JabRefMain.java" />
+ </javac>
+ </target>
+
+ <!-- Compiles project including tests -->
+ <target name="compiletest">
+ <mkdir dir="${build.classes}" />
+ <javac debug="on" destdir="${build.classes}" source="1.6" target="1.6">
+ <src path="${java.dir}" />
+ <include name="tests/**" />
+ <classpath refid="classpathTest" />
+ </javac>
+ </target>
+
+ <!-- Builds the OSXAdapter -->
+ <target name="osx">
+ <mkdir dir="${build.classes}" />
+
+ <javac srcdir="${osx.dir}" debug="off" destdir="${build.classes}" target="1.6">
+ </javac>
+ </target>
+
+ <!-- Copies in the OSXAdapter class, which is compilable only on Mac -->
+ <target name="non_osx">
+ <mkdir dir="${build.osx}" />
+ <copy file="${osxbin.dir}/OSXAdapter.class" todir="${build.osx}" />
+ </target>
+
+ <!-- Jars up project -->
+ <target name="jars" depends="build, unjarlib">
+ <mkdir dir="${build.lib}" />
+
+ <mkdir dir="${build.tmp}" />
+ <jar destfile="${build.lib}/${build.jar}" >
+ <!--<jar destfile="${build.lib}/JabRef-${revision}.jar" manifest="${src.dir}/MANIFEST.MF">-->
+
+ <fileset dir="${build.classes}" />
+ <fileset dir="${build.tmp}" />
+ <fileset dir="${build.dir}">
+ <include name="images/**" />
+ <include name="help/**" />
+ <include name="resource/**" />
+ </fileset>
+
+ <!-- Add Plugins -->
+ <fileset dir="${src.dir}">
+ <include name="plugins/**" />
+ </fileset>
+ <!-- Done by MrDlib -->
+ <fileset dir ="${java.dir}">
+ <include name="spl/localization/spljabref.properties"/>
+ <include name="spl/gui/ajax-loader.gif"/>
+ <include name="spl/gui/mrdlib header.png"/>
+ </fileset>
+ <!-- Done by MrDlib -->
+ <fileset dir="${lib.dir}">
+ <include name="EndNote.zip" />
+ </fileset>
+ <fileset dir="${txt.dir}">
+ <include name="gpl2.txt" />
+ <include name="gpl3.txt" />
+ <include name="lesser.txt" />
+ <include name="jgoodies.txt" />
+ <include name="README" />
+ </fileset>
+ <manifest>
+ <attribute name="Main-Class" value="net.sf.jabref.JabRefMain" />
+ <attribute name="Class-Path" value="." />
+ </manifest>
+ </jar>
+
+ </target>
+
+ <!-- updates version information with git information.
+ should be used in development builds only
+
+ Use "ant addgitinfo jars" to generate a jar with version information in the filename
+ -->
+ <target name="addgitinfo" description="Adds git version information in ${jabref.version} and ${build.jar}">
+ <exec executable="git" searchpath="true" outputproperty="git.version" failifexecutionfails="true" errorproperty="">
+ <arg value="log" />
+ <arg value="-1" />
+ <arg value="--pretty=format:%cd - %H" />
+ <arg value="--date=iso" />
+ </exec>
+ <script language="javascript"><![CDATA[
+ var gitVersion = project.getProperty("git.version");
+ if ((gitVersion != undefined) && (gitVersion.length() > 0)) {
+ // convert "2012-12-16 15:44:07 +0100 - a249a226" to "2012-12-16 15.44.07 - a249a226"
+ gitVersion = gitVersion.substr(0,13) + "." + gitVersion.substr(14,2) + "." + gitVersion.substr(17, 2) + gitVersion.substr(25);
+
+ // we have to update the properties using JavaScript as properties are normally immutable
+ // Properties can be updated using JavaScript and not with the <property>-Task
+ var jabrefVersion = project.getProperty("jabref.version");
+ jabrefVersion = jabrefVersion + " - " + gitVersion;
+ project.setProperty("jabref.version", jabrefVersion);
+ project.setProperty("build.jar", "JabRef-" + jabrefVersion + ".jar");
+ }
+ ]]></script>
+ </target>
+
+ <!-- copy all necessary files and insert version informations -->
+ <target name="build" depends="compile, buildinfos" description="Build project">
+
+ <mkdir dir="${build.resource}" />
+
+ <copy todir="${build.resource}">
+ <fileset dir="${resource.dir}">
+ <include name="**" />
+ </fileset>
+ </copy>
+ <mkdir dir="${build.images}" />
+ <copy todir="${build.images}">
+ <fileset dir="${images.dir}">
+ <include name="**" />
+ </fileset>
+ </copy>
+
+ <mkdir dir="${build.help}" />
+ <copy todir="${build.help}">
+ <fileset dir="${help.dir}" />
+ </copy>
+
+ <!-- Insert version informations -->
+ <replace dir="${build.help}">
+ <replacefilter
+ token="${jabref.placeholder.version}"
+ value="${jabref.version}" />
+ <replacefilter
+ token="${jabref.placeholder.year}"
+ value="${jabref.year}" />
+ <include name="**/About.html" />
+ </replace>
+ <replace dir="${build.openoffice.meta}" token="${jabref.placeholder.version}" value="${jabref.version}">
+ <include name="meta.xml" />
+ </replace>
+
+ </target>
+
+ <!-- Prepare for testing -->
+ <target name="buildtest" depends="build, compiletest" description="Build project for testing">
+
+ <mkdir dir="${build.tests}" />
+ <copy todir="${build.tests}">
+ <fileset dir="${tests.dir}">
+ <include name="**" />
+ </fileset>
+ </copy>
+ </target>
+
+ <!-- generate and save some build infos !!! necessary for dynamic build infos !!! -->
+ <!-- todo : replace it by the replace task :-),
+ src/resource/build.properties = template
+ build/resource/build.properties = real info file
+ -->
+ <target name="buildinfos">
+ <tstamp />
+ <!-- get date -->
+ <buildnumber />
+ <!-- generate new build number -> build.number -->
+ <echo message="build number = ${build.number}" />
+ <!-- write the file, please do not edit this lines -->
+ <echo file="${resource.dir}/build.properties">builddate=${TODAY}
+build=${build.number}
+version=${jabref.version}</echo>
+ </target>
+
+
+ <!-- Creates all docs -->
+ <target name="docs" depends="javadocs" description="Generates all the documentation" />
+
+ <!-- Creates javadocs -->
+ <target name="javadocs" depends="compile" description="Generates the javadocs">
+ <mkdir dir="${build.javadocs}" />
+ <javadoc sourcepath="${java.dir}" destdir="${build.javadocs}" author="true" version="true" windowtitle="JabRef API" link="http://docs.oracle.com/javase/6/docs/api/">
+
+ <fileset dir="${java.dir}" defaultexcludes="yes">
+ <include name="**/*.java" />
+ </fileset>
+
+ <classpath refid="classpath" />
+ </javadoc>
+ </target>
+
+ <!-- Creates javadocs for the extensions -->
+ <target name="extension-javadocs" depends="build" description="Generates the javadocs for the extensions archive">
+ <mkdir dir="${build.extension-javadocs}" />
+ <copy todir="${build.extension-javadocs}">
+ <fileset dir="${help.dir}" defaultexcludes="yes">
+ <include name="CustomExports.html" />
+ <include name="CustomImports.html" />
+ </fileset>
+ </copy>
+
+ <javadoc sourcepath="${java.dir}" destdir="${build.extension-javadocs}" author="true" version="true" windowtitle="JabRef-Extensions API" link="http://docs.oracle.com/javase/6/docs/api/" Overview="${extensions.dir}/API/overview.html" access="protected">
+ <!--
+ create javadoc only selectively for classes that
+ users extending JabRef are likely to use
+ -->
+ <fileset dir="${java.dir}" defaultexcludes="yes">
+ <include name="net/sf/jabref/imports/ImportFormat.java" />
+ <include name="net/sf/jabref/imports/ImportFormatReader.java" />
+ <include name="net/sf/jabref/BibtexEntry.java" />
+ <include name="net/sf/jabref/BibtexEntryType.java" />
+ <include name="net/sf/jabref/AuthorList.java" />
+ <include name="net/sf/jabref/AuthorList.java" />
+ <include name="net/sf/jabref/export/layout/LayoutFormatter.java" />
+ </fileset>
+
+ <classpath refid="classpath" />
+ </javadoc>
+ </target>
+
+ <!-- Creates javadocs for the extensions -->
+ <target name="extensions" depends="extension-javadocs" description="Generates the extensions archive">
+ <!-- copy examples -->
+ <copy todir="${build.extensions}">
+ <fileset dir="${java.dir}">
+ <include name="net/sf/jabref/export/layout/format/CurrentDate.java" />
+ <include name="net/sf/jabref/export/layout/format/ToLowerCase.java" />
+ <include name="net/sf/jabref/export/layout/format/HTMLChars.java" />
+ <include name="net/sf/jabref/imports/*Importer.java" />
+ </fileset>
+ </copy>
+ <mkdir dir="${build.extension-layout}" />
+ <copy todir="${build.extension-layout}">
+ <fileset dir="${layout.dir}" />
+ </copy>
+ <copy todir="${build.extensions}">
+ <fileset dir="${extensions.dir}" />
+ <filterset>
+ <filter token="version" value="${jabref.version}" />
+ </filterset>
+ </copy>
+ <!-- create extensions-zip file -->
+ <zip destfile="${build.dir}/jabref-extensions.zip">
+ <zipfileset dir="${build.extensions}" prefix="jabref-extensions" />
+ </zip>
+ </target>
+
+ <target name="clean" depends="win.installer.clean" description="Clean project">
+ <delete dir="${build.dir}" />
+ </target>
+
+ <!-- Unpacks jar needed jar files from lib directory into temp directory. -->
+ <target name="unjarlib" description="Unpacks jars from library">
+ <mkdir dir="${build.tmp}" />
+ <unjar dest="${build.tmp}">
+ <fileset refid="jarsFileset" />
+ <fileset refid="splJars" />
+ </unjar>
+ <!-- done by MrDlib -->
+ <delete includeEmptyDirs="true">
+ <fileset refid="deletableMeta-InfFiles" />
+ </delete>
+ <!-- done by MrDlib -->
+ <!-- rename the microba license file -->
+ <move file="${build.tmp}/license.txt" tofile="${build.tmp}/microba-license.txt" />
+ </target>
+
+
+ <target name="osxjar" depends="jars">
+ <jarbundler dir="${build.lib}"
+ name="JabRef"
+ mainclass="net.sf.jabref.JabRef"
+ jars="${build.lib}/${build.jar}"
+ icon="${images.dir}/JabRef-Logo.icns"
+ version="${jabref.version}"
+ jvmversion="1.6+"
+ stubfile="${osxbin.dir}/JavaApplicationStub"
+ signature="JABr">
+ <documenttype name="BibTeX file" extensions="bib" role="Editor"
+ iconFile="${images.dir}/JabRef-Logo.icns"/>
+ </jarbundler>
+ <!-- After running jarbundler we need to hack the Info.plist file: -->
+ <replace file="${build.lib}/JabRef.app/Contents/Info.plist" token="<key>CFBundleDocumentTypes</key>"
+ value="<key>NSPrincipalClass</key>${line.separator}
+ <string>NSApplication</string>${line.separator}
+ <key>CFBundleDocumentTypes</key>"/>
+ <zip basedir="${build.lib}"
+ destfile="${build.lib}/JabRef-${jabref.version}-OSX.zip"
+ excludes="JabRef.app/Contents/MacOS/JavaApplicationStub"
+ includes="JabRef.app/"
+ level="9">
+ <zipfileset dir="${build.lib}" includes="JabRef.app/Contents/MacOS/JavaApplicationStub" filemode="755" />
+ </zip>
+ </target>
+
+
+ <!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
+ <!-- Build Windows Installer -->
+ <!-- -->
+ <!-- Don't forget to set nsis.executable and launch4j.dir properties -->
+ <!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
+
+ <target name="win.installer.clean" description="Delete Installer and Exe-Wrapper + Temp-files">
+ <delete failonerror="false" dir="${win.installer.dir}/dist" />
+ <delete file="${win.installer.dir}/JabRefSetup.exe" />
+ </target>
+
+ <target name="win.installer.win.pre" description="Precondition for win.installer on Windows">
+ <fail unless="is.windows" message="Not running on windows or NSIS not found. Please make sure that user.properties exists" />
+ </target>
+
+ <target name="win.installer.step1">
+ <!-- Gather everything that will go into the installer in dist -->
+ <mkdir dir="${win.installer.dir}/dist" />
+
+ <copy file="${build.lib}/${build.jar}" todir="${win.installer.dir}/dist" />
+
+ <available property="win.installer.jar.available" file="${win.installer.dir}/dist/${build.jar}" />
+
+ <fail unless="win.installer.jar.available" message="Did not find jar: ${build.jar}" />
+
+ <copy todir="${win.installer.dir}/dist">
+ <fileset dir="${txt.dir}">
+ <include name="gpl2.txt" />
+ <include name="gpl3.txt" />
+ <include name="lesser.txt" />
+ <include name="README" />
+ </fileset>
+ </copy>
+
+ <!-- "Create Exe-Wrapper" -->
+
+ <!-- first of all, update version information -->
+ <script language="javascript"><![CDATA[
+ // create new property with a maximum length of 50 characters
+ var txtFileVersion = project.getProperty("jabref.version");
+ if (txtFileVersion.length()>50) {
+ txtFileVersion = txtFileVersion.substring(0,50);
+ }
+ project.setProperty("txtFileVersion", txtFileVersion);
+ ]]></script>
+ <delete file="jabref-launch4j.tmp" />
+ <copy file="jabref-launch4j.xml" tofile="jabref-launch4j.tmp" />
+ <replace file="jabref-launch4j.tmp">
+ <replacefilter token="1.1.1" value="${jabref.version}" />
+ <replacefilter token="3.3.3" value="${txtFileVersion}" />
+ <replacefilter token="2.2.2.2" value="${jabref.version.full}" />
+ <replacefilter token="./" value="${basedir}/" />
+ </replace>
+
+ </target>
+
+ <target name="win.installer.step2.linux" description="Create Windows launcher and Windows installer on Linux">
+ <!-- launch4j ant task does not work as ld.exe gets the wrong path passed - see https://sourceforge.net/tracker/?func=detail&aid=3598164&group_id=95944&atid=613100 -->
+ <exec
+ executable="${launch4j.dir}/launch4j"
+ dir="${launch4j.dir}">
+ <arg value="${basedir}/jabref-launch4j.tmp"/>
+ </exec>
+
+ <!-- Finally create Windows-Installer -->
+ <exec dir="." executable="${nsis.executable.linux}" failonerror="true">
+ <arg line="'-DVERSION=${jabref.version}' ${win.installer.dir}/setup.nsi" />
+ </exec>
+ </target>
+
+ <target name="win.installer.step2.win" description="Create Windows launcher and Windows installer on Windows">
+ <!-- launch4j ant task does not work as ld.exe gets the wrong path passed - see https://sourceforge.net/tracker/?func=detail&aid=3598164&group_id=95944&atid=613100 -->
+ <exec
+ executable="${launch4j.dir}/launch4jc.exe"
+ dir="${launch4j.dir}">
+ <arg value="${basedir}/jabref-launch4j.tmp"/>
+ </exec>
+
+ <exec dir="." executable="${nsis.executable}" failonerror="true">
+ <arg line="'/DVERSION=${jabref.version}' ${win.installer.dir}/setup.nsi" />
+ </exec>
+ </target>
+
+ <target name="win.installer.step3">
+ <move file="${win.installer.dir}/JabRefSetup.exe" tofile="${build.lib}/JabRef-${jabref.version}-setup.exe" />
+ <delete dir="${win.installer.dir}/dist" />
+ </target>
+
+ <target name="win.installer" description="Copy files in place to be used by the installer" depends="win.installer.win.pre, jars, win.installer.step1, win.installer.step2.win, win.installer.step3">
+ </target>
+
+ <target name="win.installer.linux" description="Copy files in place to be used by the installer" depends="jars, win.installer.step1, win.installer.step2.linux, win.installer.step3">
+ <delete dir="${win.installer.dir}/dist" />
+
+ </target>
+
+ <target name="test" depends="buildtest" description="Runs all unit tests">
+ <java fork="yes" classname="junit.textui.TestRunner" failonerror="true">
+ <arg value="tests.net.sf.jabref.AllTests" />
+ <classpath refid="classpathTest" />
+ </java>
+ </target>
+
+ <!--+++++++++++++++++++++++++++++++++++++++++++++++++
+ Auxiliary targets
+ +++++++++++++++++++++++++++++++++++++++++++++++++-->
+
+ <target name="profile" depends="jars" description="Profile JabRef">
+ <fail unless="netbeans.home">This target can only run inside the NetBeans IDE.</fail>
+
+ <nbprofiledirect>
+ <classpath refid="classpath" />
+ </nbprofiledirect>
+
+ <property environment="env" />
+ <java fork="true" classname="net.sf.jabref.JabRef" dir="${build.dir}" jvm="${profiler.info.jvm}">
+ <jvmarg value="${profiler.info.jvmargs.agent}" />
+ <jvmarg line="${profiler.info.jvmargs}" />
+ <env key="LD_LIBRARY_PATH" path="${profiler.info.agentpath}:${env.LD_LIBRARY_PATH}" />
+ <classpath refid="classpath" />
+ </java>
+ </target>
+
+ <!--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ What's about the software design ?!;-)
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-->
+
+ <target name="jalopy" description="SOFTWAREDESIGN: source code formatter using the JOELib convention.">
+ <taskdef name="jalopy" classname="de.hunsicker.jalopy.plugin.ant.AntPlugin">
+ <classpath>
+ <pathelement path="${classpath}" />
+ <fileset dir="${lib.dir}">
+ <include name="*.jar" />
+ </fileset>
+ <fileset dir="${buildlib.dir}">
+ <include name="*.jar" />
+ </fileset>
+ </classpath>
+ </taskdef>
+ <jalopy fileformat="unix" convention="${src.dir}/java/jalopy.format.convention.xml" history="file" historymethod="adler32" loglevel="error" threads="2" classpathref="classpath" backup="bak">
+ <fileset dir="${src.dir}">
+ <include name="java/net/sf/jabref/**/*.java" />
+ </fileset>
+ </jalopy>
+ </target>
+
+ <taskdef name="jarbundler" classpath="${buildlib.dir}/jarbundler-2.2.0.jar" classname="net.sourceforge.jarbundler.JarBundler" />
+
+ <target name="compresssrc">
+ <!-- clone current repo into tmp dir. Reason: we want to have a clean src.zip, but do not want to execute "git clean -xdf" to allow developers having some temporary files (and user.properties) -->
+ <mkdir dir="${temp.dir}"/>
+ <exec executable="git" searchpath="true" failifexecutionfails="true" outputproperty="devnull" errorproperty="devnull">
+ <arg value="clone" />
+ <arg value="${basedir}/.." />
+ <arg value="${temp.dir}" />
+ </exec>
+
+ <!-- ensure correct line endings -->
+ <exec executable="git" searchpath="true" failifexecutionfails="true" outputproperty="devnull" errorproperty="devnull" dir="${temp.dir}">
+ <arg value="config" />
+ <arg value="core.autocrlf" />
+ <arg value="${git.core.autocrlf}" />
+ </exec>
+ <exec executable="git" searchpath="true" failifexecutionfails="true" outputproperty="devnull" errorproperty="devnull" dir="${temp.dir}">
+ <arg value="rm" />
+ <arg value="--cached" />
+ <arg value="-r" />
+ <arg value="." />
+ </exec>
+ <exec executable="git" searchpath="true" failifexecutionfails="true" outputproperty="devnull" errorproperty="devnull" dir="${temp.dir}">
+ <arg value="reset" />
+ <arg value="--hard" />
+ </exec>
+
+ <!-- we want to have jabref-${jabref.version} as main directory -->
+ <mkdir dir="${distsrc}" />
+ <move file="${temp.dir}/jabref" tofile="${distsrc}/jabref-${jabref.version}" />
+ </target>
+
+ <target name="zipsrc">
+ <tempfile property="temp.dir" destDir="${java.io.tmpdir}" prefix="jabrefsrc"/>
+ <property name="distsrc" value="${temp.dir}/distsrc/" />
+ <antcall target="compresssrc">
+ <param name="git.core.autocrlf" value="true" />
+ </antcall>
+ <zip destfile="${build.lib}/JabRef-${jabref.version}-src.zip" basedir="${distsrc}" level="9" />
+ <delete dir="${temp.dir}" failonerror="no"/>
+ </target>
+
+ <target name="bzip2src">
+ <tempfile property="temp.dir" destDir="${java.io.tmpdir}" prefix="jabrefsrc"/>
+ <property name="distsrc" value="${temp.dir}/distsrc/" />
+ <antcall target="compresssrc">
+ <param name="git.core.autocrlf" value="false" />
+ </antcall>
+ <tar destfile="${build.lib}/JabRef-${jabref.version}-src.tar.bz2" basedir="${distsrc}" excludes=".git/" compression="bzip2" />
+ <delete dir="${temp.dir}" failonerror="no"/>
+ </target>
+
+ <!-- creates all distribution files in ${build.lib} -->
+ <target name="release" depends="clean, win.installer, non_osx, osxjar, bzip2src, zipsrc" />
+ <target name="release.linux" depends="clean, win.installer.linux, non_osx, osxjar, bzip2src, zipsrc" />
+</project>