From c2f74691a71509c3671d3bc612be285a511c53f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fridrich=20=C5=A0trba?= Date: Wed, 4 May 2022 13:26:00 +0200 Subject: [PATCH 1/2] Mimic maven-javadoc-plugin for -source and --release Consider the maven.compiler.source and maven.compiler.release properties. Skip module-info.java if source level is specified and it is < 9 or if non-modular Java is used --- .../fedoraproject/xmvn/mojo/JavadocMojo.java | 38 +++++++++++++++++-- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/xmvn-mojo/src/main/java/org/fedoraproject/xmvn/mojo/JavadocMojo.java b/xmvn-mojo/src/main/java/org/fedoraproject/xmvn/mojo/JavadocMojo.java index b2cd41fd..68d097f5 100644 --- a/xmvn-mojo/src/main/java/org/fedoraproject/xmvn/mojo/JavadocMojo.java +++ b/xmvn-mojo/src/main/java/org/fedoraproject/xmvn/mojo/JavadocMojo.java @@ -84,9 +84,12 @@ @Parameter( defaultValue = "${project.build.directory}", required = true ) private File buildDirectory; - @Parameter( property = "source" ) + @Parameter( property = "source", defaultValue = "${maven.compiler.source}" ) private String source; + @Parameter( defaultValue = "${maven.compiler.release}" ) + private String release; + private static String quoted( Object obj ) { String arg = obj.toString(); @@ -222,8 +225,9 @@ public void execute() List reactorClassPath = new ArrayList<>(); List fullClassPath = new ArrayList<>(); populateClasspath( reactorClassPath, fullClassPath ); + boolean isModular = !findFiles( reactorClassPath, "module-info\\.class" ).isEmpty(); - if ( findFiles( reactorClassPath, "module-info\\.class" ).isEmpty() ) + if ( !isModular ) { opts.add( "-classpath" ); } @@ -244,15 +248,41 @@ public void execute() opts.add( quoted( docencoding ) ); opts.add( "-doctitle" ); opts.add( quoted( "Javadoc for package XXX" ) ); - if ( source != null ) + + String sourceLevel = null; + if ( release != null && isModular ) + { + opts.add( "--release" ); + opts.add( quoted( release ) ); + sourceLevel = release; + + } + else if ( source != null ) { opts.add( "-source" ); opts.add( quoted( source ) ); + sourceLevel = source; + } + + boolean skipModuleInfo = !isModular; + if ( sourceLevel != null && !skipModuleInfo ) + { + try + { + float f = Float.parseFloat( sourceLevel ); + if ( f < 9 ) + skipModuleInfo = true; + } + catch ( Exception e ) + { + // pass, we assume that we use modular Java + } } for ( Path file : sourceFiles ) { - opts.add( quoted( file ) ); + if ( !skipModuleInfo || !file.endsWith( "module-info.java" ) ) + opts.add( quoted( file ) ); } Files.write( outputDir.resolve( "args" ), opts, StandardOpenOption.CREATE ); From 34ee4dad896f9f82131a090293c3a9ccaa77b729 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fridrich=20=C5=A0trba?= Date: Sun, 8 May 2022 15:19:45 +0200 Subject: [PATCH 2/2] --module-path not allowed with release=8 --- .../fedoraproject/xmvn/mojo/JavadocMojo.java | 49 +++++++++---------- 1 file changed, 24 insertions(+), 25 deletions(-) diff --git a/xmvn-mojo/src/main/java/org/fedoraproject/xmvn/mojo/JavadocMojo.java b/xmvn-mojo/src/main/java/org/fedoraproject/xmvn/mojo/JavadocMojo.java index 68d097f5..480b0f0a 100644 --- a/xmvn-mojo/src/main/java/org/fedoraproject/xmvn/mojo/JavadocMojo.java +++ b/xmvn-mojo/src/main/java/org/fedoraproject/xmvn/mojo/JavadocMojo.java @@ -227,35 +227,12 @@ public void execute() populateClasspath( reactorClassPath, fullClassPath ); boolean isModular = !findFiles( reactorClassPath, "module-info\\.class" ).isEmpty(); - if ( !isModular ) - { - opts.add( "-classpath" ); - } - else - { - opts.add( "--module-path" ); - } - opts.add( quoted( StringUtils.join( fullClassPath.iterator(), ":" ) ) ); - opts.add( "-encoding" ); - opts.add( quoted( encoding ) ); - opts.add( "-sourcepath" ); - opts.add( quoted( StringUtils.join( sourcePaths.iterator(), ":" ) ) ); - opts.add( "-charset" ); - opts.add( quoted( docencoding ) ); - opts.add( "-d" ); - opts.add( quoted( outputDir ) ); - opts.add( "-docencoding" ); - opts.add( quoted( docencoding ) ); - opts.add( "-doctitle" ); - opts.add( quoted( "Javadoc for package XXX" ) ); - String sourceLevel = null; - if ( release != null && isModular ) + if ( release != null ) { opts.add( "--release" ); opts.add( quoted( release ) ); sourceLevel = release; - } else if ( source != null ) { @@ -265,7 +242,7 @@ else if ( source != null ) } boolean skipModuleInfo = !isModular; - if ( sourceLevel != null && !skipModuleInfo ) + if ( sourceLevel != null ) { try { @@ -279,6 +256,28 @@ else if ( source != null ) } } + if ( !isModular || skipModuleInfo ) + { + opts.add( "-classpath" ); + } + else + { + opts.add( "--module-path" ); + } + opts.add( quoted( StringUtils.join( fullClassPath.iterator(), ":" ) ) ); + opts.add( "-encoding" ); + opts.add( quoted( encoding ) ); + opts.add( "-sourcepath" ); + opts.add( quoted( StringUtils.join( sourcePaths.iterator(), ":" ) ) ); + opts.add( "-charset" ); + opts.add( quoted( docencoding ) ); + opts.add( "-d" ); + opts.add( quoted( outputDir ) ); + opts.add( "-docencoding" ); + opts.add( quoted( docencoding ) ); + opts.add( "-doctitle" ); + opts.add( quoted( "Javadoc for package XXX" ) ); + for ( Path file : sourceFiles ) { if ( !skipModuleInfo || !file.endsWith( "module-info.java" ) )