390107 - Add capability to publish custom java profiles.
diff --git a/.gitignore b/.gitignore
index f1cadae..1278a2a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,3 +4,4 @@
 build-virgo-build/target/*
 integration-repo
 org.eclipse.virgo.build.p2tools/target/*
+user-ivy.properties
diff --git a/build-virgo-build/build.xml b/build-virgo-build/build.xml
index dfe8005..f5c8662 100644
--- a/build-virgo-build/build.xml
+++ b/build-virgo-build/build.xml
@@ -20,13 +20,11 @@
 		<property name="p2.tools.plugins.location" value="${package.output.dir}/plugins"/>
 
 		<!-- Prepare the minimal p2 publishing client -->
-		<ivy:resolve resolveId="copy.path" file="${basedir}/p2runtime-ivy.xml" transitive="true"/>
+		<ivy:resolve resolveId="copy.path" file="${basedir}/p2runtime-ivy.xml" transitive="false"/>
 		<ivy:retrieve resolveId="copy.path" pattern="${p2.tools.plugins.location}/[artifact]_[revision].[ext]" conf="p2-runtime" type="jar"/>
 		
 		<ivy:resolve resolveId="copy.path" file="${basedir}/p2build-ivy.xml" transitive="true"/>
 		<ivy:retrieve resolveId="copy.path" pattern="${p2.tools.plugins.location}/[artifact]_[revision].[ext]" conf="p2-build" type="jar"/>
-        
-        <get src="http://www.eclipse.org/downloads/download.php?file=/equinox/drops/S-3.8RC1-201205182145/org.eclipse.equinox.p2.repository.tools_2.0.100.v20120501-1314.jar&amp;r=1$" dest="${package.output.dir}/plugins/org.eclipse.equinox.p2.repository.tools_2.0.100.v20120501-1314.jar" usetimestamp="true" />
 		
 		<copy todir="${package.output.dir}/configuration" failonerror="false">
 			<fileset dir="${basedir}/p2tools_ini" excludes="keystore"/>
@@ -158,17 +156,41 @@
             <param name="tools.dir" value="${package.output.dir}"/>
             <param name="repository" value="${repository.dir}"/>
             <param name="product.file.location" value="${basedir}/e2e-testdata/products/base/base.product"/>
+            <param name="javaprofile.location" value="${basedir}/e2e-testdata/products/java6-server.profile"/>
         </antcall>
         
         <antcall target="check-repository-exists">
             <param name="repository" value="${repository.dir}"/>
         </antcall>
-        
+         
+        <!-- Tests if the java profile was published successfully -->
+        <unzip src="${repository.dir}/content.jar" dest="${repository.dir}"/>
+        <property name="search.string" value="org.eclipse.virgo.kernel.equinox.extensions" />
+        <fileset id="existing" dir="${repository.dir}">
+           <patternset id="files">
+                    <!-- includes/excludes here -->
+           </patternset>
+        </fileset>
+            
+        <fileset id="matches" dir="${repository.dir}">
+           <patternset refid="files" />
+           <contains text="${search.string}" />
+        </fileset>
+            
+        <fail message="Not found '${search.string}' in one or more files in '${repository.dir}'">
+            <condition>
+               <resourcecount when="equal" count="0" refid="matches" />
+            </condition>
+        </fail>
+        <!-- The profile was successfully published, move on -->
+            
+            
         <echo message="[Test]Publish extension.product to the repository." />
         <antcall target="p2.publish-product">
             <param name="tools.dir" value="${package.output.dir}"/>
             <param name="repository" value="${repository.dir}"/>
             <param name="product.file.location" value="${basedir}/e2e-testdata/products/extension/extension.product"/>
+            <param name="javaprofile.location" value="${basedir}/e2e-testdata/products/java6-server.profile"/>
         </antcall>
         
         <antcall target="check-repository-exists">
diff --git a/build-virgo-build/e2e-testdata/products/java6-server.profile b/build-virgo-build/e2e-testdata/products/java6-server.profile
new file mode 100644
index 0000000..45be81c
--- /dev/null
+++ b/build-virgo-build/e2e-testdata/products/java6-server.profile
@@ -0,0 +1,212 @@
+org.osgi.framework.system.packages = \
+ javax.accessibility,\
+ javax.activation,\
+ javax.activation;version="1.1.1",\
+ javax.activity,\
+ javax.annotation,\
+ javax.annotation;version="1.0.0",\
+ javax.annotation;version="1.1.0",\
+ javax.annotation.processing,\
+ javax.crypto,\
+ javax.crypto.interfaces,\
+ javax.crypto.spec,\
+ javax.imageio,\
+ javax.imageio.event,\
+ javax.imageio.metadata,\
+ javax.imageio.plugins.bmp,\
+ javax.imageio.plugins.jpeg,\
+ javax.imageio.spi,\
+ javax.imageio.stream,\
+ javax.jws,\
+ javax.jws;version="2.0",\
+ javax.jws.soap,\
+ javax.jws.soap;version="2.0",\
+ javax.lang.model,\
+ javax.lang.model.element,\
+ javax.lang.model.type,\
+ javax.lang.model.util,\
+ javax.management,\
+ javax.management.loading,\
+ javax.management.modelmbean,\
+ javax.management.monitor,\
+ javax.management.openmbean,\
+ javax.management.relation,\
+ javax.management.remote,\
+ javax.management.remote.rmi,\
+ javax.management.timer,\
+ javax.naming,\
+ javax.naming.directory,\
+ javax.naming.event,\
+ javax.naming.ldap,\
+ javax.naming.spi,\
+ javax.net,\
+ javax.net.ssl,\
+ javax.print,\
+ javax.print.attribute,\
+ javax.print.attribute.standard,\
+ javax.print.event,\
+ javax.rmi,\
+ javax.rmi.CORBA,\
+ javax.rmi.ssl,\
+ javax.script,\
+ javax.script;version="1.1",\
+ javax.security.auth,\
+ javax.security.auth.callback,\
+ javax.security.auth.kerberos,\
+ javax.security.auth.login,\
+ javax.security.auth.spi,\
+ javax.security.auth.x500,\
+ javax.security.cert,\
+ javax.security.sasl,\
+ javax.sound.midi,\
+ javax.sound.midi.spi,\
+ javax.sound.sampled,\
+ javax.sound.sampled.spi,\
+ javax.sql,\
+ javax.sql.rowset,\
+ javax.sql.rowset.serial,\
+ javax.sql.rowset.spi,\
+ javax.swing,\
+ javax.swing.border,\
+ javax.swing.colorchooser,\
+ javax.swing.event,\
+ javax.swing.filechooser,\
+ javax.swing.plaf,\
+ javax.swing.plaf.basic,\
+ javax.swing.plaf.metal,\
+ javax.swing.plaf.multi,\
+ javax.swing.plaf.synth,\
+ javax.swing.table,\
+ javax.swing.text,\
+ javax.swing.text.html,\
+ javax.swing.text.html.parser,\
+ javax.swing.text.rtf,\
+ javax.swing.tree,\
+ javax.swing.undo,\
+ javax.tools,\
+ javax.transaction,\
+ javax.transaction;version="1.0.1",\
+ javax.transaction;version="1.1.0",\
+ javax.transaction.xa,\
+ javax.transaction.xa;version="1.0.1",\
+ javax.transaction.xa;version="1.1.0",\
+ javax.xml,\
+ javax.xml;version="1.0.1",\
+ javax.xml.bind,\
+ javax.xml.bind;version="2.0",\
+ javax.xml.bind.annotation,\
+ javax.xml.bind.annotation;version="2.0",\
+ javax.xml.bind.annotation.adapters,\
+ javax.xml.bind.annotation.adapters;version="2.0",\
+ javax.xml.bind.attachment,\
+ javax.xml.bind.attachment;version="2.0",\
+ javax.xml.bind.helpers,\
+ javax.xml.bind.helpers;version="2.0",\
+ javax.xml.bind.util,\
+ javax.xml.bind.util;version="2.0",\
+ javax.xml.crypto,\
+ javax.xml.crypto;version="1.0",\
+ javax.xml.crypto.dom,\
+ javax.xml.crypto.dom;version="1.0",\
+ javax.xml.crypto.dsig,\
+ javax.xml.crypto.dsig;version="1.0",\
+ javax.xml.crypto.dsig.dom,\
+ javax.xml.crypto.dsig.dom;version="1.0",\
+ javax.xml.crypto.dsig.keyinfo,\
+ javax.xml.crypto.dsig.keyinfo;version="1.0",\
+ javax.xml.crypto.dsig.spec,\
+ javax.xml.crypto.dsig.spec;version="1.0",\
+ javax.xml.datatype,\
+ javax.xml.namespace,\
+ javax.xml.parsers,\
+ javax.xml.soap,\
+ javax.xml.soap;version="1.3.0",\
+ javax.xml.stream,\
+ javax.xml.stream;version="1.0.1",\
+ javax.xml.stream.events,\
+ javax.xml.stream.events;version="1.0.1",\
+ javax.xml.stream.util,\
+ javax.xml.stream.util;version="1.0.1",\
+ javax.xml.transform,\
+ javax.xml.transform.dom,\
+ javax.xml.transform.sax,\
+ javax.xml.transform.stax,\
+ javax.xml.transform.stream,\
+ javax.xml.validation,\
+ javax.xml.ws,\
+ javax.xml.ws;version="2.1.1",\
+ javax.xml.ws.handler,\
+ javax.xml.ws.handler;version="2.1.1",\
+ javax.xml.ws.handler.soap,\
+ javax.xml.ws.handler.soap;version="2.1.1",\
+ javax.xml.ws.http,\
+ javax.xml.ws.http;version="2.1.1",\
+ javax.xml.ws.soap,\
+ javax.xml.ws.soap;version="2.1.1",\
+ javax.xml.ws.spi,\
+ javax.xml.ws.spi;version="2.1.1",\
+ javax.xml.ws.wsaddressing;version="2.1.1",\
+ javax.xml.xpath,\
+ org.eclipse.virgo.kernel.equinox.extensions,\
+ org.eclipse.virgo.kernel.equinox.extensions;version="3.6.0",\
+ org.eclipse.virgo.kernel.equinox.extensions.hooks,\
+ org.eclipse.virgo.kernel.equinox.extensions.hooks;version="3.6.0",\
+ org.ietf.jgss,\
+ org.omg.CORBA,\
+ org.omg.CORBA_2_3,\
+ org.omg.CORBA_2_3.portable,\
+ org.omg.CORBA.DynAnyPackage,\
+ org.omg.CORBA.ORBPackage,\
+ org.omg.CORBA.portable,\
+ org.omg.CORBA.TypeCodePackage,\
+ org.omg.CosNaming,\
+ org.omg.CosNaming.NamingContextExtPackage,\
+ org.omg.CosNaming.NamingContextPackage,\
+ org.omg.Dynamic,\
+ org.omg.DynamicAny,\
+ org.omg.DynamicAny.DynAnyFactoryPackage,\
+ org.omg.DynamicAny.DynAnyPackage,\
+ org.omg.IOP,\
+ org.omg.IOP.CodecFactoryPackage,\
+ org.omg.IOP.CodecPackage,\
+ org.omg.Messaging,\
+ org.omg.PortableInterceptor,\
+ org.omg.PortableInterceptor.ORBInitInfoPackage,\
+ org.omg.PortableServer,\
+ org.omg.PortableServer.CurrentPackage,\
+ org.omg.PortableServer.POAManagerPackage,\
+ org.omg.PortableServer.POAPackage,\
+ org.omg.PortableServer.portable,\
+ org.omg.PortableServer.ServantLocatorPackage,\
+ org.omg.SendingContext,\
+ org.omg.stub.java.rmi,\
+ org.w3c.dom,\
+ org.w3c.dom.bootstrap,\
+ org.w3c.dom.css,\
+ org.w3c.dom.events,\
+ org.w3c.dom.html,\
+ org.w3c.dom.ls,\
+ org.w3c.dom.ranges,\
+ org.w3c.dom.stylesheets,\
+ org.w3c.dom.traversal,\
+ org.w3c.dom.views ,\
+ org.xml.sax,\
+ org.xml.sax.ext,\
+ org.xml.sax.helpers
+org.osgi.framework.bootdelegation = \
+ org.eclipse.virgo.nano.authentication,\
+ com.sun.*,\
+ javax.xml.*,\
+ org.apache.xerces.jaxp.*,\
+ org.w3c.*,\
+ org.xml.*,\
+ sun.*
+org.osgi.framework.executionenvironment = \
+ OSGi/Minimum-1.0,\
+ OSGi/Minimum-1.1,\
+ J2SE-1.2,\
+ J2SE-1.3,\
+ J2SE-1.4,\
+ J2SE-1.5,\
+ JavaSE-1.6
+osgi.java.profile.name = Virgo-Java6
diff --git a/build-virgo-build/p2runtime-ivy.xml b/build-virgo-build/p2runtime-ivy.xml
index 9664c38..970a501 100644
--- a/build-virgo-build/p2runtime-ivy.xml
+++ b/build-virgo-build/p2runtime-ivy.xml
@@ -10,47 +10,49 @@
 	</configurations>

 

 	<dependencies>	

-		<dependency org="org.eclipse.osgi" name="org.eclipse.osgi.services" rev="${org.eclipse.osgi.services}" conf="p2-runtime->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.osgi" rev="${org.eclipse.osgi}" conf="p2-runtime->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.equinox.ds" rev="${org.eclipse.equinox.ds}" conf="p2-runtime->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.equinox.util" rev="${org.eclipse.equinox.util}" conf="p2-runtime->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.osgi" rev="${org.eclipse.osgi}" conf="p2-runtime->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.core.contenttype" rev="${org.eclipse.core.contenttype}" conf="p2-runtime->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.core.jobs" rev="${org.eclipse.core.jobs}" conf="p2-runtime->runtime"/>
-        <dependency org="org.eclipse.osgi" name="org.eclipse.core.net" rev="${org.eclipse.core.net}" conf="p2-runtime->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.core.runtime" rev="${org.eclipse.core.runtime}" conf="p2-runtime->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.ecf" rev="${org.eclipse.ecf}" conf="p2-runtime->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.ecf.filetransfer" rev="${org.eclipse.ecf.filetransfer}" conf="p2-runtime->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.ecf.identity" rev="${org.eclipse.ecf.identity}" conf="p2-runtime->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.ecf.provider.filetransfer" rev="${org.eclipse.ecf.provider.filetransfer}" conf="p2-runtime->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.ecf.ssl" rev="${org.eclipse.ecf.ssl}" conf="p2-runtime->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.equinox.app" rev="${org.eclipse.equinox.app}" conf="p2-runtime->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.equinox.common" rev="${org.eclipse.equinox.common}" conf="p2-runtime->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.equinox.frameworkadmin" rev="${org.eclipse.equinox.frameworkadmin}" conf="p2-runtime->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.equinox.frameworkadmin.equinox" rev="${org.eclipse.equinox.frameworkadmin.equinox}" conf="p2-runtime->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.equinox.launcher" rev="${org.eclipse.equinox.launcher}" conf="p2-runtime->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.equinox.p2.artifact.repository" rev="${org.eclipse.equinox.p2.artifact.repository}" conf="p2-runtime->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.equinox.p2.console" rev="${org.eclipse.equinox.p2.console}" conf="p2-runtime->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.equinox.p2.core" rev="${org.eclipse.equinox.p2.core}" conf="p2-runtime->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.equinox.p2.director" rev="${org.eclipse.equinox.p2.director}" conf="p2-runtime->runtime"/>
-        <dependency org="org.eclipse.osgi" name="org.eclipse.equinox.p2.director.app" rev="${org.eclipse.equinox.p2.director.app}" conf="p2-runtime->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.equinox.p2.engine" rev="${org.eclipse.equinox.p2.engine}" conf="p2-runtime->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.equinox.p2.garbagecollector" rev="${org.eclipse.equinox.p2.garbagecollector}" conf="p2-runtime->runtime"/>
-        <dependency org="org.eclipse.osgi" name="org.eclipse.equinox.p2.updatesite" rev="${org.eclipse.equinox.p2.updatesite}" conf="p2-runtime->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.equinox.p2.jarprocessor" rev="${org.eclipse.equinox.p2.jarprocessor}" conf="p2-runtime->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.equinox.p2.metadata" rev="${org.eclipse.equinox.p2.metadata}" conf="p2-runtime->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.equinox.p2.metadata.repository" rev="${org.eclipse.equinox.p2.metadata.repository}" conf="p2-runtime->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.equinox.p2.publisher" rev="${org.eclipse.equinox.p2.publisher}" conf="p2-runtime->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.equinox.p2.publisher.eclipse" rev="${org.eclipse.equinox.p2.publisher.eclipse}" conf="p2-runtime->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.equinox.p2.repository" rev="${org.eclipse.equinox.p2.repository}" conf="p2-runtime->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.equinox.p2.touchpoint.eclipse" rev="${org.eclipse.equinox.p2.touchpoint.eclipse}" conf="p2-runtime->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.equinox.p2.touchpoint.natives" rev="${org.eclipse.equinox.p2.touchpoint.natives}" conf="p2-runtime->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.equinox.p2.transport.ecf" rev="${org.eclipse.equinox.p2.transport.ecf}" conf="p2-runtime->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.equinox.preferences" rev="${org.eclipse.equinox.preferences}" conf="p2-runtime->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.equinox.registry" rev="${org.eclipse.equinox.registry}" conf="p2-runtime->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.equinox.security" rev="${org.eclipse.equinox.security}" conf="p2-runtime->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.equinox.simpleconfigurator" rev="${org.eclipse.equinox.simpleconfigurator}" conf="p2-runtime->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.equinox.simpleconfigurator.manipulator" rev="${org.eclipse.equinox.simpleconfigurator.manipulator}" conf="p2-runtime->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.osgi.services" rev="${org.eclipse.osgi.services}" conf="p2-runtime->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.osgi" rev="${org.eclipse.osgi}" conf="p2-runtime->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.ds" rev="${org.eclipse.equinox.ds}" conf="p2-runtime->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.util" rev="${org.eclipse.equinox.util}" conf="p2-runtime->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.core.contenttype" rev="${org.eclipse.core.contenttype}" conf="p2-runtime->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.core.jobs" rev="${org.eclipse.core.jobs}" conf="p2-runtime->runtime"/>

+        <dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.core.net" rev="${org.eclipse.core.net}" conf="p2-runtime->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.core.runtime" rev="${org.eclipse.core.runtime}" conf="p2-runtime->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.ecf" rev="${org.eclipse.ecf}" conf="p2-runtime->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.ecf.filetransfer" rev="${org.eclipse.ecf.filetransfer}" conf="p2-runtime->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.ecf.identity" rev="${org.eclipse.ecf.identity}" conf="p2-runtime->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.ecf.provider.filetransfer" rev="${org.eclipse.ecf.provider.filetransfer}" conf="p2-runtime->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.ecf.ssl" rev="${org.eclipse.ecf.ssl}" conf="p2-runtime->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.app" rev="${org.eclipse.equinox.app}" conf="p2-runtime->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.common" rev="${org.eclipse.equinox.common}" conf="p2-runtime->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.frameworkadmin" rev="${org.eclipse.equinox.frameworkadmin}" conf="p2-runtime->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.frameworkadmin.equinox" rev="${org.eclipse.equinox.frameworkadmin.equinox}" conf="p2-runtime->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.launcher" rev="${org.eclipse.equinox.launcher}" conf="p2-runtime->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.p2.artifact.repository" rev="${org.eclipse.equinox.p2.artifact.repository}" conf="p2-runtime->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.p2.console" rev="${org.eclipse.equinox.p2.console}" conf="p2-runtime->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.p2.core" rev="${org.eclipse.equinox.p2.core}" conf="p2-runtime->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.p2.director" rev="${org.eclipse.equinox.p2.director}" conf="p2-runtime->runtime"/>

+        <dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.p2.director.app" rev="${org.eclipse.equinox.p2.director.app}" conf="p2-runtime->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.p2.engine" rev="${org.eclipse.equinox.p2.engine}" conf="p2-runtime->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.p2.garbagecollector" rev="${org.eclipse.equinox.p2.garbagecollector}" conf="p2-runtime->runtime"/>

+        <dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.p2.updatesite" rev="${org.eclipse.equinox.p2.updatesite}" conf="p2-runtime->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.p2.jarprocessor" rev="${org.eclipse.equinox.p2.jarprocessor}" conf="p2-runtime->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.p2.metadata" rev="${org.eclipse.equinox.p2.metadata}" conf="p2-runtime->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.p2.metadata.repository" rev="${org.eclipse.equinox.p2.metadata.repository}" conf="p2-runtime->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.p2.publisher" rev="${org.eclipse.equinox.p2.publisher}" conf="p2-runtime->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.p2.publisher.eclipse" rev="${org.eclipse.equinox.p2.publisher.eclipse}" conf="p2-runtime->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.p2.repository" rev="${org.eclipse.equinox.p2.repository}" conf="p2-runtime->runtime"/>

+        <dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.p2.repository.tools" rev="${org.eclipse.equinox.p2.repository.tools}" conf="p2-runtime->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.p2.touchpoint.eclipse" rev="${org.eclipse.equinox.p2.touchpoint.eclipse}" conf="p2-runtime->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.p2.touchpoint.natives" rev="${org.eclipse.equinox.p2.touchpoint.natives}" conf="p2-runtime->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.p2.transport.ecf" rev="${org.eclipse.equinox.p2.transport.ecf}" conf="p2-runtime->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.preferences" rev="${org.eclipse.equinox.preferences}" conf="p2-runtime->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.registry" rev="${org.eclipse.equinox.registry}" conf="p2-runtime->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.security" rev="${org.eclipse.equinox.security}" conf="p2-runtime->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.simpleconfigurator" rev="${org.eclipse.equinox.simpleconfigurator}" conf="p2-runtime->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.simpleconfigurator.manipulator" rev="${org.eclipse.equinox.simpleconfigurator.manipulator}" conf="p2-runtime->runtime"/>

+        <dependency org="org.eclipse.virgo.mirrored" name="org.sat4j.core" rev="${org.sat4j.core}" conf="p2-runtime->runtime"/>

+        <dependency org="org.eclipse.virgo.mirrored" name="org.sat4j.pb" rev="${org.sat4j.pb}" conf="p2-runtime->runtime"/>

 	</dependencies>

 

 </ivy-module>

diff --git a/build.versions b/build.versions
index 38cd6e9..d07cf24 100644
--- a/build.versions
+++ b/build.versions
@@ -1,51 +1,55 @@
 # Compile
-org.eclipse.osgi.services=3.3.0.v20110110
-org.eclipse.equinox.event=1.2.100.v20110110
-org.eclipse.equinox.util=1.0.200.v20100503
-org.eclipse.equinox.ds=1.3.0.v20110124-0830
-org.eclipse.equinox.cm=1.0.300.v20101204
-org.aspectj=1.6.6.RELEASE
-org.eclipse.osgi=3.7.0.v20110613
+org.eclipse.osgi.services=3.3.0.v20120307-2102
+org.eclipse.equinox.event=1.2.100.v20111010-1614
+org.eclipse.equinox.util=1.0.300.v20111010-1614
+org.eclipse.equinox.ds=1.4.0.v20120112-1400
+org.eclipse.equinox.cm=1.0.400.v20120319-2029
+org.aspectj=1.6.12.RELEASE
+org.eclipse.osgi=3.8.0.v20120508-2119
 
 # p2 Publishing
 org.eclipse.core.contenttype=3.4.100.v20110423-0524
-org.eclipse.core.jobs=3.5.200.v20110721-1714
-org.eclipse.core.net=1.2.200.I20111018-0800
-org.eclipse.core.runtime=3.8.0.v20110920-2042
-org.eclipse.ecf=3.1.300.v20110531-2218
-org.eclipse.ecf.filetransfer=5.0.0.v20110531-2218
-org.eclipse.ecf.identity=3.1.100.v20110531-2218
-org.eclipse.ecf.provider.filetransfer=3.2.0.v20110531-2218
-org.eclipse.ecf.provider.filetransfer.ssl=1.0.0.v20110531-2218
-org.eclipse.ecf.ssl=1.0.100.v20110531-2218
+org.eclipse.core.jobs=3.5.200.v20120511-1333
+org.eclipse.core.net=1.2.200.v20111202-1616
+org.eclipse.core.runtime=3.8.0.v20120511-1333
+org.eclipse.ecf=3.1.300.v20120319-0616
+org.eclipse.ecf.filetransfer=5.0.0.v20120319-0616
+org.eclipse.ecf.identity=3.1.200.v20120319-0616
+org.eclipse.ecf.provider.filetransfer=3.2.0.v20120319-0616
+org.eclipse.ecf.ssl=1.0.100.v20120319-0616
 org.eclipse.equinox.app=1.3.100.v20111010-1614
-org.eclipse.equinox.common=3.6.100.v20111010-1614
+org.eclipse.equinox.common=3.6.100.v20120509-1351
 org.eclipse.equinox.frameworkadmin=2.0.0.v20110808-1657
-org.eclipse.equinox.frameworkadmin.equinox=1.0.400.v20110905-2042
-org.eclipse.equinox.launcher=1.3.0.v20111003-1644
-org.eclipse.equinox.p2.artifact.repository=1.1.200.v20110815-1744
-org.eclipse.equinox.p2.console=1.0.300.v20110808-1657
-org.eclipse.equinox.p2.core=2.1.0.v20110808-1657
-org.eclipse.equinox.p2.director.app=1.0.300.v20110908-0757
-org.eclipse.equinox.p2.director=2.1.100.v20110918-1950
+org.eclipse.equinox.frameworkadmin.equinox=1.0.400.v20120428-0117
+org.eclipse.equinox.launcher=1.3.0.v20120308-1358
+org.eclipse.equinox.p2.artifact.repository=1.1.200.v20120430-1959
+org.eclipse.equinox.p2.console=1.0.300.v20120429-0125
+org.eclipse.equinox.p2.core=2.2.0.v20120430-0525
+org.eclipse.equinox.p2.director.app=1.0.300.v20120428-0517
+org.eclipse.equinox.p2.director=2.2.0.v20120301-2203
 org.eclipse.equinox.p2.directorywatcher=1.0.300.v20110808-1657
-org.eclipse.equinox.p2.engine=2.2.0.v20110929-2024
+org.eclipse.equinox.p2.engine=2.2.0.v20120501-1502
 org.eclipse.equinox.p2.garbagecollector=1.0.200.v20110808-1657
 org.eclipse.equinox.p2.jarprocessor=1.0.200.v20110808-1657
-org.eclipse.equinox.p2.metadata=2.1.0.v20110808-1657
+org.eclipse.equinox.p2.metadata=2.1.0.v20120430-2001
 org.eclipse.equinox.p2.metadata.repository=1.2.0.v20110808-1657
-org.eclipse.equinox.p2.publisher=1.2.0.v20110808-1657
-org.eclipse.equinox.p2.publisher.eclipse=1.1.0.v20110908-0925
-org.eclipse.equinox.p2.repository=2.1.0.v20110815-1744
-org.eclipse.equinox.p2.touchpoint.eclipse=2.1.100.v20110901-1435
-org.eclipse.equinox.p2.touchpoint.natives=1.0.300.v20110808-1657
-org.eclipse.equinox.p2.transport.ecf=1.0.100.v20110902-0807
-org.eclipse.equinox.p2.updatesite=1.0.300.v20110808-1657
-org.eclipse.equinox.preferences=3.4.100.v20111010-1614
-org.eclipse.equinox.registry=3.5.200.v20111010-1614
-org.eclipse.equinox.security=1.1.100.v20111010-1614
+org.eclipse.equinox.p2.publisher=1.2.0.v20120428-0117
+org.eclipse.equinox.p2.publisher.eclipse=1.1.0.v20120511-1931
+org.eclipse.equinox.p2.repository=2.2.0.v20120501-1446
+org.eclipse.equinox.p2.repository.tools=2.0.100.v20120501-1314
+org.eclipse.equinox.p2.touchpoint.eclipse=2.1.100.v20120428-0117
+org.eclipse.equinox.p2.touchpoint.natives=1.1.0.v20120428-0117
+org.eclipse.equinox.p2.transport.ecf=1.0.100.v20120305-0333
+org.eclipse.equinox.p2.updatesite=1.0.400.v20120412-1615
+org.eclipse.equinox.preferences=3.5.0.v20120410-1344
+org.eclipse.equinox.registry=3.5.200.v20120427-1430
+org.eclipse.equinox.security=1.1.100.v20120424-1439
 org.eclipse.equinox.simpleconfigurator=1.0.300.v20110815-1744
 org.eclipse.equinox.simpleconfigurator.manipulator=2.0.0.v20110808-1657
+org.sat4j.core=2.3.0.v20110329
+org.sat4j.pb=2.3.0.v20110329
+
+tools.org.eclipse.equinox.launcher=1.3.0.v20120308-1358
 
 #Test
 org.easymock=2.5.2
diff --git a/multi-bundle/p2tools.xml b/multi-bundle/p2tools.xml
index 820217e..98e0938 100644
--- a/multi-bundle/p2tools.xml
+++ b/multi-bundle/p2tools.xml
@@ -176,6 +176,13 @@
                 </not>
             </condition>
         </fail>
+        <fail message="The 'javaprofile.location' property must be set on this target.">
+            <condition>
+                <not>
+                    <isset property="javaprofile.location"/>
+                </not>
+            </condition>
+        </fail>
         <java jar="${tools.dir}/plugins/org.eclipse.equinox.launcher_${tools.org.eclipse.equinox.launcher}.jar" fork="true" taskname="p2Product" failonerror="true" maxmemory="256m">
             <!--jvmarg value="-Xdebug"/>
             <jvmarg value="-Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=y"/-->
@@ -183,6 +190,7 @@
 			<arg line="-metadataRepository file:${repository}"/>
 			<arg line="-artifactRepository file:${repository}"/>
 			<arg line="-productFile ${product.file.location}"/>
+            <arg line="-jreLocation ${javaprofile.location}"/>
             <arg line="-configs ANY.ANY.ANY"/>
             <arg line="-publishArtifacts"/>
             <arg line="-append"/>
diff --git a/org.eclipse.virgo.build.p2tools/ivy.xml b/org.eclipse.virgo.build.p2tools/ivy.xml
index 814dce5..42dedee 100644
--- a/org.eclipse.virgo.build.p2tools/ivy.xml
+++ b/org.eclipse.virgo.build.p2tools/ivy.xml
@@ -5,7 +5,7 @@
 		xsi:noNamespaceSchemaLocation="http://incubator.apache.org/ivy/schemas/ivy.xsd"

 		version="1.3">

 

-	<info organisation="org.eclipse.virgo.build" module="${ant.project.name}"/>

+	<info organisation="${project.organisation}" module="${ant.project.name}"/>

 

 	<configurations>

 		<include file="${virgo.build.dir}/common/default-ivy-configurations.xml"/>

@@ -16,25 +16,25 @@
 		<artifact name="${ant.project.name}-sources" type="src" ext="jar"/>

 	</publications>

 

-	<dependencies>		
-        <!-- test deps -->
+	<dependencies>		

+        <!-- test deps -->

         <dependency org="org.junit" name="com.springsource.org.junit" rev="${org.junit}" conf="test->runtime"/>

-        <dependency org="org.eclipse.osgi" name="org.eclipse.equinox.p2.core" rev="${org.eclipse.equinox.p2.core}" conf="test->runtime"/>

-        <dependency org="org.eclipse.osgi" name="org.eclipse.equinox.p2.artifact.repository" rev="${org.eclipse.equinox.p2.artifact.repository}" conf="test->runtime"/>

-        <dependency org="org.eclipse.osgi" name="org.eclipse.equinox.p2.metadata.repository" rev="${org.eclipse.equinox.p2.metadata.repository}" conf="test->runtime"/>
-        <!-- runtime deps -->
-        <dependency org="org.aspectj" name="com.springsource.org.aspectj.weaver" rev="${org.aspectj}" conf="compile->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.osgi" rev="${org.eclipse.osgi}" conf="compile->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.equinox.common" rev="${org.eclipse.equinox.common}" conf="compile->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.equinox.app" rev="${org.eclipse.equinox.app}" conf="compile->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.osgi.services" rev="${org.eclipse.osgi.services}" conf="compile->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.equinox.p2.metadata" rev="${org.eclipse.equinox.p2.metadata}" conf="compile->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.equinox.p2.publisher" rev="${org.eclipse.equinox.p2.publisher}" conf="compile->runtime"/>
-        <dependency org="org.eclipse.osgi" name="org.eclipse.equinox.p2.publisher.eclipse" rev="${org.eclipse.equinox.p2.publisher.eclipse}" conf="compile->runtime"/>

-		<dependency org="org.eclipse.osgi" name="org.eclipse.equinox.p2.repository" rev="${org.eclipse.equinox.p2.repository}" conf="compile->runtime"/>

+        <dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.p2.core" rev="${org.eclipse.equinox.p2.core}" conf="test->runtime"/>

+        <dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.p2.artifact.repository" rev="${org.eclipse.equinox.p2.artifact.repository}" conf="test->runtime"/>

+        <dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.p2.metadata.repository" rev="${org.eclipse.equinox.p2.metadata.repository}" conf="test->runtime"/>

+        <!-- runtime deps -->

+        <dependency org="org.eclipse.virgo.mirrored" name="com.springsource.org.aspectj.weaver" rev="${org.aspectj}" conf="compile->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.osgi" rev="${org.eclipse.osgi}" conf="compile->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.common" rev="${org.eclipse.equinox.common}" conf="compile->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.app" rev="${org.eclipse.equinox.app}" conf="compile->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.osgi.services" rev="${org.eclipse.osgi.services}" conf="compile->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.p2.metadata" rev="${org.eclipse.equinox.p2.metadata}" conf="compile->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.p2.publisher" rev="${org.eclipse.equinox.p2.publisher}" conf="compile->runtime"/>

+        <dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.p2.publisher.eclipse" rev="${org.eclipse.equinox.p2.publisher.eclipse}" conf="compile->runtime"/>

+		<dependency org="org.eclipse.virgo.mirrored" name="org.eclipse.equinox.p2.repository" rev="${org.eclipse.equinox.p2.repository}" conf="compile->runtime"/>

 		

 		<!-- Allow Equinox to be upgraded point-wise before rippling -->

-		<override org="org.eclipse.osgi" module="org.eclipse.osgi" rev="${org.eclipse.osgi}"/>	

+		<override org="org.eclipse.virgo.mirrored" module="org.eclipse.osgi" rev="${org.eclipse.osgi}"/>	

 	</dependencies>

 	

 </ivy-module>