joergviola 2010-04-28 21:07:32 +00:00
parent b7d5d32e4b
commit fa145ada2e
7 changed files with 1384 additions and 44 deletions

View File

@ -1,6 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry exported="true" kind="lib" path="lib/activemq-core-5.0.0.jar"/>
<classpathentry exported="true" kind="lib" path="lib/commons-net-1.4.0.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cron4j-2.2.1.jar"/>
<classpathentry exported="true" kind="lib" path="lib/payflow.jar"/>
<classpathentry exported="true" kind="lib" path="lib/ant.jar"/>
<classpathentry exported="true" kind="lib" path="lib/jpedal.jar"/>
<classpathentry exported="true" kind="lib" path="lib/commons-collections-3.1.jar"/>
<classpathentry exported="true" kind="lib" path="lib/junit.jar"/>
<classpathentry exported="true" kind="lib" path="lib/xercesImpl.jar"/>
<classpathentry exported="true" kind="lib" path="lib/jstl.jar"/>
<classpathentry exported="true" kind="lib" path="lib/Verisign.jar"/>
@ -11,8 +19,6 @@
<classpathentry exported="true" kind="lib" path="lib/iText-2.1.7.jar"/>
<classpathentry exported="true" kind="lib" path="lib/swingx-0.9.0.jar"/>
<classpathentry exported="true" kind="lib" path="lib/miglayout-3.7.1-swing.jar"/>
<classpathentry exported="true" kind="lib" path="lib/payflow.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cron4j-2.2.1.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry exported="true" kind="lib" path="lib/log4j.jar"/>
<classpathentry exported="true" kind="lib" path="lib/activation.jar"/>

View File

@ -29,21 +29,15 @@ Bundle-ClassPath: tools.jar,
lib/jfreechart-1.0.11.jar,
lib/javaee.jar,
lib/c3p0-0.9.1.2.jar,
lib/activemq-core-5.0.0.jar,
lib/ant-commons-net.jar,
lib/ant-contrib-1.0b1.jar,
lib/ant-launcher.jar,
lib/ant.jar,
lib/c3p0-oracle-thin-extras-0.9.1.2.jar,
lib/cglib.jar,
lib/commons-codec.jar,
lib/commons-collections-3.1.jar,
lib/commons-logging.jar,
lib/commons-net-1.4.0.jar,
lib/jgraph.jar,
lib/jpedal.jar,
lib/jsp-api.jar,
lib/junit.jar,
lib/logkit.jar,
lib/looks-2.0.4.jar,
lib/ocrs12.jar,
@ -52,9 +46,15 @@ Bundle-ClassPath: tools.jar,
lib/wizard.jar,
lib/xjavadoc-1.1.jar,
lib/xml-apis.jar,
lib/xercesImpl.jar,
lib/junit.jar,
lib/commons-collections-3.1.jar,
lib/ant.jar,
lib/jpedal.jar,
lib/activemq-core-5.0.0.jar,
lib/commons-net-1.4.0.jar,
lib/cron4j-2.2.1.jar,
lib/payflow.jar,
lib/xercesImpl.jar
lib/payflow.jar
Export-Package: Lib,
Lib.email,
Lib.encodings,
@ -411,6 +411,7 @@ Export-Package: Lib,
groovyjarjarasm.asm.signature,
groovyjarjarasm.asm.tree;uses:="groovyjarjarasm.asm",
groovyjarjarcommonscli,
it.sauronsoftware.cron4j,
javatests,
javax.activation,
javax.annotation,
@ -512,6 +513,15 @@ Export-Package: Lib,
javax.resource.spi.work;uses:="javax.resource,javax.transaction.xa",
javax.script,
javax.security.jacc;uses:="javax.servlet.http",
javax.servlet,
javax.servlet.http,
javax.servlet.jsp,
javax.servlet.jsp.el,
javax.servlet.jsp.jstl.core,
javax.servlet.jsp.jstl.fmt,
javax.servlet.jsp.jstl.sql,
javax.servlet.jsp.jstl.tlv,
javax.servlet.jsp.tagext,
javax.transaction;uses:="javax.transaction.xa",
javax.transaction.xa,
javax.xml.bind;
@ -590,6 +600,12 @@ Export-Package: Lib,
org.w3c.dom,
javax.xml.ws,
javax.xml.transform",
junit.awtui,
junit.extensions,
junit.framework,
junit.runner,
junit.swingui,
junit.textui,
jxxload_help;uses:="org.python.core",
net.miginfocom.layout,
net.miginfocom.swing;uses:="net.miginfocom.layout",
@ -704,6 +720,104 @@ Export-Package: Lib,
oracle.jdbc.driver,
oracle.sql.converter",
oracle.sql.converter;uses:="oracle.jdbc.internal,oracle.i18n.text,oracle.i18n.text.converter",
org.apache.activemq,
org.apache.activemq.advisory,
org.apache.activemq.blob,
org.apache.activemq.broker,
org.apache.activemq.broker.ft,
org.apache.activemq.broker.jmx,
org.apache.activemq.broker.region,
org.apache.activemq.broker.region.cursors,
org.apache.activemq.broker.region.group,
org.apache.activemq.broker.region.policy,
org.apache.activemq.broker.region.virtual,
org.apache.activemq.broker.util,
org.apache.activemq.broker.view,
org.apache.activemq.camel,
org.apache.activemq.camel.component,
org.apache.activemq.camel.converter,
org.apache.activemq.command,
org.apache.activemq.filter,
org.apache.activemq.jaas,
org.apache.activemq.jndi,
org.apache.activemq.kaha,
org.apache.activemq.kaha.impl,
org.apache.activemq.kaha.impl.async,
org.apache.activemq.kaha.impl.container,
org.apache.activemq.kaha.impl.data,
org.apache.activemq.kaha.impl.index,
org.apache.activemq.kaha.impl.index.hash,
org.apache.activemq.kaha.impl.index.tree,
org.apache.activemq.management,
org.apache.activemq.memory,
org.apache.activemq.memory.buffer,
org.apache.activemq.memory.list,
org.apache.activemq.network,
org.apache.activemq.network.jms,
org.apache.activemq.openwire,
org.apache.activemq.openwire.tool,
org.apache.activemq.openwire.v1,
org.apache.activemq.openwire.v2,
org.apache.activemq.openwire.v3,
org.apache.activemq.pool,
org.apache.activemq.proxy,
org.apache.activemq.security,
org.apache.activemq.selector,
org.apache.activemq.spring,
org.apache.activemq.state,
org.apache.activemq.store,
org.apache.activemq.store.amq,
org.apache.activemq.store.jdbc,
org.apache.activemq.store.jdbc.adapter,
org.apache.activemq.store.journal,
org.apache.activemq.store.kahadaptor,
org.apache.activemq.store.memory,
org.apache.activemq.thread,
org.apache.activemq.transaction,
org.apache.activemq.transport,
org.apache.activemq.transport.discovery,
org.apache.activemq.transport.discovery.multicast,
org.apache.activemq.transport.discovery.rendezvous,
org.apache.activemq.transport.discovery.simple,
org.apache.activemq.transport.failover,
org.apache.activemq.transport.fanout,
org.apache.activemq.transport.mock,
org.apache.activemq.transport.multicast,
org.apache.activemq.transport.nio,
org.apache.activemq.transport.peer,
org.apache.activemq.transport.reliable,
org.apache.activemq.transport.stomp,
org.apache.activemq.transport.tcp,
org.apache.activemq.transport.udp,
org.apache.activemq.transport.vm,
org.apache.activemq.usage,
org.apache.activemq.util,
org.apache.activemq.wireformat,
org.apache.activemq.xbean,
org.apache.commons.collections,
org.apache.commons.collections.bag,
org.apache.commons.collections.bidimap,
org.apache.commons.collections.buffer,
org.apache.commons.collections.collection,
org.apache.commons.collections.comparators,
org.apache.commons.collections.functors,
org.apache.commons.collections.iterators,
org.apache.commons.collections.keyvalue,
org.apache.commons.collections.list,
org.apache.commons.collections.map,
org.apache.commons.collections.set,
org.apache.commons.net,
org.apache.commons.net.bsd,
org.apache.commons.net.ftp,
org.apache.commons.net.ftp.parser,
org.apache.commons.net.io,
org.apache.commons.net.nntp,
org.apache.commons.net.ntp,
org.apache.commons.net.pop3,
org.apache.commons.net.smtp,
org.apache.commons.net.telnet,
org.apache.commons.net.tftp,
org.apache.commons.net.util,
org.apache.ecs;uses:="org.apache.ecs.xhtml",
org.apache.ecs.filter;uses:="org.apache.ecs",
org.apache.ecs.storage,
@ -866,6 +980,31 @@ Export-Package: Lib,
org.apache.taglibs.standard.tag.rt.xml;uses:="org.xml.sax,org.apache.taglibs.standard.tag.common.xml,javax.xml.transform",
org.apache.taglibs.standard.tei;uses:="javax.servlet.jsp.tagext",
org.apache.taglibs.standard.tlv;uses:="org.xml.sax,javax.servlet.jsp.tagext,org.xml.sax.helpers",
org.apache.tools.ant,
org.apache.tools.ant.filters,
org.apache.tools.ant.filters.util,
org.apache.tools.ant.helper,
org.apache.tools.ant.input,
org.apache.tools.ant.listener,
org.apache.tools.ant.loader,
org.apache.tools.ant.taskdefs,
org.apache.tools.ant.taskdefs.compilers,
org.apache.tools.ant.taskdefs.condition,
org.apache.tools.ant.taskdefs.cvslib,
org.apache.tools.ant.taskdefs.email,
org.apache.tools.ant.taskdefs.rmic,
org.apache.tools.ant.types,
org.apache.tools.ant.types.mappers,
org.apache.tools.ant.types.resolver,
org.apache.tools.ant.types.selectors,
org.apache.tools.ant.types.selectors.modifiedselector,
org.apache.tools.ant.util,
org.apache.tools.ant.util.facade,
org.apache.tools.ant.util.regexp,
org.apache.tools.bzip2,
org.apache.tools.mail,
org.apache.tools.tar,
org.apache.tools.zip,
org.apache.wml,
org.apache.wml.dom,
org.apache.xerces.dom,
@ -1405,6 +1544,45 @@ Export-Package: Lib,
org.jfree.ui.action;uses:="javax.swing",
org.jfree.ui.tabbedui;uses:="javax.swing",
org.jfree.util;uses:="org.jfree.base.config,org.jfree.ui,javax.swing",
org.jpedal,
org.jpedal.color,
org.jpedal.examples,
org.jpedal.examples.acroform,
org.jpedal.examples.contentextractor,
org.jpedal.examples.handlers,
org.jpedal.examples.images,
org.jpedal.examples.jpaneldemo,
org.jpedal.examples.printing,
org.jpedal.examples.simpleviewer,
org.jpedal.examples.simpleviewer.gui,
org.jpedal.examples.simpleviewer.gui.generic,
org.jpedal.examples.simpleviewer.gui.popups,
org.jpedal.examples.simpleviewer.gui.swing,
org.jpedal.examples.simpleviewer.paper,
org.jpedal.examples.simpleviewer.utils,
org.jpedal.examples.text,
org.jpedal.examples.text.extractheadlines,
org.jpedal.exception,
org.jpedal.external,
org.jpedal.fonts,
org.jpedal.fonts.glyph,
org.jpedal.fonts.tt,
org.jpedal.function,
org.jpedal.grouping,
org.jpedal.gui,
org.jpedal.images,
org.jpedal.io,
org.jpedal.objects,
org.jpedal.objects.acroforms,
org.jpedal.objects.acroforms.listeners,
org.jpedal.objects.outlines,
org.jpedal.objects.structuredtext,
org.jpedal.parser,
org.jpedal.render,
org.jpedal.storypad,
org.jpedal.sun,
org.jpedal.utils,
org.jpedal.utils.repositories,
org.postgresql;uses:="org.postgresql.largeobject,org.postgresql.fastpath,org.postgresql.copy",
org.postgresql.copy;uses:="org.postgresql.core,org.postgresql",
org.postgresql.core;uses:="org.postgresql.jdbc2,org.postgresql.copy,org.postgresql",
@ -1471,4 +1649,5 @@ Export-Package: Lib,
org.apache.tools.ant.types,
org.python.core,
jline",
org.w3c.dom.html
org.w3c.dom.html,
paypal.payflow

