diff --git a/plexus-compiler-api/src/main/java/org/codehaus/plexus/compiler/CompilerConfiguration.java b/plexus-compiler-api/src/main/java/org/codehaus/plexus/compiler/CompilerConfiguration.java index 15863808..a179936f 100644 --- a/plexus-compiler-api/src/main/java/org/codehaus/plexus/compiler/CompilerConfiguration.java +++ b/plexus-compiler-api/src/main/java/org/codehaus/plexus/compiler/CompilerConfiguration.java @@ -87,6 +87,11 @@ public class CompilerConfiguration private String sourceEncoding; + /** + * value of --module-version parameter in java 9+ + */ + private String moduleVersion; + private Collection> customCompilerArguments = new ArrayList>(); private boolean fork; @@ -404,6 +409,16 @@ public void setSourceEncoding( String sourceEncoding ) this.sourceEncoding = sourceEncoding; } + public String getModuleVersion() + { + return moduleVersion; + } + + public void setModuleVersion( String moduleVersion ) + { + this.moduleVersion = moduleVersion; + } + public void addCompilerCustomArgument( String customArgument, String value ) { customCompilerArguments.add( new AbstractMap.SimpleImmutableEntry( customArgument, value ) ); diff --git a/plexus-compilers/plexus-compiler-javac/src/main/java/org/codehaus/plexus/compiler/javac/JavacCompiler.java b/plexus-compilers/plexus-compiler-javac/src/main/java/org/codehaus/plexus/compiler/javac/JavacCompiler.java index dcc1659e..fd3fe684 100644 --- a/plexus-compilers/plexus-compiler-javac/src/main/java/org/codehaus/plexus/compiler/javac/JavacCompiler.java +++ b/plexus-compilers/plexus-compiler-javac/src/main/java/org/codehaus/plexus/compiler/javac/JavacCompiler.java @@ -372,6 +372,12 @@ else if ( !suppressSource( config ) ) args.add( config.getSourceEncoding() ); } + if ( !StringUtils.isEmpty( config.getModuleVersion() ) ) + { + args.add( "--module-version" ); + args.add( config.getModuleVersion() ); + } + for ( Map.Entry entry : config.getCustomCompilerArgumentsEntries() ) { String key = entry.getKey(); diff --git a/plexus-compilers/plexus-compiler-javac/src/test/java/org/codehaus/plexus/compiler/javac/AbstractJavacCompilerTest.java b/plexus-compilers/plexus-compiler-javac/src/test/java/org/codehaus/plexus/compiler/javac/AbstractJavacCompilerTest.java index d6c4ad54..f64ddab1 100644 --- a/plexus-compilers/plexus-compiler-javac/src/test/java/org/codehaus/plexus/compiler/javac/AbstractJavacCompilerTest.java +++ b/plexus-compilers/plexus-compiler-javac/src/test/java/org/codehaus/plexus/compiler/javac/AbstractJavacCompilerTest.java @@ -243,6 +243,31 @@ public void testModulePath() throws Exception internalTest( compilerConfiguration, expectedArguments ); } + public void testModuleVersion() + { + List expectedArguments = new ArrayList(); + + CompilerConfiguration compilerConfiguration = new CompilerConfiguration(); + + // outputLocation + compilerConfiguration.setOutputLocation( "/output" ); + expectedArguments.add( "-d" ); + expectedArguments.add( new File( "/output" ).getAbsolutePath() ); + + // default source + target + expectedArguments.add( "-target" ); + expectedArguments.add( "1.1" ); + expectedArguments.add( "-source" ); + expectedArguments.add( "1.3" ); + + // module version + compilerConfiguration.setModuleVersion( "1.2.0-SNAPSHOT" ); + expectedArguments.add( "--module-version" ); + expectedArguments.add( "1.2.0-SNAPSHOT" ); + + internalTest( compilerConfiguration, expectedArguments ); + } + public void testReleaseVersion() { List expectedArguments = new ArrayList();