463462 - Switches to Gradle build
diff --git a/.gitignore b/.gitignore
index fd950e3..3fbb103 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,3 +5,9 @@
 ivy-cache
 .ant-targets-build.xml
 user-ivy.properties
+bin/
+build/
+.settings/
+.project
+.classpath
+
diff --git a/build.gradle b/build.gradle
new file mode 100644
index 0000000..db3f04d
--- /dev/null
+++ b/build.gradle
@@ -0,0 +1,28 @@
+project(':repository:org.eclipse.virgo.repository') {
+    dependencies {
+		testCompile group: 'org.easymock', name: 'easymock', version: easymockVersion
+
+		testCompile project(':medic:org.eclipse.virgo.medic.test')
+		testCompile project(':test:org.eclipse.virgo.test.stubs')
+        testCompile group: 'org.apache.commons', name: 'com.springsource.org.apache.commons.codec', version: commonsCodecVersion, configuration: "compile", ext: "jar"
+		testCompile group: 'org.apache.commons', name: 'com.springsource.org.apache.commons.logging', version: commonsLoggingVersion, configuration: "compile", ext: "jar"
+
+        compile group: "org.eclipse.virgo.mirrored", name: "org.slf4j.api", version: slf4jVersion, configuration: "compile", ext: "jar"
+        compile group: "org.eclipse.virgo.mirrored", name: "org.eclipse.osgi", version: equinoxVersion, configuration: "compile", ext: "jar"
+
+		compile group: 'org.apache.commons', name: 'com.springsource.org.apache.commons.httpclient', version: commonsHttpClientVersion, configuration: "compile", ext: "jar"
+
+		compile project(':util:org.eclipse.virgo.util.common')
+		compile project(':util:org.eclipse.virgo.util.io')
+		compile project(':util:org.eclipse.virgo.util.jmx')
+		compile project(':util:org.eclipse.virgo.util.math')
+		compile project(':util:org.eclipse.virgo.util.osgi')
+		compile project(':util:org.eclipse.virgo.util.osgi.manifest')
+		compile project(':medic:org.eclipse.virgo.medic')
+
+        if (System.properties['weaving.enabled'] == 'true') {
+            aspectpath project(':medic:org.eclipse.virgo.medic')
+            aspectpath project(':util:org.eclipse.virgo.util.jmx')
+        }
+	}
+}
diff --git a/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/codec/XMLRepositoryCodecTests.java b/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/codec/XMLRepositoryCodecTests.java
index 3b22fb0..06c59e7 100644
--- a/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/codec/XMLRepositoryCodecTests.java
+++ b/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/codec/XMLRepositoryCodecTests.java
@@ -38,11 +38,11 @@
 
     @Test
     public void codec() throws FileNotFoundException, IndexFormatException {
-        FileOutputStream out = new FileOutputStream("target/repository.xml");
+        FileOutputStream out = new FileOutputStream("build/repository.xml");
         serializer.write(createArtifacts(), out);
         
 
-        Set<ArtifactDescriptor> artifacts = serializer.read(new FileInputStream("target/repository.xml"));
+        Set<ArtifactDescriptor> artifacts = serializer.read(new FileInputStream("build/repository.xml"));
         assertEquals(createArtifacts(), artifacts);
     }
 