View File

@ -24,23 +24,17 @@ bin.includes = META-INF/,\
lib/jfreechart-1.0.11.jar,\
lib/javaee.jar,\
tools.jar,\
lib/activemq-core-5.0.0.jar,\
lib/ant-commons-net.jar,\
lib/ant-contrib-1.0b1.jar,\
lib/ant-launcher.jar,\
lib/ant.jar,\
lib/c3p0-0.9.1.2.jar,\
lib/c3p0-oracle-thin-extras-0.9.1.2.jar,\
lib/cglib.jar,\
lib/commons-codec.jar,\
lib/commons-collections-3.1.jar,\
lib/commons-logging.jar,\
lib/commons-net-1.4.0.jar,\
lib/copyLibraries.bat,\
lib/jgraph.jar,\
lib/jpedal.jar,\
lib/jsp-api.jar,\
lib/junit.jar,\
lib/logkit.jar,\
lib/looks-2.0.4.jar,\
lib/ocrs12.jar,\
@ -49,6 +43,12 @@ bin.includes = META-INF/,\
lib/wizard.jar,\
lib/xjavadoc-1.1.jar,\
lib/xml-apis.jar,\
lib/xercesImpl.jar,\
lib/junit.jar,\
lib/commons-collections-3.1.jar,\
lib/ant.jar,\
lib/jpedal.jar,\
lib/activemq-core-5.0.0.jar,\
lib/commons-net-1.4.0.jar,\
lib/cron4j-2.2.1.jar,\
lib/payflow.jar,\
lib/xercesImpl.jar
lib/payflow.jar

View File

