diff --git a/.gitignore b/.gitignore
index 1930ad4..658337c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,4 @@
-/target/
+target/
 /.project
 /.settings/
 /.classpath
diff --git a/src/it/annotations-it/pom.xml b/src/it/annotations-it/pom.xml
index 22bc895..9366a27 100644
--- a/src/it/annotations-it/pom.xml
+++ b/src/it/annotations-it/pom.xml
@@ -31,7 +31,7 @@
     <!-- compile with java 7 -->
     <properties>
         <sling.java.version>8</sling.java.version>
-        <org.ops4j.pax.exam.version>4.13.3</org.ops4j.pax.exam.version>
+        <org.ops4j.pax.exam.version>4.13.4</org.ops4j.pax.exam.version>
         <!-- additional options that can be passed to Pax before executing the tests -->
         <pax.vm.options />
         <bundle.filename>${basedir}/target/${project.build.finalName}.jar</bundle.filename>
diff --git a/src/it/annotations-it/src/test/java/org/apache/sling/servlets/annotations/AnnotationsTestSupport.java b/src/it/annotations-it/src/test/java/org/apache/sling/servlets/annotations/AnnotationsTestSupport.java
index f1efd80..5042ac8 100644
--- a/src/it/annotations-it/src/test/java/org/apache/sling/servlets/annotations/AnnotationsTestSupport.java
+++ b/src/it/annotations-it/src/test/java/org/apache/sling/servlets/annotations/AnnotationsTestSupport.java
@@ -35,6 +35,7 @@
 import static org.ops4j.pax.exam.CoreOptions.systemProperty;
 
 import java.net.URI;
+import java.net.ServerSocket;
 
 public class AnnotationsTestSupport extends TestSupport {
 
@@ -44,12 +45,25 @@
     protected static int httpPort;
 
     @ClassRule
-    public static PaxExamServer serverRule = new PaxExamServer();
+    public static PaxExamServer serverRule = new PaxExamServer() {
+        @Override
+        protected void before() throws Exception {
+            // Use a different port for each OSGi framework instance
+            // that's started - they can overlap if the previous one
+            // is not fully stopped when the next one starts.
+            setHttpPort();
+            super.before();
+        }
+    };
 
-    public AnnotationsTestSupport() {
-        if(httpPort == 0) {
-            // findFreePort should probably be a static method
-            httpPort = findFreePort();
+    /** TODO this duplicates TestSupport.findFreePort, which is not static */
+    static void setHttpPort() {
+        try {
+            final ServerSocket serverSocket = new ServerSocket(0);
+            httpPort = serverSocket.getLocalPort();
+            serverSocket.close();
+        } catch (Exception e) {
+            throw new RuntimeException(e);
         }
     }
 
