diff --git a/src/it/junit/issue_147-featuresDirEmpty/pom.xml b/src/it/junit/issue_147-featuresDirEmpty/pom.xml
new file mode 100644
index 000000000..cc35e5a4e
--- /dev/null
+++ b/src/it/junit/issue_147-featuresDirEmpty/pom.xml
@@ -0,0 +1,58 @@
+
+
+ 4.0.0
+
+ com.github.temyers.it
+ issue_147
+ 1.0-SNAPSHOT
+
+ An IT verifying the behavior when feature dir doesn't exist or is empty
+
+
+ UTF-8
+ 1.2.2
+
+
+
+
+ info.cukes
+ cucumber-junit
+ ${cucumber.version}
+
+
+ info.cukes
+ cucumber-java
+ ${cucumber.version}
+
+
+
+
+
+
+ @project.groupId@
+ @project.artifactId@
+ @project.version@
+
+
+ generateRunners
+ generate-test-sources
+
+ generateRunners
+
+
+
+ foo
+ bar
+
+
+
+
+
+ src/test/resources/features/emptyDir
+
+
+
+
+
diff --git a/src/it/junit/issue_147-featuresDirEmpty/src/test/resources/features/feature1.feature b/src/it/junit/issue_147-featuresDirEmpty/src/test/resources/features/feature1.feature
new file mode 100644
index 000000000..ffd271d54
--- /dev/null
+++ b/src/it/junit/issue_147-featuresDirEmpty/src/test/resources/features/feature1.feature
@@ -0,0 +1,6 @@
+Scenario: Features directory is empty
+ Given the features directory is empty
+ When I perform a build
+ Then a warning log message should be created
+ But the build should succeed
+ And no runners should be generated
\ No newline at end of file
diff --git a/src/it/junit/issue_147-featuresDirEmpty/verify.groovy b/src/it/junit/issue_147-featuresDirEmpty/verify.groovy
new file mode 100644
index 000000000..a479896ac
--- /dev/null
+++ b/src/it/junit/issue_147-featuresDirEmpty/verify.groovy
@@ -0,0 +1,10 @@
+def logFile = new File(basedir, 'build.log')
+content = logFile.text
+
+assert content.contains('Features directory is empty. No runners will be generated')
+
+
+def directory = new File(basedir, "target/generated-test-sources/cucumber")
+
+assert directory.isDirectory()
+assert directory.listFiles().length==0
\ No newline at end of file
diff --git a/src/it/junit/no-features-dir/invoker.properties b/src/it/junit/no-features-dir/invoker.properties
deleted file mode 100644
index 324b5fb99..000000000
--- a/src/it/junit/no-features-dir/invoker.properties
+++ /dev/null
@@ -1 +0,0 @@
-invoker.buildResult=failure
\ No newline at end of file
diff --git a/src/main/java/com/github/timm/cucumber/generate/GenerateRunnersMojo.java b/src/main/java/com/github/timm/cucumber/generate/GenerateRunnersMojo.java
index cf637418a..723391564 100644
--- a/src/main/java/com/github/timm/cucumber/generate/GenerateRunnersMojo.java
+++ b/src/main/java/com/github/timm/cucumber/generate/GenerateRunnersMojo.java
@@ -190,13 +190,20 @@ public class GenerateRunnersMojo extends AbstractMojo implements FileGeneratorCo
public void execute() throws MojoExecutionException {
if (!featuresDirectory.exists()) {
- throw new MojoExecutionException("Features directory does not exist");
+ getLog().warn("Features directory does not exist");
+ return;
}
+ createOutputDirIfRequired();
+
final Collection featureFiles = listFiles(featuresDirectory, new String[] {"feature"}, true);
- final List sortedFeatureFiles = new NameFileComparator().sort(new ArrayList(featureFiles));
- createOutputDirIfRequired();
+ if (featureFiles.isEmpty()) {
+ getLog().warn("Features directory is empty. No runners will be generated.");
+ return;
+ }
+
+ final List sortedFeatureFiles = new NameFileComparator().sort(new ArrayList(featureFiles));
File packageDirectory = packageName == null
? outputDirectory