diff --git a/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/configuration/ExternalStorageRepositoryConfigurationTests.java b/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/configuration/ExternalStorageRepositoryConfigurationTests.java
index 6593600..c1c79e2 100644
--- a/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/configuration/ExternalStorageRepositoryConfigurationTests.java
+++ b/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/configuration/ExternalStorageRepositoryConfigurationTests.java
@@ -40,7 +40,7 @@
     @Before
     public void createConfiguration() {
         name = "repo-name";
-        indexLocation = new File("target/index");
+        indexLocation = new File("build/index");
         artefactBridges = new HashSet<ArtifactBridge>();
         artefactBridges.add(new ArtifactBridge() {
 
diff --git a/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/configuration/PropertiesRepositoryConfigurationReaderTests.java b/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/configuration/PropertiesRepositoryConfigurationReaderTests.java
index a2621b1..8f1f3aa 100644
--- a/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/configuration/PropertiesRepositoryConfigurationReaderTests.java
+++ b/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/configuration/PropertiesRepositoryConfigurationReaderTests.java
@@ -57,7 +57,7 @@
         
         properties.setProperty("b.type", "watched");
         properties.setProperty("b.watchInterval", "5");
-        properties.setProperty("b.watchDirectory", "target/watched");
+        properties.setProperty("b.watchDirectory", "build/watched");
         
         properties.setProperty("c.type", "remote");
         properties.setProperty("c.indexRefreshInterval", "5");
@@ -89,7 +89,7 @@
         
         properties.setProperty("b.type", "watched");
         properties.setProperty("b.watchInterval", "5");
-        properties.setProperty("b.watchDirectory", "target/watched");
+        properties.setProperty("b.watchDirectory", "build/watched");
         
         Map<String, RepositoryConfiguration> configuration = configurationReader.readConfiguration(properties).getFirst();
         RepositoryConfiguration repositoryConfiguration = configuration.get("b");
@@ -98,7 +98,7 @@
         assertTrue(repositoryConfiguration instanceof WatchedStorageRepositoryConfiguration);
         
         File directoryToWatch = ((WatchedStorageRepositoryConfiguration)repositoryConfiguration).getDirectoryToWatch();
-        assertEquals(new File("foo/bar/target/watched").getCanonicalFile(), directoryToWatch.getCanonicalFile());
+        assertEquals(new File("foo/bar/build/watched").getCanonicalFile(), directoryToWatch.getCanonicalFile());
     }
     
     @Test
@@ -109,7 +109,7 @@
         properties.setProperty("a.searchPattern", "/**/*.jar");
         
         properties.setProperty("b.watchInterval", "5");
-        properties.setProperty("b.watchDirectory", "target/watched");
+        properties.setProperty("b.watchDirectory", "build/watched");
         
         Map<String,RepositoryConfiguration> configurationMap = configurationReader.readConfiguration(properties).getFirst();
         
@@ -165,7 +165,7 @@
     public void defaultingOfIndexRefreshIntervalAndWatchInterval() throws RepositoryConfigurationException {
         Properties properties = new Properties();
         properties.setProperty("watched-repo.type", "watched");
-        properties.setProperty("watched-repo.watchDirectory", "target/repository/watched");
+        properties.setProperty("watched-repo.watchDirectory", "build/repository/watched");
         properties.setProperty("remote-repo.type", "remote");
         properties.setProperty("remote-repo.uri", "http://localhost:8080/org.eclipse.virgo.repository/foo");
         properties.setProperty("chain", "watched-repo,remote-repo");
@@ -192,7 +192,7 @@
     public void defaultingOfIndexRefreshIntervalAndWatchIntervalWhenMalformed() throws RepositoryConfigurationException {
         Properties properties = new Properties();
         properties.setProperty("watched-repo.type", "watched");
-        properties.setProperty("watched-repo.watchDirectory", "target/repository/watched");
+        properties.setProperty("watched-repo.watchDirectory", "build/repository/watched");
         properties.setProperty("watched-repo.watchInterval", "alpha");
         properties.setProperty("remote-repo.type", "remote");
         properties.setProperty("remote-repo.uri", "http://localhost:8080/org.eclipse.virgo.repository/foo");
@@ -229,7 +229,7 @@
             properties.setProperty("bundles-ext.searchPattern", "repository/${org.eclipse.virgo.repository.internal.test.string}/ext/*.jar");
 
             properties.setProperty("watched-repo.type", "watched");
-            properties.setProperty("watched-repo.watchDirectory", "target/repository/${org.eclipse.virgo.repository.internal.test.string}");
+            properties.setProperty("watched-repo.watchDirectory", "build/repository/${org.eclipse.virgo.repository.internal.test.string}");
             properties.setProperty("watched-repo.watchInterval", "${org.eclipse.virgo.repository.internal.test.int}");
 
             properties.setProperty("remote-repo.type", "remote");
@@ -249,7 +249,7 @@
             assertEquals(new File(".").getAbsolutePath() + File.separator + "repository" + File.separator + "a" + File.separator + "ext" + File.separatorChar + "*.jar", externalConfiguration.getSearchPattern());
             
             WatchedStorageRepositoryConfiguration watchedConfiguration = (WatchedStorageRepositoryConfiguration)configurationMap.get(chainList.get(1));
-            assertEquals(new File("target/repository", "a").getCanonicalFile(), watchedConfiguration.getDirectoryToWatch().getCanonicalFile());
+            assertEquals(new File("build/repository", "a").getCanonicalFile(), watchedConfiguration.getDirectoryToWatch().getCanonicalFile());
             assertEquals(1, watchedConfiguration.getWatchInterval());
             
             RemoteRepositoryConfiguration remoteConfiguration = (RemoteRepositoryConfiguration)configurationMap.get(chainList.get(2));
diff --git a/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/configuration/WatchedStorageRepositoryConfigurationTests.java b/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/configuration/WatchedStorageRepositoryConfigurationTests.java
index 419e2c0..4bfba83 100644
--- a/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/configuration/WatchedStorageRepositoryConfigurationTests.java
+++ b/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/configuration/WatchedStorageRepositoryConfigurationTests.java
@@ -51,44 +51,44 @@
                 return null;
             }
         });
-        this.watchedDirectory = new File("target/dir-to-watch");
+        this.watchedDirectory = new File("build/dir-to-watch");
         this.watchedDirectory.delete();
     }
 
     @Test
     public void name() {
-        this.configuration = new WatchedStorageRepositoryConfiguration(name, new File("target/watchedIndex"), this.artefactBridges, this.watchedDirectory.getAbsolutePath(), watchInterval, null);
+        this.configuration = new WatchedStorageRepositoryConfiguration(name, new File("build/watchedIndex"), this.artefactBridges, this.watchedDirectory.getAbsolutePath(), watchInterval, null);
         assertEquals(name, this.configuration.getName());
     }
 
     @Test
     public void watchedDirectory() {
         this.watchedDirectory.mkdir();
-        this.configuration = new WatchedStorageRepositoryConfiguration(name, new File("target/watchedIndex"), this.artefactBridges, this.watchedDirectory.getAbsolutePath(), watchInterval, null);
+        this.configuration = new WatchedStorageRepositoryConfiguration(name, new File("build/watchedIndex"), this.artefactBridges, this.watchedDirectory.getAbsolutePath(), watchInterval, null);
         assertEquals(this.watchedDirectory.getAbsoluteFile(), this.configuration.getDirectoryToWatch().getAbsoluteFile());
     }
 
     @Test
     public void artefactBridges() {
-        this.configuration = new WatchedStorageRepositoryConfiguration(name, new File("target/watchedIndex"), this.artefactBridges, this.watchedDirectory.getAbsolutePath(), watchInterval, null);
+        this.configuration = new WatchedStorageRepositoryConfiguration(name, new File("build/watchedIndex"), this.artefactBridges, this.watchedDirectory.getAbsolutePath(), watchInterval, null);
         assertEquals(this.artefactBridges, this.configuration.getArtefactBridges());
     }
 
     @Test
     public void watchInterval() {
-        this.configuration = new WatchedStorageRepositoryConfiguration(name, new File("target/watchedIndex"), this.artefactBridges, this.watchedDirectory.getAbsolutePath(), watchInterval, null);
+        this.configuration = new WatchedStorageRepositoryConfiguration(name, new File("build/watchedIndex"), this.artefactBridges, this.watchedDirectory.getAbsolutePath(), watchInterval, null);
         assertEquals(watchInterval, this.configuration.getWatchInterval());
     }
 
     @Test(expected = IllegalArgumentException.class)
     public void badWatchIntervalZero() {
-        this.configuration = new WatchedStorageRepositoryConfiguration(name, new File("target/watchedIndex"), this.artefactBridges, this.watchedDirectory.getAbsolutePath(), BAD_WATCH_INTERVAL_ZERO,
+        this.configuration = new WatchedStorageRepositoryConfiguration(name, new File("build/watchedIndex"), this.artefactBridges, this.watchedDirectory.getAbsolutePath(), BAD_WATCH_INTERVAL_ZERO,
             null);
     }
 
     @Test(expected = IllegalArgumentException.class)
     public void badWatchIntervalNeg() {
-        this.configuration = new WatchedStorageRepositoryConfiguration(name, new File("target/watchedIndex"), this.artefactBridges, this.watchedDirectory.getAbsolutePath(), BAD_WATCH_INTERVAL_NEG,
+        this.configuration = new WatchedStorageRepositoryConfiguration(name, new File("build/watchedIndex"), this.artefactBridges, this.watchedDirectory.getAbsolutePath(), BAD_WATCH_INTERVAL_NEG,
             null);
     }
 
diff --git a/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/ExternalStorageRepositoryTests.java b/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/ExternalStorageRepositoryTests.java
index a894297..1169561 100644
--- a/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/ExternalStorageRepositoryTests.java
+++ b/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/ExternalStorageRepositoryTests.java
@@ -61,7 +61,7 @@
     
     @Test
     public void mBeanPublication() throws Exception {
-        ExternalStorageRepositoryConfiguration configuration = new ExternalStorageRepositoryConfiguration("external-repo", new File("target","index"),
+        ExternalStorageRepositoryConfiguration configuration = new ExternalStorageRepositoryConfiguration("external-repo", new File("build","index"),
             Collections.<ArtifactBridge> emptySet(), new File(".").getAbsolutePath(), MBEAN_DOMAIN_VIRGO_WEB_SERVER);
         
         mockEventLogger.reinitialise();
@@ -99,7 +99,7 @@
     
     @Test
     public void mBeanNonPublication() throws Exception {
-        ExternalStorageRepositoryConfiguration configuration = new ExternalStorageRepositoryConfiguration("external-repo", new File("target","index"),
+        ExternalStorageRepositoryConfiguration configuration = new ExternalStorageRepositoryConfiguration("external-repo", new File("build","index"),
             Collections.<ArtifactBridge> emptySet(), new File(".").getAbsolutePath(), null);
         
         mockEventLogger.reinitialise();
@@ -139,10 +139,10 @@
     @Test
     public void publishAndRetract() throws Exception {
         
-        String searchPattern = (new File("target", "nosuchdir").getAbsolutePath() + File.separator + "*");
+        String searchPattern = (new File("build", "nosuchdir").getAbsolutePath() + File.separator + "*");
         
         ArtifactBridge artifactBridge = createMock(ArtifactBridge.class);
-        ExternalStorageRepositoryConfiguration configuration = new ExternalStorageRepositoryConfiguration("external-repo", new File("target","index"),
+        ExternalStorageRepositoryConfiguration configuration = new ExternalStorageRepositoryConfiguration("external-repo", new File("build","index"),
             new HashSet<ArtifactBridge>(Arrays.asList(artifactBridge)), searchPattern, null);
 
         mockEventLogger.reinitialise();
@@ -180,7 +180,7 @@
 
     @Test(expected=IllegalArgumentException.class)
     public void publishBadArtifact() throws Exception {
-        ExternalStorageRepositoryConfiguration configuration = new ExternalStorageRepositoryConfiguration("external-repo", new File("target","index"),
+        ExternalStorageRepositoryConfiguration configuration = new ExternalStorageRepositoryConfiguration("external-repo", new File("build","index"),
             new HashSet<ArtifactBridge>(), new File(".").getAbsolutePath(), null);
 
         mockEventLogger.reinitialise();
@@ -202,7 +202,7 @@
     @Test
     public void testGetArtifactLocations() throws Exception {
         ArtifactBridge artifactBridge = createMock(ArtifactBridge.class);
-        ExternalStorageRepositoryConfiguration configuration = new ExternalStorageRepositoryConfiguration("external-repo", new File("target","index"),
+        ExternalStorageRepositoryConfiguration configuration = new ExternalStorageRepositoryConfiguration("external-repo", new File("build","index"),
             new HashSet<ArtifactBridge>(Arrays.asList(artifactBridge)), LOCATIONS_SEARCH_PATTERN, null);
 
         mockEventLogger.reinitialise();
diff --git a/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/RepositoryDumpContributorTests.java b/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/RepositoryDumpContributorTests.java
index 569d51f..9d2352b 100644
--- a/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/RepositoryDumpContributorTests.java
+++ b/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/RepositoryDumpContributorTests.java
@@ -44,7 +44,7 @@
 
 public class RepositoryDumpContributorTests {
 
-    private static final String DUMP_TARGET = "target/dump";
+    private static final String DUMP_TARGET = "build/dump";
 
     private PathReference target = new PathReference(DUMP_TARGET);
 
diff --git a/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/StandardRepositoryFactoryTests.java b/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/StandardRepositoryFactoryTests.java
index 56d9e6f..bfdbf48 100644
--- a/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/StandardRepositoryFactoryTests.java
+++ b/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/StandardRepositoryFactoryTests.java
@@ -49,7 +49,7 @@
 
     @Test
     public void chainedRepository() throws RepositoryCreationException {
-        RepositoryConfiguration config = new ExternalStorageRepositoryConfiguration("test", new File("target/externalIndex"),
+        RepositoryConfiguration config = new ExternalStorageRepositoryConfiguration("test", new File("build/externalIndex"),
             Collections.<ArtifactBridge> emptySet(), System.getProperty("user.dir") + "/target/external", null);
         Repository repository = factory.createRepository(Arrays.asList(config, config));
         assertTrue(repository instanceof ChainedRepository);
@@ -59,10 +59,10 @@
 
     @Test
     public void chainedRepositoryWithBadRepositoryInChain() throws RepositoryCreationException {
-        RepositoryConfiguration config = new ExternalStorageRepositoryConfiguration("test", new File("target/externalIndex"),
+        RepositoryConfiguration config = new ExternalStorageRepositoryConfiguration("test", new File("build/externalIndex"),
             Collections.<ArtifactBridge> emptySet(), System.getProperty("user.dir") + "/target/external", null);
-        RepositoryConfiguration badConfig = new ManagedStorageRepositoryConfiguration("test", new File("target/managedIndex"),
-            Collections.<ArtifactBridge> emptySet(), new File("target/managedStorage"), null);
+        RepositoryConfiguration badConfig = new ManagedStorageRepositoryConfiguration("test", new File("build/managedIndex"),
+            Collections.<ArtifactBridge> emptySet(), new File("build/managedStorage"), null);
         Repository repository = factory.createRepository(Arrays.asList(config, badConfig, config));
         assertTrue(repository instanceof ChainedRepository);
         assertEquals("test-test", repository.getName());
@@ -71,7 +71,7 @@
 
     @Test
     public void externalStorageRepository() throws RepositoryCreationException {
-        Repository repository = factory.createRepository(new ExternalStorageRepositoryConfiguration("test", new File("target/externalIndex"),
+        Repository repository = factory.createRepository(new ExternalStorageRepositoryConfiguration("test", new File("build/externalIndex"),
             Collections.<ArtifactBridge> emptySet(), System.getProperty("user.dir") + "/target/external", null));
         assertTrue(repository instanceof ExternalStorageRepository);
         assertFalse("log events were issued", mockEventLogger.getCalled());
@@ -79,9 +79,9 @@
 
     @Test
     public void watchedStorageRepository() throws RepositoryCreationException {
-        File watchDir = new File("target/watch");
+        File watchDir = new File("build/watch");
         watchDir.mkdirs();
-        Repository repository = factory.createRepository(new WatchedStorageRepositoryConfiguration("test", new File("target/watchedIndex"), Collections.<ArtifactBridge> emptySet(),
+        Repository repository = factory.createRepository(new WatchedStorageRepositoryConfiguration("test", new File("build/watchedIndex"), Collections.<ArtifactBridge> emptySet(),
             watchDir.getAbsolutePath(), 1000, null));
         assertTrue(repository instanceof WatchedStorageRepository);
         assertFalse("log events were issued", mockEventLogger.getCalled());
@@ -89,16 +89,16 @@
 
     @Test
     public void remoteRepository() throws RepositoryCreationException {
-        Repository repository = factory.createRepository(new RemoteRepositoryConfiguration("test", new File("target/remoteIndex"),
-            URI.create("http://localhost"), 1000, null, new File("target")));
+        Repository repository = factory.createRepository(new RemoteRepositoryConfiguration("test", new File("build/remoteIndex"),
+            URI.create("http://localhost"), 1000, null, new File("build")));
         assertTrue(repository instanceof RemoteRepository);
         assertFalse("log events were issued", mockEventLogger.getCalled());
     }
 
     @Test(expected = RepositoryCreationException.class)
     public void managedStorageRepository() throws RepositoryCreationException {
-        factory.createRepository(new ManagedStorageRepositoryConfiguration("test", new File("target/managedIndex"),
-            Collections.<ArtifactBridge> emptySet(), new File("target/managedStorage"), null));
+        factory.createRepository(new ManagedStorageRepositoryConfiguration("test", new File("build/managedIndex"),
+            Collections.<ArtifactBridge> emptySet(), new File("build/managedStorage"), null));
     }
 
     @Test(expected = RepositoryCreationException.class)
diff --git a/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/cacheing/cache/StandardRepositoryCacheIntegrationTests.java b/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/cacheing/cache/StandardRepositoryCacheIntegrationTests.java
index da32a44..ab1e9b8 100644
--- a/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/cacheing/cache/StandardRepositoryCacheIntegrationTests.java
+++ b/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/cacheing/cache/StandardRepositoryCacheIntegrationTests.java
@@ -49,11 +49,11 @@
 
     private static final String REPO_NAME = "repo";
 
-    private static final File REPOSITORY_CACHE_DIRECTORY = new File("target/repocache");
+    private static final File REPOSITORY_CACHE_DIRECTORY = new File("build/repocache");
 
-    private static final File BUNDLE_DIRECTORY = new File("target/cacheing");
+    private static final File BUNDLE_DIRECTORY = new File("build/cacheing");
 
-    private static final File BUNDLE_FILE = new File("target/cacheing/b.jar");
+    private static final File BUNDLE_FILE = new File("build/cacheing/b.jar");
 
     private static final String ARTIFACT_TYPE = "bundle";
 
diff --git a/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/cacheing/cache/StandardRepositoryCacheTests.java b/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/cacheing/cache/StandardRepositoryCacheTests.java
index 0ec711a..8e1a02c 100644
--- a/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/cacheing/cache/StandardRepositoryCacheTests.java
+++ b/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/cacheing/cache/StandardRepositoryCacheTests.java
@@ -110,7 +110,7 @@
     }
 
     private void setUpRepositoryCache() {
-        this.repositoryCache = new StandardRepositoryCache(REPO_NAME, new File("target"), this.mockArtifactCacheFactory,
+        this.repositoryCache = new StandardRepositoryCache(REPO_NAME, new File("build"), this.mockArtifactCacheFactory,
             this.mockArtifactDescriptorHashFactory);
     }
 
diff --git a/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/cacheing/cache/artifact/DownloaderTests.java b/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/cacheing/cache/artifact/DownloaderTests.java
index 46a8c33..97043b8 100644
--- a/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/cacheing/cache/artifact/DownloaderTests.java
+++ b/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/cacheing/cache/artifact/DownloaderTests.java
@@ -33,7 +33,7 @@
 
     @Before
     public void setUp() throws Exception {
-        this.destinationDirectory = new PathReference("target/downloaderTests");
+        this.destinationDirectory = new PathReference("build/downloaderTests");
         this.destinationDirectory.delete(true);
         this.destinationDirectory.createDirectory();
     }
diff --git a/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/cacheing/cache/artifact/StandardArtifactCacheTests.java b/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/cacheing/cache/artifact/StandardArtifactCacheTests.java
index 6d5fabf..c62a2e7 100644
--- a/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/cacheing/cache/artifact/StandardArtifactCacheTests.java
+++ b/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/cacheing/cache/artifact/StandardArtifactCacheTests.java
@@ -42,11 +42,11 @@
  */
 public class StandardArtifactCacheTests {
 
-    private static final File REPOSITORY_CACHE_DIRECTORY = new File("target/cache");
+    private static final File REPOSITORY_CACHE_DIRECTORY = new File("build/cache");
 
-    private static final File BUNDLE_DIRECTORY = new File("target/cacheing");
+    private static final File BUNDLE_DIRECTORY = new File("build/cacheing");
 
-    private static final File BUNDLE_FILE = new File("target/cacheing/b.jar");
+    private static final File BUNDLE_FILE = new File("build/cacheing/b.jar");
 
     private static final String ARTIFACT_TYPE = "bundle";
 
diff --git a/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/persistence/XmlArtifactDescriptorPersisterTests.java b/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/persistence/XmlArtifactDescriptorPersisterTests.java
index 12b48dd..ca95e7a 100644
--- a/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/persistence/XmlArtifactDescriptorPersisterTests.java
+++ b/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/persistence/XmlArtifactDescriptorPersisterTests.java
@@ -68,7 +68,7 @@
 
     private static final String DUMMY_REPOSITORY_NAME = "dummyRepositoryName";
 
-    private final File repositories = new File("target/repositories");
+    private final File repositories = new File("build/repositories");
 
     @Before
     public void setUp() throws Exception {
diff --git a/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/remote/DescriptorStoreFactoryTests.java b/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/remote/DescriptorStoreFactoryTests.java
index 695d005..5393239 100644
--- a/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/remote/DescriptorStoreFactoryTests.java
+++ b/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/remote/DescriptorStoreFactoryTests.java
@@ -40,7 +40,7 @@
 
     private static final String REPOSITORY_NAME = "reponame";
 
-    private static final File DESCRIPTOR_STORE_DIRECTORY = new File("target/descriptorStore");
+    private static final File DESCRIPTOR_STORE_DIRECTORY = new File("build/descriptorStore");
 
     private DescriptorStoreFactory descriptorStoreFactory;
 
diff --git a/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/remote/RemoteRepositoryTests.java b/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/remote/RemoteRepositoryTests.java
index 94ac806..f7c23b5 100644
--- a/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/remote/RemoteRepositoryTests.java
+++ b/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/remote/RemoteRepositoryTests.java
@@ -39,10 +39,8 @@
 import org.junit.Before;
 import org.junit.Test;
 import org.osgi.framework.Version;
-
 import org.eclipse.virgo.medic.eventlog.EventLogger;
 import org.eclipse.virgo.medic.test.eventlog.MockEventLogger;
-
 import org.eclipse.virgo.repository.ArtifactBridge;
 import org.eclipse.virgo.repository.ArtifactDescriptor;
 import org.eclipse.virgo.repository.ArtifactGenerationException;
@@ -58,7 +56,9 @@
 import org.eclipse.virgo.repository.internal.remote.RemoteRepository;
 import org.eclipse.virgo.repository.management.RepositoryInfo;
 import org.eclipse.virgo.util.io.FileCopyUtils;
+import org.eclipse.virgo.util.io.NetUtils;
 import org.eclipse.virgo.util.osgi.manifest.VersionRange;
+
 import com.sun.net.httpserver.HttpExchange;
 import com.sun.net.httpserver.HttpHandler;
 import com.sun.net.httpserver.HttpServer;
@@ -76,17 +76,19 @@
     private int repositoryId = 0;
 
     private HttpServer httpServer;
+    private int port;
 
-    private final File indexLocation = new File("target/index");
+    private final File indexLocation = new File("build/index");
 
-    private final File proxyIndexLocation = new File("target/proxy.index");
+    private final File proxyIndexLocation = new File("build/proxy.index");
 
-    private final File cacheDirectory = new File("target");
+    private final File cacheDirectory = new File("build");
 
     @Before
     public void deleteIndex() {
         this.indexLocation.delete();
         this.proxyIndexLocation.delete();
+        this.port = NetUtils.getFreePort();
     }
 
     private void createRepository(ArtifactBridge artefactBridge, EventLogger eventLogger) throws Exception {
@@ -103,7 +105,7 @@
     }
 
     private void bootstrapHttpServer(HttpHandler handler) throws IOException {
-        this.httpServer = HttpServer.create(new InetSocketAddress("localhost", 8080), 30);
+        this.httpServer = HttpServer.create(new InetSocketAddress("localhost", port), 30);
         this.httpServer.start();
 
         this.httpServer.createContext("/repository", handler);
@@ -163,7 +165,7 @@
         createRepository(bridge, this.mockEventLogger);
         bootstrapHttpServer(new StandardHttpHandler());
 
-        URI repositoryUri = URI.create("http://localhost:8080/repository");
+        URI repositoryUri = URI.create("http://localhost:" + this .port + "/repository");
         RemoteRepositoryConfiguration configuration = new RemoteRepositoryConfiguration("remote-repo", this.proxyIndexLocation, repositoryUri, 1,
             null, this.cacheDirectory);
         RemoteRepository repository = createRemoteRepository(configuration, this.mockEventLogger);
@@ -220,8 +222,7 @@
 
         bootstrapHttpServer(new StandardHttpHandler());
 
-        URI repositoryUri = URI.create("http://localhost:8080/repository");
-
+        URI repositoryUri = URI.create("http://localhost:" + this .port + "/repository");
         RemoteRepositoryConfiguration configuration = new RemoteRepositoryConfiguration("remote-repo", this.proxyIndexLocation, repositoryUri, 1,
             null, this.cacheDirectory);
         RemoteRepository repository = new RemoteRepository(configuration, new MockEventLogger());
@@ -240,7 +241,7 @@
         createRepository(bridge, new MockEventLogger());
         bootstrapHttpServer(new StandardHttpHandler());
 
-        URI repositoryUri = URI.create("http://localhost:8080/repository");
+        URI repositoryUri = URI.create("http://localhost:" + this .port + "/repository");
         RemoteRepositoryConfiguration configuration = new RemoteRepositoryConfiguration("remote-repo", this.proxyIndexLocation, repositoryUri, 1,
             null, this.cacheDirectory);
         RemoteRepository repository = createRemoteRepository(configuration, this.mockEventLogger);
@@ -254,7 +255,7 @@
 
     @Test
     public void indexlessRepository() throws Exception {
-        URI repositoryUri = URI.create("http://localhost:8080/does-not-exist");
+        URI repositoryUri = URI.create("http://localhost:" + this .port + "/does-not-exist");
 
         RemoteRepositoryConfiguration configuration = new RemoteRepositoryConfiguration("remote-repo", this.proxyIndexLocation, repositoryUri, 1,
             null, this.cacheDirectory);
@@ -270,7 +271,7 @@
 
     @Test(expected = IllegalArgumentException.class)
     public void badScheme() throws Exception {
-        URI repositoryUri = URI.create("hotp://localhost:8080/repository");
+        URI repositoryUri = URI.create("hotp://localhost:" + this .port + "/repository");
 
         RemoteRepositoryConfiguration configuration = new RemoteRepositoryConfiguration("remote-repo", this.proxyIndexLocation, repositoryUri, 1,
             null, this.cacheDirectory);
@@ -297,8 +298,7 @@
             }
         });
 
-        URI repositoryUri = URI.create("http://localhost:8080/repository");
-
+        URI repositoryUri = URI.create("http://localhost:" + this .port + "/repository");
         RemoteRepositoryConfiguration configuration = new RemoteRepositoryConfiguration("remote-repo", this.proxyIndexLocation, repositoryUri, 1,
             null, this.cacheDirectory);
         RemoteRepository repository = new RemoteRepository(configuration, new MockEventLogger());
@@ -338,8 +338,7 @@
             }
         });
 
-        URI repositoryUri = URI.create("http://localhost:8080/repository");
-
+        URI repositoryUri = URI.create("http://localhost:" + this .port + "/repository");
         RemoteRepositoryConfiguration configuration = new RemoteRepositoryConfiguration("remote-repo", this.proxyIndexLocation, repositoryUri, 1,
             null, this.cacheDirectory);
         RemoteRepository repository = new RemoteRepository(configuration, new MockEventLogger());
@@ -376,7 +375,7 @@
             }
         });
 
-        URI repositoryUri = URI.create("http://localhost:8080/repository");
+        URI repositoryUri = URI.create("http://localhost:" + this .port + "/repository");
         RemoteRepositoryConfiguration configuration = new RemoteRepositoryConfiguration("remote-repo", this.proxyIndexLocation, repositoryUri, 1,
             null, this.cacheDirectory);
         RemoteRepository repository = new RemoteRepository(configuration, new MockEventLogger());
@@ -399,7 +398,7 @@
 
     @Test
     public void mBeanPublication() throws Exception {
-        URI repositoryUri = URI.create("http://localhost:8080/repository");
+        URI repositoryUri = URI.create("http://localhost:" + this .port + "/repository");
         RemoteRepositoryConfiguration configuration = new RemoteRepositoryConfiguration("remote-repo", this.proxyIndexLocation, repositoryUri, 1,
             MBEAN_DOMAIN_VIRGO_WEB_SERVER, this.cacheDirectory);
         RemoteRepository repository = new RemoteRepository(configuration, new MockEventLogger());
@@ -431,7 +430,7 @@
 
     @Test
     public void mBeanNonPublication() throws Exception {
-        URI repositoryUri = URI.create("http://localhost:8080/repository");
+        URI repositoryUri = URI.create("http://localhost:" + this .port + "/repository");
         RemoteRepositoryConfiguration configuration = new RemoteRepositoryConfiguration("remote-repo", this.proxyIndexLocation, repositoryUri, 1,
             null, this.cacheDirectory);
         RemoteRepository repository = new RemoteRepository(configuration, new MockEventLogger());
diff --git a/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/watched/WatchedStorageRepositoryTests.java b/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/watched/WatchedStorageRepositoryTests.java
index 294f91c..71f4b31 100644
--- a/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/watched/WatchedStorageRepositoryTests.java
+++ b/org.eclipse.virgo.repository/src/test/java/org/eclipse/virgo/repository/internal/watched/WatchedStorageRepositoryTests.java
@@ -83,7 +83,7 @@
 
     private WatchedStorageRepository wsRepository;
 
-    private final File watchDir = new File("target/watchedDir");
+    private final File watchDir = new File("build/watchedDir");
 
     private Set<ArtifactBridge> artefactBridgeDefinitions;
 
@@ -98,7 +98,7 @@
 
     @Test
     public void testConstructor() throws RepositoryCreationException, IndexFormatException {
-        this.wsrConfiguration = new WatchedStorageRepositoryConfiguration(WATCHED_REPO_NAME, new File("target/watchedIndex"), this.artefactBridgeDefinitions, this.watchDir.getAbsolutePath(),
+        this.wsrConfiguration = new WatchedStorageRepositoryConfiguration(WATCHED_REPO_NAME, new File("build/watchedIndex"), this.artefactBridgeDefinitions, this.watchDir.getAbsolutePath(),
             WATCH_INTERVAL, null);
 
         this.wsRepository = new WatchedStorageRepository(this.wsrConfiguration, new MockEventLogger());
@@ -107,7 +107,7 @@
 
     @Test
     public void testConstructLongWaiter() throws RepositoryCreationException, IndexFormatException {
-        this.wsrConfiguration = new WatchedStorageRepositoryConfiguration(WATCHED_REPO_NAME, new File("target/watchedIndex"), this.artefactBridgeDefinitions, this.watchDir.getAbsolutePath(),
+        this.wsrConfiguration = new WatchedStorageRepositoryConfiguration(WATCHED_REPO_NAME, new File("build/watchedIndex"), this.artefactBridgeDefinitions, this.watchDir.getAbsolutePath(),
             LONG_WATCH_INTERVAL, null);
 
         this.wsRepository = new WatchedStorageRepository(this.wsrConfiguration, mockEventLogger);
@@ -117,7 +117,7 @@
 
     @Test(expected = IllegalArgumentException.class)
     public void testConstructorBadWaiter() throws RepositoryCreationException, IndexFormatException {
-        this.wsrConfiguration = new WatchedStorageRepositoryConfiguration(WATCHED_REPO_NAME, new File("target/watchedIndex"), this.artefactBridgeDefinitions, this.watchDir.getAbsolutePath(),
+        this.wsrConfiguration = new WatchedStorageRepositoryConfiguration(WATCHED_REPO_NAME, new File("build/watchedIndex"), this.artefactBridgeDefinitions, this.watchDir.getAbsolutePath(),
             BAD_WATCH_INTERVAL, null);
 
         this.wsRepository = new WatchedStorageRepository(this.wsrConfiguration, mockEventLogger);
@@ -127,7 +127,7 @@
 
     @Test
     public void testGetArtifactLocations() throws Exception {
-        this.wsrConfiguration = new WatchedStorageRepositoryConfiguration(WATCHED_REPO_NAME, new File("target/watchedIndex"), this.artefactBridgeDefinitions, this.watchDir.getAbsolutePath(),
+        this.wsrConfiguration = new WatchedStorageRepositoryConfiguration(WATCHED_REPO_NAME, new File("build/watchedIndex"), this.artefactBridgeDefinitions, this.watchDir.getAbsolutePath(),
             WATCH_INTERVAL, null);
         this.wsRepository = new WatchedStorageRepository(this.wsrConfiguration, mockEventLogger);
         assertFalse("Didn't create a repository!", null == this.wsRepository);
@@ -141,7 +141,7 @@
     
     @Test
     public void testGetOnEmptyRepository() throws RepositoryCreationException, IOException {
-        this.wsrConfiguration = new WatchedStorageRepositoryConfiguration(WATCHED_REPO_NAME, new File("target/watchedIndex"), this.artefactBridgeDefinitions, this.watchDir.getAbsolutePath(),
+        this.wsrConfiguration = new WatchedStorageRepositoryConfiguration(WATCHED_REPO_NAME, new File("build/watchedIndex"), this.artefactBridgeDefinitions, this.watchDir.getAbsolutePath(),
             WATCH_INTERVAL, null);
 
         this.wsRepository = new WatchedStorageRepository(this.wsrConfiguration, mockEventLogger);
@@ -159,7 +159,7 @@
 
     @Test
     public void testGetInitialArtefact() throws RepositoryCreationException, IOException {
-        this.wsrConfiguration = new WatchedStorageRepositoryConfiguration(WATCHED_REPO_NAME, new File("target/watchedIndex"), this.artefactBridgeDefinitions, this.watchDir.getAbsolutePath(),
+        this.wsrConfiguration = new WatchedStorageRepositoryConfiguration(WATCHED_REPO_NAME, new File("build/watchedIndex"), this.artefactBridgeDefinitions, this.watchDir.getAbsolutePath(),
             MIN_WATCH_INTERVAL, null);
 
         putArtifactFile(testArtefactFile1);
@@ -179,7 +179,7 @@
 
     @Test
     public void testGetInitialArtefactWithCheck() throws Exception {
-        this.wsrConfiguration = new WatchedStorageRepositoryConfiguration(WATCHED_REPO_NAME, new File("target/watchedIndex"), this.artefactBridgeDefinitions, this.watchDir.getAbsolutePath(),
+        this.wsrConfiguration = new WatchedStorageRepositoryConfiguration(WATCHED_REPO_NAME, new File("build/watchedIndex"), this.artefactBridgeDefinitions, this.watchDir.getAbsolutePath(),
             MIN_WATCH_INTERVAL, null);
 
         putArtifactFile(testArtefactFile1);
@@ -211,7 +211,7 @@
 
     @Test
     public void testGetAddAndDeleteArtefact() throws RepositoryCreationException, IOException {
-        this.wsrConfiguration = new WatchedStorageRepositoryConfiguration(WATCHED_REPO_NAME, new File("target/watchedIndex"), this.artefactBridgeDefinitions, this.watchDir.getAbsolutePath(),
+        this.wsrConfiguration = new WatchedStorageRepositoryConfiguration(WATCHED_REPO_NAME, new File("build/watchedIndex"), this.artefactBridgeDefinitions, this.watchDir.getAbsolutePath(),
             MIN_WATCH_INTERVAL, null);
 
         this.wsRepository = new WatchedStorageRepository(this.wsrConfiguration, new MockEventLogger());
@@ -242,7 +242,7 @@
     
     @Test
     public void testGetAddAndDeleteArtefactWithCheck() throws RepositoryCreationException, IOException, ArtifactGenerationException, Exception {
-        this.wsrConfiguration = new WatchedStorageRepositoryConfiguration(WATCHED_REPO_NAME, new File("target/watchedIndex"), this.artefactBridgeDefinitions, this.watchDir.getAbsolutePath(),
+        this.wsrConfiguration = new WatchedStorageRepositoryConfiguration(WATCHED_REPO_NAME, new File("build/watchedIndex"), this.artefactBridgeDefinitions, this.watchDir.getAbsolutePath(),
             MIN_WATCH_INTERVAL, null);
 
         this.wsRepository = new WatchedStorageRepository(this.wsrConfiguration, new MockEventLogger());
@@ -273,7 +273,7 @@
 
     @Test
     public void mBeanPublication() throws Exception {
-        this.wsrConfiguration = new WatchedStorageRepositoryConfiguration(WATCHED_REPO_NAME, new File("target/watchedIndex"), this.artefactBridgeDefinitions, this.watchDir.getAbsolutePath(),
+        this.wsrConfiguration = new WatchedStorageRepositoryConfiguration(WATCHED_REPO_NAME, new File("build/watchedIndex"), this.artefactBridgeDefinitions, this.watchDir.getAbsolutePath(),
             WATCH_INTERVAL, MBEAN_DOMAIN_VIRGO_WEB_SERVER);
 
         this.wsRepository = new WatchedStorageRepository(this.wsrConfiguration, mockEventLogger);
@@ -304,7 +304,7 @@
 
     @Test
     public void mBeanNonPublication() throws Exception {
-        this.wsrConfiguration = new WatchedStorageRepositoryConfiguration(WATCHED_REPO_NAME, new File("target/watchedIndex"), this.artefactBridgeDefinitions, this.watchDir.getAbsolutePath(),
+        this.wsrConfiguration = new WatchedStorageRepositoryConfiguration(WATCHED_REPO_NAME, new File("build/watchedIndex"), this.artefactBridgeDefinitions, this.watchDir.getAbsolutePath(),
             WATCH_INTERVAL, null);
         this.wsRepository = new WatchedStorageRepository(this.wsrConfiguration, mockEventLogger);
         ObjectName objectName = new ObjectName(MBEAN_DOMAIN_VIRGO_WEB_SERVER + ":type=Repository,name=" + WATCHED_REPO_NAME);
diff --git a/org.eclipse.virgo.repository/template.mf b/org.eclipse.virgo.repository/template.mf
index 0db5b2b..fa3f7d6 100644
--- a/org.eclipse.virgo.repository/template.mf
+++ b/org.eclipse.virgo.repository/template.mf
@@ -4,15 +4,15 @@
 Bundle-SymbolicName: org.eclipse.virgo.repository
 Bundle-Version: ${version}
 Import-Template: 
- org.eclipse.virgo.util.*;version="${org.eclipse.virgo.util:[=.=.=, +1)}",
+ org.eclipse.virgo.util.*;version="${version:[=.=.=, +1)}",
  javax.management.*;version="0",
  javax.xml.stream.*;version="0",
- org.apache.commons.httpclient.*;version="${org.apache.commons.httpclient:[=.=.=, +1]}",
+ org.apache.commons.httpclient.*;version="${commonsHttpClientVersion:[=.=.=, +1]}",
  org.osgi.framework.*;version="0",
  org.osgi.util.tracker.*;version="0",
- org.eclipse.virgo.medic.*;version="${org.eclipse.virgo.medic:[=.=.=, +1]}",
+ org.eclipse.virgo.medic.*;version="${version:[=.=.=, +1]}",
  org.slf4j.*;version="0",
- org.aspectj.*;version="${org.aspectj:[=.=.=, +1)}"
+ org.aspectj.*;version="${orgAspectjVersion:[=.=.=, +1)}"
 Excluded-Exports: 
  org.eclipse.virgo.repository.internal.*,
  org.eclipse.virgo.repository.storage.*