@ -21,6 +21,9 @@
<!--<property environment="env"/>-->
<import file="../utils_dev/properties.xml" />
<property name="bundle.name" value="org.adempiere.tools"/>
<property name="bundle.version" value="0.0.0.2"/>
<!-- set path to include the necessary jar files for javac -->
<path id="project.class.path">
<pathelement path="${classpath}" />
@ -67,7 +70,7 @@
<!-- ============================================= -->
<target name="toolsCompile" depends="toolsInit" unless="jars.uptodate">
<!-- compile the java code from ${src} into ${build.dir}S -->
<javac target="1.5" srcdir="${src}" destdir="${build.dir}" deprecation="on" debug="on">
<javac target="1.6" srcdir="${src}" destdir="${build.dir}" deprecation="on" debug="on">
<classpath refid="project.class.path" />
</javac>
<!-- copy all image & sound files from src to the build directory -->
@ -229,6 +232,12 @@
<zipfileset src="lib/Verisign.jar">
<patternset refid="manifest.exclude" />
</zipfileset>
<zipfileset src="lib/payflow.jar">
<patternset refid="manifest.exclude" />
</zipfileset>
<zipfileset src="lib/miglayout-3.7.1-swing.jar">
<patternset refid="manifest.exclude" />
</zipfileset>
<zipfileset src="lib/jpayment.jar">
<patternset refid="manifest.exclude" />
</zipfileset>
@ -257,7 +266,7 @@
<zipfileset src="lib/jpedal.jar">
<patternset refid="manifest.exclude" />
</zipfileset>
<zipfileset src="lib/itext-1.4.8.jar">
<zipfileset src="lib/iText-2.1.7.jar">
<patternset refid="manifest.exclude" />
</zipfileset>
<!-- JFreeChart -->
@ -309,6 +318,10 @@
<zipfileset src="lib/xercesImpl.jar">
<patternset refid="manifest.exclude" />
</zipfileset>
<!-- cron job -->
<zipfileset src="lib/cron4j-2.2.1.jar">
<patternset refid="manifest.exclude" />
</zipfileset>
</jar>
</target>
@ -371,6 +384,12 @@
<zipfileset src="lib/Verisign.jar">
<patternset refid="manifest.exclude" />
</zipfileset>
<zipfileset src="lib/payflow.jar">
<patternset refid="manifest.exclude" />
</zipfileset>
<zipfileset src="lib/miglayout-3.7.1-swing.jar">
<patternset refid="manifest.exclude" />
</zipfileset>
<zipfileset src="lib/jpayment.jar">
<patternset refid="manifest.exclude" />
</zipfileset>
@ -417,7 +436,7 @@
<zipfileset src="lib/jpedal.jar">
<patternset refid="manifest.exclude" />
</zipfileset>
<zipfileset src="lib/itext-1.4.8.jar">
<zipfileset src="lib/iText-2.1.7.jar">
<patternset refid="manifest.exclude" />
</zipfileset>
<zipfileset src="lib/swingx-0.9.0.jar">
@ -466,6 +485,66 @@
</target>
<target name="plugin">
<jar destfile="${dist.dir}/plugins/${bundle.name}_${bundle.version}.jar" manifest="META-INF/MANIFEST.MF">
<fileset dir="${basedir}">
<include name="lib/jstl.jar"/>
<include name="lib/Verisign.jar"/>
<include name="lib/standard.jar"/>
<include name="lib/barbecue-1.5-beta1.jar"/>
<include name="lib/poi-3.0.1-FINAL-20070705.jar"/>
<include name="lib/jnlp.jar"/>
<include name="lib/iText-2.1.7.jar"/>
<include name="lib/swingx-0.9.0.jar"/>
<include name="lib/miglayout-3.7.1-swing.jar"/>
<include name="lib/log4j.jar"/>
<include name="lib/activation.jar"/>
<include name="lib/mail.jar"/>
<include name="lib/jpayment.jar"/>
<include name="lib/bsh-2.0b5.jar"/>
<include name="lib/script-api.jar"/>
<include name="lib/bsh-engine.jar"/>
<include name="lib/groovy-all-1.5.1.jar"/>
<include name="lib/groovy-engine.jar"/>
<include name="lib/jython.jar"/>
<include name="lib/jython-engine.jar"/>
<include name="lib/jcommon-1.0.14.jar"/>
<include name="lib/jfreechart-1.0.11.jar"/>
<include name="lib/javaee.jar"/>
<include name="lib/activemq-core-5.0.0.jar"/>
<include name="lib/ant-commons-net.jar"/>
<include name="lib/ant-contrib-1.0b1.jar"/>
<include name="lib/ant-launcher.jar"/>
<include name="lib/ant.jar"/>
<include name="lib/c3p0-0.9.1.2.jar"/>
<include name="lib/c3p0-oracle-thin-extras-0.9.1.2.jar"/>
<include name="lib/cglib.jar"/>
<include name="lib/commons-codec.jar"/>
<include name="lib/commons-collections-3.1.jar"/>
<include name="lib/commons-logging.jar"/>
<include name="lib/commons-net-1.4.0.jar"/>
<include name="lib/copyLibraries.bat"/>
<include name="lib/jgraph.jar"/>
<include name="lib/jpedal.jar"/>
<include name="lib/jsp-api.jar"/>
<include name="lib/junit.jar"/>
<include name="lib/logkit.jar"/>
<include name="lib/looks-2.0.4.jar"/>
<include name="lib/ocrs12.jar"/>
<include name="lib/ojdbc14.jar"/>
<include name="lib/postgresql.jar"/>
<include name="lib/wizard.jar"/>
<include name="lib/xjavadoc-1.1.jar"/>
<include name="lib/xml-apis.jar"/>
<include name="lib/cron4j-2.2.1.jar"/>
<include name="lib/payflow.jar"/>
<include name="lib/xercesImpl.jar"/>
<include name="META-INF/**/*"/>
<include name="plugin.xml"/>
</fileset>
</jar>
</target>
<!-- ============================================= -->
<!-- Clean up -->

View File

