diff --git a/pom.xml b/pom.xml
index 1d12255..c5df57f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -47,27 +47,6 @@
     <build>
         <plugins>
             <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-enforcer-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>enforce-java</id>
-                        <goals>
-                            <goal>enforce</goal>
-                        </goals>
-                        <configuration>
-                            <rules>
-                                <requireJavaVersion>
-                                    <message>${project.name} must be compiled with Java 1.8 or higher.</message>
-                                    <version>1.${sling.java.version}.0</version>
-                                </requireJavaVersion>
-                            </rules>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-
-            <plugin>
                 <groupId>org.codehaus.plexus</groupId>
                 <artifactId>plexus-component-metadata</artifactId>
                 <version>1.7.1</version>
@@ -121,14 +100,7 @@
                 </configuration>
             </plugin>
             <plugin>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <!-- for https://issues.apache.org/jira/browse/SUREFIRE-1067 -->
-                <version>2.20.1</version>
-            </plugin>
-            <plugin>
                 <artifactId>maven-failsafe-plugin</artifactId>
-                <!-- for https://issues.apache.org/jira/browse/SUREFIRE-855 -->
-                <version>2.20.1</version>
                 <executions>
                     <execution>
                         <goals>
diff --git a/src/test/java/org/apache/sling/maven/slingstart/GenerateResourcesMojoTest.java b/src/test/java/org/apache/sling/maven/slingstart/GenerateResourcesMojoTest.java
index 16713f5..cd126d5 100644
--- a/src/test/java/org/apache/sling/maven/slingstart/GenerateResourcesMojoTest.java
+++ b/src/test/java/org/apache/sling/maven/slingstart/GenerateResourcesMojoTest.java
@@ -74,6 +74,7 @@
         Mockito.when(proj.getGroupId()).thenReturn("g");
         Mockito.when(proj.getArtifactId()).thenReturn("a");
         Mockito.when(proj.getVersion()).thenReturn("1");
+        Mockito.when(proj.getBasedir()).thenReturn(featureDir.getParentFile());
         final Properties projProps = new Properties();
         Mockito.when(proj.getProperties()).thenReturn(projProps);
         File f = new File(System.getProperty("user.home") + File.separatorChar + ".m2");
@@ -84,7 +85,7 @@
         Mockito.when(session.getLocalRepository()).thenReturn(localRepo);
 
         GenerateResourcesMojo grm = new GenerateResourcesMojo();
-        setPrivateField(grm, "featuresDirectory", featureDir.getAbsolutePath());
+        setPrivateField(grm, "featuresDirectory", featureDir.getName());
         setPrivateField(AbstractSlingStartMojo.class, grm, "project", proj);
         setPrivateField(AbstractSlingStartMojo.class, grm, "mavenSession", session);
 
