diff --git a/plexus-compilers/plexus-compiler-eclipse/pom.xml b/plexus-compilers/plexus-compiler-eclipse/pom.xml
index ec5f9107..3294cf81 100644
--- a/plexus-compilers/plexus-compiler-eclipse/pom.xml
+++ b/plexus-compilers/plexus-compiler-eclipse/pom.xml
@@ -21,7 +21,7 @@
org.eclipse.jdt
ecj
- 3.15.1
+ 3.19.0
diff --git a/plexus-compilers/plexus-compiler-eclipse/src/main/java/org/codehaus/plexus/compiler/eclipse/EclipseJavaCompiler.java b/plexus-compilers/plexus-compiler-eclipse/src/main/java/org/codehaus/plexus/compiler/eclipse/EclipseJavaCompiler.java
index 3f84de5f..4252ad92 100644
--- a/plexus-compilers/plexus-compiler-eclipse/src/main/java/org/codehaus/plexus/compiler/eclipse/EclipseJavaCompiler.java
+++ b/plexus-compilers/plexus-compiler-eclipse/src/main/java/org/codehaus/plexus/compiler/eclipse/EclipseJavaCompiler.java
@@ -123,6 +123,11 @@ public CompilerResult performCompile(CompilerConfiguration config )
{
args.add("-parameters");
}
+
+ if(config.isFailOnWarning())
+ {
+ args.add("-failOnWarning");
+ }
// Set Eclipse-specific options
// compiler-specific extra options override anything else in the config object...
diff --git a/plexus-compilers/plexus-compiler-eclipse/src/test/java/org/codehaus/plexus/compiler/eclipse/EclipseCompilerFailOnWarningsTest.java b/plexus-compilers/plexus-compiler-eclipse/src/test/java/org/codehaus/plexus/compiler/eclipse/EclipseCompilerFailOnWarningsTest.java
new file mode 100644
index 00000000..52485e69
--- /dev/null
+++ b/plexus-compilers/plexus-compiler-eclipse/src/test/java/org/codehaus/plexus/compiler/eclipse/EclipseCompilerFailOnWarningsTest.java
@@ -0,0 +1,41 @@
+package org.codehaus.plexus.compiler.eclipse;
+
+import org.codehaus.plexus.compiler.AbstractCompilerTest;
+import org.codehaus.plexus.compiler.CompilerConfiguration;
+
+import java.util.Arrays;
+import java.util.Collection;
+
+public class EclipseCompilerFailOnWarningsTest extends AbstractCompilerTest
+{
+
+ protected void configureCompilerConfig( CompilerConfiguration compilerConfig )
+ {
+ compilerConfig.setFailOnWarning(true);
+ }
+
+ protected String getRoleHint()
+ {
+ return "eclipse";
+ }
+
+ protected int expectedErrors()
+ {
+ return 6;
+ }
+
+ protected int expectedWarnings()
+ {
+ return 1;
+ }
+
+ protected Collection expectedOutputFiles()
+ {
+ return Arrays.asList( new String[] {
+ "org/codehaus/foo/Deprecation.class",
+ "org/codehaus/foo/ExternalDeps.class",
+ "org/codehaus/foo/Person.class",
+ "org/codehaus/foo/ReservedWord.class"
+ });
+ }
+}