diff --git a/lang/java/maven-plugin/src/main/java/org/apache/avro/mojo/AbstractAvroMojo.java b/lang/java/maven-plugin/src/main/java/org/apache/avro/mojo/AbstractAvroMojo.java
index 968d8d0bdf0..5120aa62170 100644
--- a/lang/java/maven-plugin/src/main/java/org/apache/avro/mojo/AbstractAvroMojo.java
+++ b/lang/java/maven-plugin/src/main/java/org/apache/avro/mojo/AbstractAvroMojo.java
@@ -211,6 +211,7 @@ public void execute() throws MojoExecutionException {
}
if (hasImports) {
+ checkImportPaths();
for (String importedFile : imports) {
File file = new File(importedFile);
if (file.isDirectory()) {
@@ -241,6 +242,15 @@ public void execute() throws MojoExecutionException {
}
}
+ private void checkImportPaths() throws MojoExecutionException {
+ for (String importedFile : imports) {
+ File file = new File(importedFile);
+ if (!file.exists()) {
+ throw new MojoExecutionException("Path " + file.getAbsolutePath() + " does not exist");
+ }
+ }
+ }
+
private String[] getIncludedFiles(String absPath, String[] excludes, String[] includes) {
final FileSetManager fileSetManager = new FileSetManager();
final FileSet fs = new FileSet();
diff --git a/lang/java/maven-plugin/src/test/java/org/apache/avro/mojo/TestSchemaMojo.java b/lang/java/maven-plugin/src/test/java/org/apache/avro/mojo/TestSchemaMojo.java
index f6bdc7fd06f..682bf6d8f9e 100644
--- a/lang/java/maven-plugin/src/test/java/org/apache/avro/mojo/TestSchemaMojo.java
+++ b/lang/java/maven-plugin/src/test/java/org/apache/avro/mojo/TestSchemaMojo.java
@@ -17,6 +17,7 @@
*/
package org.apache.avro.mojo;
+import org.apache.maven.plugin.MojoExecutionException;
import org.codehaus.plexus.util.FileUtils;
import org.junit.Test;
@@ -33,6 +34,10 @@ public class TestSchemaMojo extends AbstractAvroMojoTest {
private File testPom = new File(getBasedir(), "src/test/resources/unit/schema/pom.xml");
private File injectingVelocityToolsTestPom = new File(getBasedir(),
"src/test/resources/unit/schema/pom-injecting-velocity-tools.xml");
+ private File testNonexistentFilePom = new File(getBasedir(),
+ "src/test/resources/unit/schema/pom-nonexistent-file.xml");
+ private File testNonexistentSecondFilePom = new File(getBasedir(),
+ "src/test/resources/unit/schema/pom-nonexistent-second-file.xml");
@Test
public void testSchemaMojo() throws Exception {
@@ -67,4 +72,24 @@ public void testSetCompilerVelocityAdditionalTools() throws Exception {
final String schemaUserContent = FileUtils.fileRead(new File(outputDir, "SchemaUser.java"));
assertTrue("Got " + schemaUserContent + " instead", schemaUserContent.contains("It works!"));
}
+
+ @Test
+ public void testThrowsErrorForNonexistentFile() throws Exception {
+ try {
+ final SchemaMojo mojo = (SchemaMojo) lookupMojo("schema", testNonexistentFilePom);
+ mojo.execute();
+ fail("MojoExecutionException not thrown!");
+ } catch (MojoExecutionException ignored) {
+ }
+ }
+
+ @Test
+ public void testThrowsErrorForNonexistentSecondFile() throws Exception {
+ try {
+ final SchemaMojo mojo = (SchemaMojo) lookupMojo("schema", testNonexistentSecondFilePom);
+ mojo.execute();
+ fail("MojoExecutionException not thrown!");
+ } catch (MojoExecutionException ignored) {
+ }
+ }
}
diff --git a/lang/java/maven-plugin/src/test/resources/unit/schema/pom-nonexistent-file.xml b/lang/java/maven-plugin/src/test/resources/unit/schema/pom-nonexistent-file.xml
new file mode 100644
index 00000000000..49965752d0d
--- /dev/null
+++ b/lang/java/maven-plugin/src/test/resources/unit/schema/pom-nonexistent-file.xml
@@ -0,0 +1,69 @@
+
+
+
+ 4.0.0
+
+
+ avro-parent
+ org.apache.avro
+ 1.12.0-SNAPSHOT
+ ../../../../../../../../../pom.xml
+
+
+ avro-maven-plugin-test
+ jar
+
+ testproject
+
+
+
+
+ avro-maven-plugin
+
+
+ schema
+
+ schema
+
+
+
+
+ ${basedir}/src/test/avro
+ ${basedir}/target/test-harness/schema
+
+ ${basedir}/src/test/avro/nonexistent-dir
+
+
+
+
+
+
+
+
+ org.apache.avro
+ avro
+ ${parent.version}
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ ${jackson.version}
+
+
+
diff --git a/lang/java/maven-plugin/src/test/resources/unit/schema/pom-nonexistent-second-file.xml b/lang/java/maven-plugin/src/test/resources/unit/schema/pom-nonexistent-second-file.xml
new file mode 100644
index 00000000000..f5b7134cd55
--- /dev/null
+++ b/lang/java/maven-plugin/src/test/resources/unit/schema/pom-nonexistent-second-file.xml
@@ -0,0 +1,70 @@
+
+
+
+ 4.0.0
+
+
+ avro-parent
+ org.apache.avro
+ 1.12.0-SNAPSHOT
+ ../../../../../../../../../pom.xml
+
+
+ avro-maven-plugin-test
+ jar
+
+ testproject
+
+
+
+
+ avro-maven-plugin
+
+
+ schema
+
+ schema
+
+
+
+
+ ${basedir}/src/test/avro
+ ${basedir}/target/test-harness/schema
+
+ ${basedir}/src/test/avro/imports
+ ${basedir}/src/test/avro/nonexistent-dir
+
+
+
+
+
+
+
+
+ org.apache.avro
+ avro
+ ${parent.version}
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ ${jackson.version}
+
+
+