@ -0,0 +1,195 @@
<?xml version="1.0"?>
<project name="a4e-jdt-macros" basedir="." xmlns:ant4eclipse="antlib:org.ant4eclipse">
<!-- define ant4eclipse tasks -->
<taskdef uri="antlib:org.ant4eclipse" resource="org/ant4eclipse/antlib.xml" />
<!-- ===============================================================================================================
macro: createCompilerOptionFile
Generates an option file used for the compilation process. Especially useful to generate preferences with
default settings.
Parameters:
- destination: the location where the file will be written to.
- sourcelevel: the language level for the sources.
- targetlevel: the level for the generated byte code.
==============================================================================================================
-->
<macrodef name="createCompilerOptionFile">
<attribute name="destination"/>
<attribute name="sourcelevel" default="1.5"/>
<attribute name="targetlevel" default="1.5"/>
<sequential>
<echo file="@{destination}">eclipse.preferences.version=1${line.separator}</echo>
<echo file="@{destination}" append="true">org.eclipse.jdt.core.compiler.codegen.targetPlatform=@{targetlevel}${line.separator}</echo>
<echo file="@{destination}" append="true">org.eclipse.jdt.core.compiler.compliance=@{targetlevel}${line.separator}</echo>
<echo file="@{destination}" append="true">org.eclipse.jdt.core.compiler.source=@{sourcelevel}${line.separator}</echo>
</sequential>
</macrodef>
<!-- ===============================================================================================================
macro: buildJdtProject
builds a single JDT-based eclipse project
Parameters:
- workspace: the root directory of the workspace that contains the JDT project
- projectName: the name of the project that should be built (must exist in the workspace)
- targetPlatformId (optional): the id of the target platform that should be used when working with pde-projects
The following parameters control the source and target level:
- defaultCompilerOptionsFile (optional): A file that is used to set default compiler options
- targetLevel (optional): Specifies the class file version that should be generated by the compiler
- sourceLevel (optional): Specifies language version of the source files. Defaults to targetLevel.
Note: you only should set defaultCompilerOptionsFile *or* targetLevel/sourceLevel. If both are set,
defaultCompilerOptionsFile 'wins', i.e. overrides the target/sourceLevel argument
==============================================================================================================
-->
<macrodef name="buildJdtProject" description="builds a single JDT-based eclipse project">
<attribute name="workspaceDirectory" />
<attribute name="projectName" />
<attribute name="targetPlatformId" default="" />
<attribute name="defaultCompilerOptionsFile" default=""/>
<attribute name="targetLevel" default=""/>
<attribute name="sourceLevel" default="@{targetLevel}"/>
<!-- element definitions for lifecycle phases -->
<element name="initialize"
optional="true"
description="Initialize build state, e.g. set properties or create directories." />
<element name="generate-sources"
optional="true"
description="Generate any source code for inclusion in compilation." />
<element name="generate-resources"
optional="true"
description="Generate resources for inclusion in the package." />
<element name="pre-compile"
optional="true"
description="Execute additional steps before compilation." />
<element name="post-compile"
optional="true"
description="Post-process the generated files from compilation, for example to do bytecode enhancement on Java classes." />
<element name="post-copy-resources"
optional="true"
description="Post-process a source folder after resource have been copied to classes folder" />
<element name="postprocess-output-directory"
optional="true"
description="Post-process an output folder after sources have been compiled resources have been copied. " />
<element name="finish"
optional="true"
description="Finish the build process. This can be used to take further actions, like packaging the project" />
<sequential>
<echo>
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * Building project @{projectName}
* * * in workspace @{workspaceDirectory}
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
</echo>
<ant4eclipse:executeJdtProject workspaceDirectory="@{workspaceDirectory}"
projectName="@{projectName}"
prefix="buildJdtProject">
<jdtClasspathContainerArgument key="target.platform"
value="@{targetPlatformId}" />
<ant4eclipse:forProject>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Step 1: Initialize
- Initialize build state, e.g. set properties or create directories.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- template element 'intialize' -->
<initialize />
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Step 2: Generate-sources
- Generate any source code for inclusion in compilation.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- template element 'generate-sources' -->
<generate-sources />
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Step 3: Generate-resources
- Generate resources for inclusion in the package.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- template element 'generate-resources' -->
<generate-resources />
</ant4eclipse:forProject>
<!-- Step 4: clean output directories -->
<ant4eclipse:forEachOutputDirectory>
<echo> * Cleaning output directory '${buildJdtProject.output.directory}'</echo>
<delete dir="${buildJdtProject.output.directory}" quiet="true" />
<mkdir dir="${buildJdtProject.output.directory}" />
</ant4eclipse:forEachOutputDirectory>
<!-- Step 5: Compile the project using the eclipse java compiler (ejc) -->
<ant4eclipse:forProject>
<!-- template element 'pre-compile' -->
<pre-compile />
<echo>Compiling jdt project '${buildJdtProject.project.name}'</echo>
<echo> - source directories -> ${buildJdtProject.source.directories}</echo>
<echo> - output directories -> ${buildJdtProject.default.output.directory}</echo>
<echo> - bootclasspath -> ${buildJdtProject.boot.classpath}</echo>
<echo> - classpath -> ${buildJdtProject.classpath.absolute.compiletime}</echo>
<javac
compiler="org.ant4eclipse.ant.jdt.ecj.JDTCompilerAdapter"
source="@{sourceLevel}" target="@{targetLevel}">
<!-- let ejc read compiler settings from the project's '.settings' directory -->
<compilerarg value="compiler.options.file=${buildJdtProject.project.directory}/.settings/org.eclipse.jdt.core.prefs"
compiler="org.ant4eclipse.ant.jdt.ecj.JDTCompilerAdapter" />
<!-- Set default options if no project specific settings have been made -->
<compilerarg value="default.compiler.options.file=@{defaultCompilerOptionsFile}"
compiler="org.ant4eclipse.ant.jdt.ecj.JDTCompilerAdapter" />
<!-- Set Compiler Arguments from 'executeJdtProject' task (source folders, access restrictions) -->
<compilerarg value="compiler.args.refid=buildJdtProject.compiler.args" compiler="org.ant4eclipse.ant.jdt.ecj.JDTCompilerAdapter" />
<!-- set the source folders that are passed in from 'fromProject' -->
<src refid="buildJdtProject.source.directories.path" />
<!-- set the bootclasspath, i.e. the JRE we compile against -->
<bootclasspath refid="buildJdtProject.boot.classpath.path" />
<!-- set our compile-time classpath -->
<classpath refid="buildJdtProject.classpath.absolute.compiletime.path" />
</javac>
<!-- template element 'post-compile' -->
<post-compile />
</ant4eclipse:forProject>
<!-- Step 6: Copy resources (non-java-files) from sourcedirectories to their output directories -->
<ant4eclipse:forEachSourceDirectory>
<echo>Copying resources from directory '${buildJdtProject.source.directory}' to '${buildJdtProject.output.directory}'</echo>
<copy todir="${buildJdtProject.output.directory}">
<fileset dir="${buildJdtProject.source.directory}">
<exclude name="**/*.java" />
</fileset>
</copy>
<!-- Invoke 'post-copy-resources' template to allow customized processing -->
<post-copy-resources />
</ant4eclipse:forEachSourceDirectory>
<!-- Step 7: Post-Process output directories -->
<ant4eclipse:forEachOutputDirectory>
<postprocess-output-directory />
</ant4eclipse:forEachOutputDirectory>
<!-- Step 8: Finish build process -->
<ant4eclipse:forProject>
<!-- Invoke 'finish' template -->
<finish/>
</ant4eclipse:forProject>
</ant4eclipse:executeJdtProject>
</sequential>
</macrodef>
</project>

View File

