312104 - Modify build to require bnd. If not found other options are presented.
diff --git a/build.xml b/build.xml
index 87c8254..24e6369 100644
--- a/build.xml
+++ b/build.xml
@@ -37,7 +37,12 @@
<!-- (should be set locally, and be destroyed upon return) -->
<fail message="Not running from '${ant.project.name}' directory" unless="jpaproto.is.local"/>
- <dirname property="jpaproto.build.location" file="${ant.file.javax.persistence}"/>
+ <dirname property="jpaproto.build.location_temp" file="${ant.file.javax.persistence}"/>
+ <pathconvert targetos="unix" property="jpaproto.build.location">
+ <path>
+ <pathelement location="${jpaproto.build.location_temp}"/>
+ </path>
+ </pathconvert>
<condition property="jpaproto.2.base.dir" value="../../.." else="..">
<contains string="${jpaproto.build.location}" substring="jpa"/>
</condition>
@@ -64,7 +69,12 @@
<property name="jpaproto.jar" value="${ant.project.name}_${jpaproto.version}.${jpaproto.qualifier}.jar"/>
<property name="jpaproto.src.jar" value="${ant.project.name}.source_${jpaproto.version}.${jpaproto.qualifier}.jar"/>
- <echo message="Loading ${user.home}/build.properties..."/>
+ <!-- local property overrides -->
+ <condition property="custom.properties.message" value="Loading ${user.home}/build.properties..."
+ else="Custom properties file '${user.home}/build.properties' not found to load.">
+ <available file="${user.home}/build.properties"/>
+ </condition>
+ <echo message="${custom.properties.message}"/>
<property file="${user.home}/build.properties"/>
<!-- Defaults, set var in ${user.home}/build.properties if different version required -->
@@ -72,7 +82,7 @@
<!-- Primary Targets -->
<target name="build" depends="clean, compile, jar" description="build ${ant.project.name}_${jpaproto.version} component"/>
- <target name="jar" depends="generate-manifest, package, bnd-package" description="package ${ant.project.name}_${jpaproto.version} component"/>
+ <target name="jar" depends="bnd-package, package" description="package ${ant.project.name} component"/>
<!-- clean -->
<target name="clean" description="Clean all generated content">
@@ -103,7 +113,14 @@
<property name="javac.deprecation" value="off"/>
<property name="javac.version" value="1.5"/>
+ <!-- Set Compile Path-->
+ <path id="jpaproto.compile.path">
+ <pathelement path="${jpaproto.2.common.plugins.dir}/osgi.core.zip"/>
+ <pathelement path="${jpaproto.2.common.plugins.dir}/osgi.cmpn_4.1.0.jar"/>
+ </path>
+
<!-- Check for BND library -->
+ <property name="alt.manifest.dir" value="${jpaproto.build.location}/META-INF"/>
<condition property="bnd.lib" value="${extensions.depend.dir}/${bndtool.jar}">
<available file="${extensions.depend.dir}/${bndtool.jar}"/>
</condition>
@@ -111,16 +128,39 @@
<available file="${jpaproto.2.buildsys.dir}/${bndtool.jar}"/>
</condition>
<echo message="bnd.lib = '${bnd.lib}'"/>
+ <condition property="bld">
+ <or>
+ <isset property="bnd.lib"/>
+ <isset property="nobnd"/>
+ </or>
+ </condition>
+ <condition property="bnd.bld">
+ <and>
+ <isset property="bnd.lib"/>
+ <not> <isset property="nobnd"/> </not>
+ </and>
+ </condition>
+ </target>
- <!-- Set Compile Path-->
- <path id="jpaproto.compile.path">
- <pathelement path="${jpaproto.2.common.plugins.dir}/osgi.core.zip"/>
- <pathelement path="${jpaproto.2.common.plugins.dir}/osgi.cmpn_4.1.0.jar"/>
- </path>
+ <target name="fail-on-no-bnd" unless="bld">
+ <echo message="BND tool (${bndtool.jar}) not found in either:"/>
+ <echo message=" the extensions.depend.dir: '${extensions.depend.dir}'"/>
+ <echo message=" or the buildsystem dir: '${jpaproto.2.buildsys.dir}'"/>
+ <echo message=""/>
+ <echo message="if you have a different version, you can define a different"/>
+ <echo message="jarname by adding 'bndtool.jar=bnd-{version}.jar to your'"/>
+ <echo message="${user.home}/build.properties file."/>
+ <echo message=""/>
+ <echo message="You can download BND from http://www.aqute.biz/Code/Download"/>
+ <echo message=""/>
+ <echo message="or if you really need to build NOW, you can use '-Dnobnd=true'"/>
+ <echo message="on the ant command-line. However, the manifests used will be those"/>
+ <echo message="checked-in for development, and will likely have errors."/>
+ <fail message="Missing BND library!"/>
</target>
<!-- compile -->
- <target name="compile" depends="init" description="Compile bundle code">
+ <target name="compile" depends="init, fail-on-no-bnd" description="Compile bundle code">
<mkdir dir="${classes.dir}"/>
<javac srcdir="${src.dir}"
destdir="${classes.dir}"
@@ -141,8 +181,8 @@
</target>
<!-- package -->
- <target name="package" unless="bnd.lib" depends="init" description="jar OSGI bundle">
- <jar jarfile="${package.dir}/${jpaproto.jar}" duplicate="preserve" manifest="${classes.dir}/MANIFEST.MF">
+ <target name="package" if="nobnd" depends="init" description="jar OSGI bundle">
+ <jar jarfile="${package.dir}/${jpaproto.jar}" duplicate="preserve" manifest="${alt.manifest.dir}/MANIFEST.MF">
<fileset dir="${jpaproto.2.base.dir}">
<include name="about.html"/>
<include name="readme.html"/>
@@ -185,31 +225,7 @@
</jar>
</target>
- <target name="generate-manifest" unless="bnd.lib" depends="init" description="Generate the OSGi bundle manifest before jarring">
- <echo message="Generate the OSGi bundle manifest before jarring..."/>
- <delete file="${classes.dir}/MANIFEST.MF*" quiet="true"/>
- <echo message="Manifest-Version: 1.0${line.separator}" file="${classes.dir}/MANIFEST.MF" append="false"/>
- <echo message="Specification-Vendor: ${jpaproto.spec.vendor}${line.separator}" file="${classes.dir}/MANIFEST.MF" append="true"/>
- <echo message="Specification-Version: ${jpaproto.spec.version}${line.separator}" file="${classes.dir}/MANIFEST.MF" append="true"/>
- <echo message="Implementation-Vendor: ${implementation.vendor}${line.separator}" file="${classes.dir}/MANIFEST.MF" append="true"/>
- <echo message="Implementation-Version: ${jpaproto.version}${line.separator}" file="${classes.dir}/MANIFEST.MF" append="true"/>
- <echo message="Bundle-ManifestVersion: 2${line.separator}" file="${classes.dir}/MANIFEST.MF" append="true"/>
- <echo message="Bundle-Name: ${jpaproto.bundle.name}${line.separator}" file="${classes.dir}/MANIFEST.MF" append="true"/>
- <echo message="Bundle-SymbolicName: ${ant.project.name}${line.separator}" file="${classes.dir}/MANIFEST.MF" append="true"/>
- <echo message="Bundle-Vendor: ${implementation.vendor}${line.separator}" file="${classes.dir}/MANIFEST.MF" append="true"/>
- <echo message="Bundle-Version: ${jpaproto.version}.${jpaproto.qualifier}${line.separator}" file="${classes.dir}/MANIFEST.MF" append="true"/>
- <echo message="Bundle-RequiredExecutionEnvironment: J2SE-1.5${line.separator}" file="${classes.dir}/MANIFEST.MF" append="true"/>
- <echo message="Export-Package: javax.persistence;version="${jpaproto.version}.${jpaproto.qualifier}",${line.separator}" file="${classes.dir}/MANIFEST.MF" append="true"/>
- <echo message=" javax.persistence.criteria;version="${jpaproto.version}.${jpaproto.qualifier}",${line.separator}" file="${classes.dir}/MANIFEST.MF" append="true"/>
- <echo message=" javax.persistence.metamodel;version="${jpaproto.version}.${jpaproto.qualifier}",${line.separator}" file="${classes.dir}/MANIFEST.MF" append="true"/>
- <echo message=" javax.persistence.spi;version="${jpaproto.version}.${jpaproto.qualifier}"${line.separator}" file="${classes.dir}/MANIFEST.MF" append="true"/>
- <echo message="Bundle-Activator: org.eclipse.persistence.javax.persistence.osgi.Activator${line.separator}" file="${classes.dir}/MANIFEST.MF" append="true"/>
- <echo message="Bundle-ClassPath: .${line.separator}" file="${classes.dir}/MANIFEST.MF" append="true"/>
- <echo message="Import-Package: org.osgi.framework;resolution:=optional,${line.separator}" file="${classes.dir}/MANIFEST.MF" append="true"/>
- <echo message=" org.osgi.util.tracker;resolution:=optional${line.separator}" file="${classes.dir}/MANIFEST.MF" append="true"/>
- </target>
-
- <target name="bnd-package" if="bnd.lib" depends="init" >
+ <target name="bnd-package" if="bnd.bld" depends="init">
<taskdef resource="aQute/bnd/ant/taskdef.properties" classpath="${bnd.lib}"/>
<bnd
classpath="${classes.dir}"