Mimic maven-javadoc-plugin for -source and --release
Add simple implementation of toolchains
This commit is contained in:
		
							parent
							
								
									1ccdc99bb8
								
							
						
					
					
						commit
						1734725d14
					
				
							
								
								
									
										174
									
								
								0002-Mimic-maven-javadoc-plugin-for--source-and---release.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										174
									
								
								0002-Mimic-maven-javadoc-plugin-for--source-and---release.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,174 @@ | ||||
| From c2f74691a71509c3671d3bc612be285a511c53f1 Mon Sep 17 00:00:00 2001 | ||||
| From: =?UTF-8?q?Fridrich=20=C5=A0trba?= <fridrich.strba@bluewin.ch> | ||||
| 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<Path> reactorClassPath = new ArrayList<>(); | ||||
|              List<Path> 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?= <fridrich.strba@bluewin.ch> | ||||
| 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" ) ) | ||||
							
								
								
									
										76
									
								
								0003-Simple-implementation-of-toolchains.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								0003-Simple-implementation-of-toolchains.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,76 @@ | ||||
| From acb236f878b020722512b1ce0ba20329500083c2 Mon Sep 17 00:00:00 2001 | ||||
| From: =?UTF-8?q?Fridrich=20=C5=A0trba?= <fridrich.strba@bluewin.ch> | ||||
| Date: Sat, 7 May 2022 18:13:02 +0200 | ||||
| Subject: [PATCH 1/2] Simple implementation of toolchains | ||||
|  https://github.com/fedora-java/xmvn/issues/142 | ||||
| 
 | ||||
| ---
 | ||||
|  .../fedoraproject/xmvn/mojo/JavadocMojo.java    | 17 ++++++++++++++++- | ||||
|  1 file changed, 16 insertions(+), 1 deletion(-) | ||||
| 
 | ||||
| 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..2b06e702 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
 | ||||
| @@ -45,6 +45,8 @@
 | ||||
|  import org.apache.maven.project.DependencyResolutionResult; | ||||
|  import org.apache.maven.project.MavenProject; | ||||
|  import org.apache.maven.project.ProjectDependenciesResolver; | ||||
| +import org.apache.maven.toolchain.Toolchain;
 | ||||
| +import org.apache.maven.toolchain.ToolchainManager;
 | ||||
|  import org.codehaus.plexus.logging.Logger; | ||||
|  import org.codehaus.plexus.util.StringUtils; | ||||
|  import org.eclipse.aether.util.filter.AndDependencyFilter; | ||||
| @@ -69,6 +71,9 @@
 | ||||
|      @Component | ||||
|      private Configurator confugurator; | ||||
|   | ||||
| +    @Component
 | ||||
| +    private ToolchainManager toolchainManager;
 | ||||
| +
 | ||||
|      @Parameter( defaultValue = "${session}", readonly = true ) | ||||
|      private MavenSession session; | ||||
|   | ||||
| @@ -161,8 +166,18 @@ private void populateClasspath( Collection<Path> reactorClassPath, Collection<Pa
 | ||||
|      public void execute() | ||||
|          throws MojoExecutionException, MojoFailureException | ||||
|      { | ||||
| +        String javadocTool = null;
 | ||||
| +        Toolchain tc = toolchainManager.getToolchainFromBuildContext( "jdk", session );
 | ||||
| +        if ( tc != null )
 | ||||
| +        {
 | ||||
| +            javadocTool = tc.findTool( "javadoc" );
 | ||||
| +        }
 | ||||
|          Path javadocExecutable; | ||||
| -        if ( System.getenv().containsKey( "JAVA_HOME" ) )
 | ||||
| +        if ( javadocTool != null && !javadocTool.isEmpty() )
 | ||||
| +        {
 | ||||
| +            javadocExecutable = Paths.get( javadocTool );
 | ||||
| +        }
 | ||||
| +        else if ( System.getenv().containsKey( "JAVA_HOME" ) )
 | ||||
|          { | ||||
|              javadocExecutable = Paths.get( System.getenv( "JAVA_HOME" ) ) // | ||||
|                                       .resolve( "bin" ) // | ||||
| 
 | ||||
| From 110da12905adb020630c540e2a8937a71a0b2dc6 Mon Sep 17 00:00:00 2001 | ||||
| From: =?UTF-8?q?Fridrich=20=C5=A0trba?= <fridrich.strba@bluewin.ch> | ||||
| Date: Sat, 7 May 2022 21:29:24 +0200 | ||||
| Subject: [PATCH 2/2] Fix typo | ||||
| 
 | ||||
| ---
 | ||||
|  .../src/main/java/org/fedoraproject/xmvn/mojo/JavadocMojo.java  | 2 +- | ||||
|  1 file changed, 1 insertion(+), 1 deletion(-) | ||||
| 
 | ||||
| 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 2b06e702..a83e8acf 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
 | ||||
| @@ -69,7 +69,7 @@
 | ||||
|      private ProjectDependenciesResolver resolver; | ||||
|   | ||||
|      @Component | ||||
| -    private Configurator confugurator;
 | ||||
| +    private Configurator configurator;
 | ||||
|   | ||||
|      @Component | ||||
|      private ToolchainManager toolchainManager; | ||||
							
								
								
									
										10
									
								
								xmvn.spec
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								xmvn.spec
									
									
									
									
									
								
							| @ -6,7 +6,7 @@ | ||||
| 
 | ||||
| Name:           xmvn | ||||
| Version:        4.0.0 | ||||
| Release:        10%{?dist} | ||||
| Release:        11%{?dist} | ||||
| Summary:        Local Extensions for Apache Maven | ||||
| License:        ASL 2.0 | ||||
| URL:            https://fedora-java.github.io/xmvn/ | ||||
| @ -16,6 +16,8 @@ ExclusiveArch:  %{java_arches} noarch | ||||
| Source0:        https://github.com/fedora-java/xmvn/releases/download/%{version}/xmvn-%{version}.tar.xz | ||||
| 
 | ||||
| Patch0:         0001-Port-to-Modello-2.0.0.patch | ||||
| Patch1:         0002-Mimic-maven-javadoc-plugin-for--source-and---release.patch | ||||
| Patch2:         0003-Simple-implementation-of-toolchains.patch | ||||
| 
 | ||||
| %if %{with bootstrap} | ||||
| BuildRequires:  javapackages-bootstrap | ||||
| @ -131,6 +133,8 @@ This package provides %{summary}. | ||||
| %prep | ||||
| %setup -q | ||||
| %patch0 -p1 | ||||
| %patch1 -p1 | ||||
| %patch2 -p1 | ||||
| 
 | ||||
| %mvn_package ::tar.gz: __noinstall | ||||
| %mvn_package ":{xmvn,xmvn-connector}" xmvn | ||||
| @ -267,6 +271,10 @@ end | ||||
| %license LICENSE NOTICE | ||||
| 
 | ||||
| %changelog | ||||
| * Mon Sep 05 2022 Marian Koncek <mkoncek@redhat.com> - 4.0.0-11 | ||||
| - Mimic maven-javadoc-plugin for -source and --release | ||||
| - Add simple implementation of toolchains | ||||
| 
 | ||||
| * Sat Jul 23 2022 Fedora Release Engineering <releng@fedoraproject.org> - 4.0.0-10 | ||||
| - Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user