@ -0,0 +1,852 @@
<?xml version="1.0"?>
<project name="build"
basedir="."
xmlns:ant4eclipse="antlib:org.ant4eclipse"
xmlns:antcontrib="antlib:net.sf.antcontrib">
<!-- define antcontrib tasks -->
<taskdef uri="antlib:net.sf.antcontrib"
resource="net/sf/antcontrib/antlib.xml" />
<!-- define ant4eclipse tasks -->
<taskdef uri="antlib:org.ant4eclipse"
resource="org/ant4eclipse/ant/antlib.xml" />
<!--definition of directory properties -->
<property name="a4e.plugins.directory" value="plugins" />
<property name="a4e.features.directory" value="features" />
<property name="a4e.temp.directory" value="temp" />
<property name="a4e.self.directory" value="@dot" />
<!-- =================================
target: buildPlugin
================================= -->
<macrodef name="buildPlugin" description="builds a single plug-in project.">
<attribute name="workspaceDirectory" />
<attribute name="projectName" />
<attribute name="targetPlatformId" />
<attribute name="destination" />
<attribute name="packageAsJar" default="true" />
<attribute name="buildSourceJar" default="true" />
<attribute name="defaultCompilerOptionsFile" default="" />
<attribute name="newBundleVersion" default="" />
<attribute name="clean" default="true" />
<!-- element definitions for lifecycle phases -->
<element name="validate"
optional="true"
description="Validate the project if it's correct and all necessary information is available." />
<element name="initialize"
optional="true"
description="Initialize build state, e.g. set properties or create directories." />
<element name="generate-sources"
optional="true"
description="Generate any source code for inclusion in compilation." />
<element name="generate-resources"
optional="true"
description="Generate resources for inclusion in the package." />
<element name="pre-compile"
optional="true"
description="Execute additional steps before compilation." />
<element name="post-compile"
optional="true"
description="Post-process the generated files from compilation, for example to do bytecode enhancement on Java classes." />
<element name="pre-package-library"
optional="true"
description="Execute additonal steps before packaging a library" />
<element name="post-package-library"
optional="true"
description="Execute additonal steps after packaging a library" />
<element name="prepare-package"
optional="true"
description="Copy the final package from the destination to aremote repository or whatever." />
<element name="deploy"
optional="true"
description="Perform any operations necessary to prepare a package before the actual packaging." />
<sequential>
<ant4eclipse:executePluginProject workspaceDirectory="@{workspaceDirectory}"
projectName="@{projectName}"
prefix="buildPlugin">
<ant4eclipse:forProject>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Step 1: Set the bundle version
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<condition property="buildPlugin.newBundleVersion"
value="${buildPlugin.bundle.resolved.version}"
else="@{newBundleVersion}">
<equals arg1="@{newBundleVersion}" arg2="" />
</condition>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Step 2: Validate
- Validate the project is correct and all necessary information is available.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- check project consistency -->
<ant4eclipse:checkPluginProject workspaceDirectory="@{workspaceDirectory}"
projectName="@{projectName}" />
<!-- template element 'validate' -->
<validate />
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Step 3: Initialize
- Initialize build state, e.g. set properties or create directories.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- try to create the target directory -->
<mkdir dir="@{destination}" />
<!-- template element 'intialize' -->
<initialize />
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Step 4: Generate-sources
- Generate any source code for inclusion in compilation.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- template element 'generate-sources' -->
<generate-sources />
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Step 5: Generate-resources
- Generate resources for inclusion in the package.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- template element 'generate-resources' -->
<generate-resources />
</ant4eclipse:forProject>
</ant4eclipse:executePluginProject>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Step 6: Compile
- Compiles the plug-in project (only in case that the project has the nature 'org.eclipse.jdt.core.javanature').
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<antcontrib:if>
<ant4eclipse:hasNature workspaceDirectory="@{workspaceDirectory}"
projectName="@{projectName}"
nature="org.eclipse.jdt.core.javanature" />
<antcontrib:then>
<!-- Execute the JDT project -->
<ant4eclipse:executeJdtProject workspaceDirectory="@{workspaceDirectory}"
projectName="@{projectName}"
prefix="buildPlugin">
<jdtClasspathContainerArgument key="target.platform"
value="@{targetPlatformId}" />
<!-- Step 6.1: Clean all output directories -->
<ant4eclipse:forEachOutputDirectory if="@{clean}">
<scrub-directory dir="${buildPlugin.output.directory}" />
</ant4eclipse:forEachOutputDirectory>
<!-- Step 6.2: Compile the sources -->
<ant4eclipse:forProject filter="(buildPlugin.source.directories=*)">
<!-- template element 'pre-compile' -->
<pre-compile />
<echo>Compiling pde project '${buildPlugin.project.name}'</echo>
<!-- <echo> - source directories -> ${buildPlugin.source.directories}</echo>
<echo> - output directories -> ${buildPlugin.default.output.directory}</echo>
<echo> - bootclasspath -> ${buildPlugin.boot.classpath}</echo>
<echo> - classpath -> ${buildPlugin.classpath.absolute.compiletime}</echo> -->
<mkdir dir="${buildPlugin.default.output.directory}" />
<javac destdir="${buildPlugin.default.output.directory}"
compiler="org.ant4eclipse.ant.jdt.ecj.JDTCompilerAdapter"
source="1.5"
target="1.5">
<src refid="buildPlugin.source.directories.path" />
<bootclasspath refid="buildPlugin.boot.classpath.path" />
<classpath refid="buildPlugin.classpath.absolute.compiletime.path" />
<!-- we have to pass in the reference to the additional compiler arguments -->
<compilerarg value="compiler.args.refid=buildPlugin.compiler.args"
compiler="org.ant4eclipse.ant.jdt.ecj.JDTCompilerAdapter" />
<!-- we also have to pass path of the compiler options file to support project specific compiler options -->
<compilerarg value="compiler.options.file=${buildPlugin.project.directory}/.settings/org.eclipse.jdt.core.prefs"
compiler="org.ant4eclipse.ant.jdt.ecj.JDTCompilerAdapter" />
<!-- pass the path of the default compiler options file -->
<compilerarg value="default.compiler.options.file=@{defaultCompilerOptionsFile}"
compiler="org.ant4eclipse.ant.jdt.ecj.JDTCompilerAdapter" />
</javac>
<!-- template element 'post-compile' -->
<post-compile />
</ant4eclipse:forProject>
<!-- Step 6.3: Copy the resources -->
<ant4eclipse:forEachSourceDirectory>
<echo>Copying resources from directory '${buildPlugin.source.directory}' to '${buildPlugin.output.directory}'</echo>
<copy todir="${buildPlugin.output.directory}">
<fileset dir="${buildPlugin.source.directory}">
<exclude name="**/*.java" />
</fileset>
</copy>
</ant4eclipse:forEachSourceDirectory>
</ant4eclipse:executeJdtProject>
</antcontrib:then>
</antcontrib:if>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Step 7: Package the bundle
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<ant4eclipse:executePluginProject workspaceDirectory="@{workspaceDirectory}"
projectName="@{projectName}"
prefix="buildPlugin">
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Step 7.1: Pack all libraries except the 'self' library
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<ant4eclipse:forEachPluginLibrary filter="(buildPlugin.library.isSelf=false)">
<echo>Packing library '${buildPlugin.library.name}'</echo>
<!-- template element 'pre-package-library' -->
<pre-package-library />
<!-- copy the content of the library to a temporary folder -->
<ant4eclipse:executePluginLibrary workspace="@{workspaceDirectory}"
projectname="${buildPlugin.project.name}"
libraryname="${buildPlugin.library.name}">
<ant4eclipse:forEachOutputDirectory>
<echo>Copying resources from directory '${executePluginLibrary.output.directory}' to '@{destination}/${a4e.temp.directory}/${buildPlugin.library.name}'</echo>
<copy todir="@{destination}/${a4e.temp.directory}/${buildPlugin.library.name}">
<fileset dir="${executePluginLibrary.output.directory}" />
</copy>
</ant4eclipse:forEachOutputDirectory>
<ant4eclipse:forEachSourceDirectory>
<echo>Copying resources from directory '${executePluginLibrary.source.directory}' to '@{destination}/${a4e.temp.directory}/${buildPlugin.library.name}'</echo>
<copy todir="@{destination}/${a4e.temp.directory}/${buildPlugin.library.name}"
overwrite="true">
<fileset dir="${executePluginLibrary.source.directory}">
<exclude name="**/*.java" />
</fileset>
</copy>
</ant4eclipse:forEachSourceDirectory>
</ant4eclipse:executePluginLibrary>
<!--delete the library file if on exists -->
<delete file="@{destination}/${a4e.plugins.directory}/${buildPlugin.library.name}/${buildPlugin.library.name}"
quiet="true" />
<mkdir dir="@{destination}/${a4e.plugins.directory}/${buildPlugin.library.name}" />
<!-- jar the library file if on exists -->
<jar destfile="@{destination}/${a4e.plugins.directory}/${buildPlugin.library.name}/${buildPlugin.library.name}"
basedir="@{destination}/${a4e.temp.directory}/${buildPlugin.library.name}" />
<!-- move the jar file to the pde project folder project -->
<move file="@{destination}/${a4e.plugins.directory}/${buildPlugin.library.name}/${buildPlugin.library.name}"
todir="${buildPlugin.project.directory}" />
<!-- finally delete the temp file -->
<delete dir="@{destination}/${a4e.plugins.directory}/${buildPlugin.library.name}" />
<delete dir="@{destination}/${a4e.temp.directory}/" />
<!-- template element 'post-package-library' -->
<post-package-library />
</ant4eclipse:forEachPluginLibrary>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Step 7.2: Package the 'self' library
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<ant4eclipse:forEachPluginLibrary filter="(buildPlugin.library.isSelf=true)">
<echo>Packing library '.'</echo>
<!-- template element 'pre-package-library' -->
<pre-package-library />
<!-- just copy everything to the 'self' directory -->
<ant4eclipse:executePluginLibrary workspaceDirectory="@{workspaceDirectory}"
projectname="${buildPlugin.project.name}"
libraryname="${buildPlugin.library.name}">
<ant4eclipse:forEachOutputDirectory>
<echo>Copying resources from directory '${executePluginLibrary.output.directory}' to '${buildPlugin.project.directory}/${a4e.self.directory}'</echo>
<copy todir="${buildPlugin.project.directory}/${a4e.self.directory}">
<fileset dir="${executePluginLibrary.output.directory}" />
</copy>
</ant4eclipse:forEachOutputDirectory>
<ant4eclipse:forEachSourceDirectory>
<echo>Copying resources from directory '${executePluginLibrary.source.directory}' to '${buildPlugin.project.directory}/${a4e.self.directory}'</echo>
<copy todir="${buildPlugin.project.directory}/${a4e.self.directory}">
<fileset dir="${executePluginLibrary.source.directory}">
<exclude name="**/*.java" />
</fileset>
</copy>
</ant4eclipse:forEachSourceDirectory>
</ant4eclipse:executePluginLibrary>
<!-- template element 'post-package-library' -->
<post-package-library />
</ant4eclipse:forEachPluginLibrary>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Step 7.3: Package the bundle
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<ant4eclipse:forProject>
<!-- template element 'prepare-package' -->
<prepare-package />
<!-- copy the (in the build.properties) specified content to the destination directory -->
<copy todir="@{destination}/${a4e.plugins.directory}/${buildPlugin.bundle.symbolicname}_${buildPlugin.newBundleVersion}"
overwrite="true">
<!-- file set defined by the projects build properties -->
<ant4eclipse:pdeProjectFileSet workspaceDirectory="@{workspaceDirectory}"
projectname="@{projectName}" />
</copy>
<!-- delete the (temporary) self-directory -->
<delete dir="${buildPlugin.project.directory}/${a4e.self.directory}"
quiet="true" />
<!-- 'patch' the manifest with the resolved bundle version -->
<manifest file="@{destination}/${a4e.plugins.directory}/${buildPlugin.bundle.symbolicname}_${buildPlugin.newBundleVersion}/META-INF/MANIFEST.MF"
mode="update">
<attribute name="Bundle-Version"
value="${buildPlugin.newBundleVersion}" />
</manifest>
</ant4eclipse:forProject>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- if bundle should be packaged as a jar file (the default),
- we have to jar the bundle.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<ant4eclipse:forProject if="@{packageAsJar}">
<jar destfile="@{destination}/${a4e.plugins.directory}/${buildPlugin.bundle.symbolicname}_${buildPlugin.newBundleVersion}.jar"
basedir="@{destination}/${a4e.plugins.directory}/${buildPlugin.bundle.symbolicname}_${buildPlugin.newBundleVersion}"
manifest="@{destination}/${a4e.plugins.directory}/${buildPlugin.bundle.symbolicname}_${buildPlugin.newBundleVersion}/META-INF/MANIFEST.MF" />
</ant4eclipse:forProject>
<ant4eclipse:forProject if="@{packageAsJar}">
<delete dir="@{destination}/${a4e.plugins.directory}/${buildPlugin.bundle.symbolicname}_${buildPlugin.newBundleVersion}"
quiet="true"
deleteonexit="true" />
</ant4eclipse:forProject>
<ant4eclipse:forProject>
<!-- template element 'deploy' -->
<deploy />
</ant4eclipse:forProject>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Step 8: Build the source bundle
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<ant4eclipse:forProject if="@{buildSourceJar}">
<buildSourceBundle workspaceDirectory="@{workspaceDirectory}"
projectName="@{projectName}"
destination="@{destination}"
newBundleVersion="@{newBundleVersion}" />
</ant4eclipse:forProject>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Step 9: Cleaning up
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<ant4eclipse:forProject>
<!-- the property has been set, so we need to remove it otherwise it cannot be altered -->
<!-- by subsequent calls of this macro. -->
<antcontrib:var unset="true" name="buildPlugin.newBundleVersion" />
</ant4eclipse:forProject>
</ant4eclipse:executePluginProject>
</sequential>
</macrodef>
<!-- =================================
target: buildSourceBundle
Builds a source bundle for a given eclipse plug-in project.
================================= -->
<macrodef name="buildSourceBundle"
description="builds a source bundle for a given plug-in project.">
<attribute name="workspaceDirectory" />
<attribute name="projectName" />
<attribute name="destination" />
<attribute name="newBundleVersion" default="" />
<sequential>
<ant4eclipse:executePluginProject workspaceDirectory="@{workspaceDirectory}"
projectName="@{projectName}"
prefix="buildPlugin">
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Step 1: Set the bundle version
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<ant4eclipse:forProject>
<condition property="buildPlugin.newBundleVersion"
value="@{newBundleVersion}"
else="${buildPlugin.bundle.resolved.version}">
<isset property="@{newBundleVersion}" />
</condition>
</ant4eclipse:forProject>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Step 2: Copy the source of the 'self' library to the
- destination location
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<ant4eclipse:forEachPluginLibrary filter="(buildPlugin.library.isSelf=true)">
<ant4eclipse:executePluginLibrary workspaceDirectory="@{workspaceDirectory}"
projectname="${buildPlugin.project.name}"
libraryname="${buildPlugin.library.name}">
<ant4eclipse:forEachSourceDirectory>
<copy todir="@{destination}/${a4e.plugins.directory}/${buildPlugin.bundle.symbolicname}.source_${buildPlugin.newBundleVersion}/">
<fileset dir="${executePluginLibrary.source.directory}" />
</copy>
</ant4eclipse:forEachSourceDirectory>
</ant4eclipse:executePluginLibrary>
</ant4eclipse:forEachPluginLibrary>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Step 3: Package the source of all the library source (except
- the 'self' library ) to the destination location
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<ant4eclipse:forEachPluginLibrary filter="(buildPlugin.library.isSelf=false)">
<ant4eclipse:executePluginLibrary workspaceDirectory="@{workspaceDirectory}"
projectname="${buildPlugin.project.name}"
libraryname="${buildPlugin.library.name}">
<ant4eclipse:forEachSourceDirectory>
<copy todir="@{destination}/${a4e.plugins.directory}/${buildPlugin.bundle.symbolicname}.source_${buildPlugin.newBundleVersion}/${buildPlugin.library.name}.src">
<fileset dir="${executePluginLibrary.source.directory}" />
</copy>
</ant4eclipse:forEachSourceDirectory>
</ant4eclipse:executePluginLibrary>
</ant4eclipse:forEachPluginLibrary>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Step 4: Copy all 'non-library' resources to the destination
- location and create the manifest file
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<ant4eclipse:forProject>
<!-- copy the (in the build.properties) specified content to the destination directory -->
<copy todir="@{destination}/${a4e.plugins.directory}/${buildPlugin.bundle.symbolicname}.source_${buildPlugin.newBundleVersion}"
overwrite="true">
<!-- file set defined by the projects build properties -->
<ant4eclipse:pdeProjectFileSet workspaceDirectory="@{workspaceDirectory}"
projectname="@{projectName}"
excludeLibraries="true"
sourceBundle="true" />
</copy>
<mkdir dir="@{destination}/${a4e.plugins.directory}/${buildPlugin.bundle.symbolicname}.source_${buildPlugin.newBundleVersion}/META-INF" />
<!-- create the bundle manifest -->
<manifest file="@{destination}/${a4e.plugins.directory}/${buildPlugin.bundle.symbolicname}.source_${buildPlugin.newBundleVersion}/META-INF/MANIFEST.MF">
<attribute name="Bundle-ManifestVersion" value="2" />
<attribute name="Bundle-Version"
value="${buildPlugin.newBundleVersion}" />
<attribute name="Bundle-SymbolicName"
value="${buildPlugin.bundle.symbolicname}.source" />
<attribute name="Eclipse-SourceBundle"
value="${buildPlugin.bundle.symbolicname};version=&quot;${buildPlugin.newBundleVersion}&quot;;roots:=&quot;${buildPlugin.build.librarysourceroots}&quot;" />
</manifest>
</ant4eclipse:forProject>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Step 5: create the jar file
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<ant4eclipse:forProject>
<jar destfile="@{destination}/${a4e.plugins.directory}/${buildPlugin.bundle.symbolicname}.source_${buildPlugin.newBundleVersion}.jar"
basedir="@{destination}/${a4e.plugins.directory}/${buildPlugin.bundle.symbolicname}.source_${buildPlugin.newBundleVersion}"
manifest="@{destination}/${a4e.plugins.directory}/${buildPlugin.bundle.symbolicname}.source_${buildPlugin.newBundleVersion}/META-INF/MANIFEST.MF" />
</ant4eclipse:forProject>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Step 6: delete the (temporary) bundle directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<ant4eclipse:forProject>
<delete dir="@{destination}/${a4e.plugins.directory}/${buildPlugin.bundle.symbolicname}.source_${buildPlugin.newBundleVersion}"
quiet="true"
deleteonexit="true" />
</ant4eclipse:forProject>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Step 7: Cleaning up
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<ant4eclipse:forProject>
<!-- the property has been set, so we need to remove it otherwise it cannot be altered -->
<!-- by subsequent calls of this macro. -->
<antcontrib:var unset="true" name="buildPlugin.newBundleVersion" />
</ant4eclipse:forProject>
</ant4eclipse:executePluginProject>
</sequential>
</macrodef>
<!-- ~~~ PRIVATE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- Clears a directory under a certain condition. -->
<!-- -->
<!-- @param dir The directory which has to be cleaned. -->
<!-- @param condition The condition which decides whether the cleanup takes place or not. -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<macrodef name="scrub-directory">
<attribute name="dir" />
<attribute name="condition" default="true" />
<sequential>
<antcontrib:if>
<antcontrib:istrue value="@{condition}" />
<antcontrib:then>
<echo>Scrubbing directory '@{dir}'</echo>
<delete dir="@{dir}" quiet="true" />
<mkdir dir="@{dir}" />
</antcontrib:then>
</antcontrib:if>
</sequential>
</macrodef>
<!-- =================================
macro : buildProduct
description : Builds an eclipse product. Each contained plug-in project will be build.
================================= -->
<macrodef name="buildProduct">
<attribute name="workspaceDirectory" />
<attribute name="productfile" />
<attribute name="targetPlatformId" />
<attribute name="destination" />
<attribute name="os" default="win32" />
<attribute name="clearDestination" default="false" />
<attribute name="defaultCompilerOptionsFile" default="" />
<attribute name="packageAsJar" default="false" />
<attribute name="commandline" default="false" />
<attribute name="packageSources" default="true" />
<!-- element definitions for lifecycle phases -->
<element name="validate"
optional="true"
description="Validate the project if it's correct and all necessary information is available. Scope: forProduct." />
<element name="deploy"
optional="true"
description="Perform any operations necessary to prepare a package before the actual packaging. Scope: forProduct." />
<sequential>
<ant4eclipse:executeProduct workspaceDirectory="@{workspaceDirectory}"
targetPlatformId="@{targetPlatformId}"
product="@{productfile}"
os="@{os}">
<ant4eclipse:forProduct>
<echo>Building product ${executeProduct.product.name} version ${executeProduct.product.version}</echo>
</ant4eclipse:forProduct>
<ant4eclipse:forProduct>
<validate />
</ant4eclipse:forProduct>
<!-- Step 1: Scrub destination directory if requested -->
<ant4eclipse:forProduct if="@{clearDestination}">
<echo>Scrubbing directory '@{destination}'</echo>
<delete dir="@{destination}" quiet="true" />
</ant4eclipse:forProduct>
<!-- Step 2: Assure a necessary structure. -->
<ant4eclipse:forProduct>
<mkdir dir="@{destination}/configuration" />
</ant4eclipse:forProduct>
<!-- Step 3: Build features or plugins -->
<!-- Step 3a: Build included features if this product is based on features -->
<ant4eclipse:forEachFeature>
<antcontrib:if>
<istrue value="${executeProduct.product.basedonfeatures}" />
<then>
<echo> -> Building included feature '${executeProduct.feature.id}' - '${executeProduct.feature.version}'</echo>
<buildFeature workspaceDirectory="@{workspaceDirectory}"
featureId="${executeProduct.feature.id}"
featureVersion="${executeProduct.feature.version}"
targetPlatformId="@{targetPlatformId}"
destination="@{destination}"
packageAsJar="@{packageAsJar}"
packagePluginsAsJar="@{packageAsJar}"
packagePluginSourcesAsJar="@{packageSources}"
defaultCompilerOptionsFile="@{defaultCompilerOptionsFile}" />
</then>
</antcontrib:if>
</ant4eclipse:forEachFeature>
<!-- Step 3b: Build included plugins if this product is based on plugins -->
<ant4eclipse:forEachPlugin filter="(executeProduct.plugin.isSource=true)">
<antcontrib:if>
<isfalse value="${executeProduct.product.basedonfeatures}" />
<then>
<echo> -> Building included plugin '${executeProduct.plugin.id}' from project: ${executeProduct.plugin.projectName}</echo>
<buildPlugin projectName="${executeProduct.plugin.projectName}"
workspaceDirectory="@{workspaceDirectory}"
targetPlatformId="@{targetPlatformId}"
packageAsJar="@{packageAsJar}"
destination="@{destination}"
defaultCompilerOptionsFile="@{defaultCompilerOptionsFile}"
buildSourceJar="@{packageSources}" />
</then>
</antcontrib:if>
</ant4eclipse:forEachPlugin>
<!-- Step 3c: Copy plugins from the target platform -->
<ant4eclipse:forEachPlugin filter="(executeProduct.plugin.isSource=false)">
<antcontrib:if>
<isfalse value="${executeProduct.product.basedonfeatures}" />
<then>
<echo>Copying bundle '${executeProduct.plugin.file} (${executeProduct.plugin.id})' </echo>
<copy todir="@{destination}/${a4e.plugins.directory}">
<filelist refid="executeProduct.plugin.filelist" />
</copy>
</then>
</antcontrib:if>
</ant4eclipse:forEachPlugin>
<!-- Step 4: Generate artifacts -->
<ant4eclipse:forProduct>
<!-- create the .eclipseproduct file -->
<echo file="@{destination}/.eclipseproduct">version=1.0.0&#10;</echo>
<echo file="@{destination}/.eclipseproduct" append="true">name=${executeProduct.product.name}&#10;</echo>
<echo file="@{destination}/.eclipseproduct" append="true">id=${executeProduct.product.id}&#10;</echo>
<!-- create the ini file for the launcher -->
<antcontrib:if>
<equals arg1="" arg2="${executeProduct.product.vmargs}" />
<then>
<!-- no arguments to set -->
<echo file="@{destination}/${executeProduct.product.launchername}.ini">
</echo>
</then>
<else>
<!-- set vm arguments -->
<echo file="@{destination}/${executeProduct.product.launchername}.ini">-vmargs&#10;</echo>
<antcontrib:for param="vmarg"
list="${executeProduct.product.vmargs}"
delimiter=" "
trim="true">
<sequential>
<echo file="@{destination}/${executeProduct.product.launchername}.ini"
append="true">@{vmarg}&#10;</echo>
</sequential>
</antcontrib:for>
</else>
</antcontrib:if>
<antcontrib:if>
<and>
<not>
<equals arg1="" arg2="${executeProduct.product.configini}" />
</not>
<available file="${executeProduct.product.configini}"
type="file" />
</and>
<then>
<!-- copy the config.ini provided by the product configuration. -->
<copy file="${executeProduct.product.configini}"
todir="@{destination}/configuration"
overwrite="true" />
</then>
<else>
<!-- generate a default config.ini which just starts the workbench. -->
<echo file="@{destination}/configuration/config.ini" append="false"># Product Runtime Configuration File</echo>
<echo file="@{destination}/configuration/config.ini" append="true">eclipse.application=${executeProduct.product.applicationid}</echo>
<echo file="@{destination}/configuration/config.ini" append="true">osgi.bundles.defaultStartLevel=4</echo>
<echo file="@{destination}/configuration/config.ini" append="true">eclipse.product=${executeProduct.product.id}</echo>
<echo file="@{destination}/configuration/config.ini" append="true">osgi.splashPath=platform:/base/plugins/org.eclipse.platform</echo>
<echo file="@{destination}/configuration/config.ini" append="true">osgi.bundles=org.eclipse.core.runtime@start,org.eclipse.osgi@start,org.eclipse.equinox.common@2:start,org.eclipse.update.configurator@3:start</echo>
</else>
</antcontrib:if>
<antcontrib:if>
<istrue value="@{commandline}" />
<then>
<copy file="${executeProduct.product.cmdexe}"
tofile="@{destination}/${executeProduct.product.launchername}.exe"
overwrite="true" />
</then>
<else>
<copy file="${executeProduct.product.guiexe}"
tofile="@{destination}/${executeProduct.product.launchername}.exe"
overwrite="true" />
<copy file="${executeProduct.product.cmdexe}"
tofile="@{destination}/${executeProduct.product.launchername}c.exe"
overwrite="true" />
</else>
</antcontrib:if>
</ant4eclipse:forProduct>
<ant4eclipse:forProduct>
<!-- template element 'deploy' -->
<deploy />
</ant4eclipse:forProduct>
<ant4eclipse:forProduct>
<echo>Building product ${executeProduct.product.name} successfully build.</echo>
</ant4eclipse:forProduct>
</ant4eclipse:executeProduct>
</sequential>
</macrodef>
<!-- =================================
target : buildFeature
description : Builds an eclipse feature project. Each contained plug-in project will be build.
================================= -->
<macrodef name="buildFeature">
<attribute name="workspaceDirectory" />
<attribute name="projectName" default="" />
<attribute name="featureId" default="" />
<attribute name="featureVersion" default="" />
<attribute name="targetPlatformId" />
<attribute name="destination" />
<attribute name="clearDestination" default="false" />
<attribute name="skipBuildFeature" default="false" />
<attribute name="packageAsJar" default="true" />
<attribute name="packagePluginsAsJar" default="true" />
<attribute name="packagePluginSourcesAsJar" default="true" />
<attribute name="defaultCompilerOptionsFile" default="" />
<attribute name="cleanPluginBuild" default="true" />
<sequential>
<!-- executes the defined feature -->
<ant4eclipse:executeFeature workspaceDirectory="@{workspaceDirectory}"
projectName="@{projectName}"
featureId="@{featureId}"
featureVersion="@{featureVersion}"
targetPlatformId="@{targetPlatformId}">
<ant4eclipse:forRootFeature>
<echo>Building feature '${executeFeature.feature.id}_${executeFeature.feature.version}'</echo>
<echo> - feature.isSource: '${executeFeature.feature.isSource}'</echo>
</ant4eclipse:forRootFeature>
<!-- Step 1: Scrub destination directory -->
<ant4eclipse:forRootFeature if="@{clearDestination}">
<echo>Scrubbing directory '@{destination}'</echo>
<delete dir="@{destination}" quiet="true" />
<mkdir dir="@{destination}" />
</ant4eclipse:forRootFeature>
<!-- Step 2: Build included features -->
<ant4eclipse:forEachIncludedFeature>
<echo> -> Building included feature '${executeFeature.feature.id}'</echo>
<buildFeature workspaceDirectory="@{workspaceDirectory}"
featureId="${executeFeature.feature.id}"
featureVersion="${executeFeature.feature.resolved.version}"
targetPlatformId="@{targetPlatformId}"
destination="@{destination}"
packageAsJar="@{packageAsJar}" />
</ant4eclipse:forEachIncludedFeature>
<!-- Step 3: Build the plug-ins -->
<!-- Step 3.1: Build the plug-ins -->
<ant4eclipse:forEachPlugin filter="(executeFeature.plugin.isSource=true)">
<echo>Building plug-in project '${executeFeature.plugin.filename} (${executeFeature.plugin.id}_${executeFeature.plugin.resolvedversion})' </echo>
<buildPlugin workspaceDirectory="@{workspaceDirectory}"
projectName="${executeFeature.plugin.filename}"
targetplatformid="@{targetPlatformId}"
destination="@{destination}"
packageAsJar="@{packagePluginsAsJar}"
buildSourceJar="@{packagePluginSourcesAsJar}"
defaultCompilerOptionsFile="@{defaultCompilerOptionsFile}"
clean="@{cleanPluginBuild}" />
</ant4eclipse:forEachPlugin>
<!-- Step 3.2: Copy plug-ins -->
<ant4eclipse:forEachPlugin filter="(executeFeature.plugin.isSource=false)">
<echo>Copying bundle '${executeFeature.plugin.file} (${executeFeature.plugin.id}_${executeFeature.plugin.resolvedversion})' </echo>
<copy todir="@{destination}/${a4e.plugins.directory}">
<filelist refid="executeFeature.plugin.filelist" />
</copy>
</ant4eclipse:forEachPlugin>
<!-- Step 4: Build feature itself -->
<ant4eclipse:forRootFeature unless="@{skipBuildFeature}"
filter="(executeFeature.feature.isSource=true)">
<echo>Building feature project '${executeFeature.feature.file.name} (${executeFeature.feature.id}_${executeFeature.feature.resolved.version})' </echo>
<!-- Step 4.1: Copy all files defined in the build.properties to the destination directory -->
<copy todir="@{destination}/${a4e.features.directory}/${executeFeature.feature.id}_${executeFeature.feature.resolved.version}"
overwrite="true">
<!-- file set defined by the projects build properties -->
<ant4eclipse:pdeProjectFileSet workspaceDirectory="@{workspaceDirectory}"
projectname="${executeFeature.feature.file.name}" />
</copy>
<!-- Step 4.2: Patch the feature.xml -->
<ant4eclipse:patchFeatureManifest featureXmlFile="@{destination}/features/${executeFeature.feature.id}_${executeFeature.feature.resolved.version}/feature.xml"
pluginVersions="${executeFeature.feature.plugins.resolved.versions}" />
<!-- Step 4.3: Package the feature as a jar -->
<!-- skip this step if 'packageAsJar' is 'false' -->
<antcontrib:if>
<istrue value="@{packageAsJar}" />
<antcontrib:then>
<!-- jar the feature -->
<jar destfile="@{destination}/${a4e.features.directory}/${executeFeature.feature.id}_${executeFeature.feature.resolved.version}.jar"
basedir="@{destination}/${a4e.features.directory}/${executeFeature.feature.id}_${executeFeature.feature.resolved.version}" />
<!-- delete the base directory -->
<delete dir="@{destination}/${a4e.features.directory}/${executeFeature.feature.id}_${executeFeature.feature.resolved.version}" />
</antcontrib:then>
</antcontrib:if>
</ant4eclipse:forRootFeature>
<!-- if feature is already built, we only have to copy the jar / directory -->
<ant4eclipse:forRootFeature unless="@{skipBuildFeature}"
filter="(executeFeature.feature.isSource=false)">
<echo>Copying feature '${executeFeature.feature.file} (${executeFeature.feature.id}_${executeFeature.feature.resolved.version})' </echo>
<copy todir="@{destination}/${a4e.features.directory}">
<filelist refid="executeFeature.feature.filelist" />
</copy>
</ant4eclipse:forRootFeature>
<ant4eclipse:forRootFeature>
<echo>Feature '${executeFeature.feature.id}_${executeFeature.feature.version}' successfully built.</echo>
</ant4eclipse:forRootFeature>
</ant4eclipse:executeFeature>
</sequential>
</macrodef>
</project>

View File

@ -0,0 +1,29 @@
<?xml version="1.0"?>
<project name="build"
basedir="."
xmlns:ant4eclipse="antlib:org.ant4eclipse"
xmlns:antcontrib="antlib:net.sf.antcontrib">
<taskdef uri="antlib:net.sf.antcontrib"
resource="net/sf/antcontrib/antlib.xml" />
<taskdef uri="antlib:org.ant4eclipse"
resource="org/ant4eclipse/antlib.xml" />
<!-- =================================
target: cvsGetProjectSet
================================= -->
<macrodef name="cvsGetProjectSet">
<attribute name="workspace" />
<attribute name="projectset" />
<attribute name="cvsUser" />
<attribute name="cvsPwd" />
<attribute name="command" />
<sequential>
</sequential>
</macrodef>
</project>