This is an automated email from the ASF dual-hosted git repository.

slachiewicz pushed a commit to branch fix-depr
in repository https://gitbox.apache.org/repos/asf/maven-compiler-plugin.git

commit 3a66387b73a5aeb2638dc7c7b531e360d94e3b3d
Author: Sylwester Lachiewicz <[email protected]>
AuthorDate: Sun Jun 28 15:05:22 2026 +0200

    Refactor compiler mojo to use dependency injection and improve string 
handling
---
 pom.xml                                             |  5 +++++
 .../maven/plugin/compiler/AbstractCompilerMojo.java | 21 +++++++++++----------
 .../compiler/CompilationFailureException.java       |  3 +--
 .../apache/maven/plugin/compiler/CompilerMojo.java  | 12 ++++++------
 .../maven/plugin/compiler/TestCompilerMojo.java     | 15 ++++++++-------
 .../maven/plugin/compiler/CompilerMojoTest.java     |  4 ++--
 .../maven/plugin/compiler/TestCompilerMojoTest.java |  2 +-
 7 files changed, 34 insertions(+), 28 deletions(-)

diff --git a/pom.xml b/pom.xml
index b3415e3..eed5175 100644
--- a/pom.xml
+++ b/pom.xml
@@ -117,6 +117,11 @@ under the License.
       <artifactId>maven-shared-utils</artifactId>
       <version>3.4.2</version>
     </dependency>
+    <dependency>
+      <groupId>commons-io</groupId>
+      <artifactId>commons-io</artifactId>
+      <version>2.22.0</version>
+    </dependency>
     <dependency>
       <groupId>org.apache.maven.shared</groupId>
       <artifactId>maven-shared-incremental</artifactId>
diff --git 
a/src/main/java/org/apache/maven/plugin/compiler/AbstractCompilerMojo.java 
b/src/main/java/org/apache/maven/plugin/compiler/AbstractCompilerMojo.java
index 1aebf4c..edb9ad7 100644
--- a/src/main/java/org/apache/maven/plugin/compiler/AbstractCompilerMojo.java
+++ b/src/main/java/org/apache/maven/plugin/compiler/AbstractCompilerMojo.java
@@ -18,6 +18,8 @@
  */
 package org.apache.maven.plugin.compiler;
 
+import javax.inject.Inject;
+
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
@@ -54,7 +56,6 @@ import org.apache.maven.model.DependencyManagement;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecution;
 import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugins.annotations.Component;
 import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.shared.incremental.IncrementalBuildHelper;
@@ -103,7 +104,7 @@ import org.objectweb.asm.Opcodes;
  * @since 2.0
  */
 public abstract class AbstractCompilerMojo extends AbstractMojo {
-    protected static final String PS = System.getProperty("path.separator");
+    protected static final String PS = File.pathSeparator;
 
     private static final String INPUT_FILES_LST_FILENAME = "inputFiles.lst";
 
@@ -473,7 +474,7 @@ public abstract class AbstractCompilerMojo extends 
AbstractMojo {
     /**
      *
      */
-    @Component
+    @Inject
     private ToolchainManager toolchainManager;
 
     /**
@@ -527,7 +528,7 @@ public abstract class AbstractCompilerMojo extends 
AbstractMojo {
     /**
      * Plexus compiler manager.
      */
-    @Component
+    @Inject
     private CompilerManager compilerManager;
 
     /**
@@ -648,13 +649,13 @@ public abstract class AbstractCompilerMojo extends 
AbstractMojo {
     /**
      * Resolves the artifacts needed.
      */
-    @Component
+    @Inject
     private RepositorySystem repositorySystem;
 
     /**
      * Artifact handler manager.
      */
-    @Component
+    @Inject
     private ArtifactHandlerManager artifactHandlerManager;
 
     protected abstract SourceInclusionScanner getSourceInclusionScanner(int 
staleMillis);
@@ -722,13 +723,13 @@ public abstract class AbstractCompilerMojo extends 
AbstractMojo {
         if (isTestCompile()) {
             getLog().debug("Adding " + generatedSourcesPath
                     + " to the project test-compile source roots but NOT the 
actual test-compile source roots:\n  "
-                    + 
StringUtils.join(project.getTestCompileSourceRoots().iterator(), "\n  "));
+                    + String.join("\n  ", 
project.getTestCompileSourceRoots()));
 
             project.addTestCompileSourceRoot(generatedSourcesPath);
         } else {
             getLog().debug("Adding " + generatedSourcesPath
                     + " to the project compile source roots but NOT the actual 
compile source roots:\n  "
-                    + 
StringUtils.join(project.getCompileSourceRoots().iterator(), "\n  "));
+                    + String.join("\n  ", project.getCompileSourceRoots()));
 
             project.addCompileSourceRoot(generatedSourcesPath);
         }
@@ -787,7 +788,7 @@ public abstract class AbstractCompilerMojo extends 
AbstractMojo {
 
             writePlugin(mb);
 
-            getLog().warn(mb.toString());
+            getLog().warn(mb.build());
         }
 
         // 
----------------------------------------------------------------------
@@ -906,7 +907,7 @@ public abstract class AbstractCompilerMojo extends 
AbstractMojo {
                     getLog().warn("You are in a multi-thread build and 
compilerReuseStrategy is set to reuseSame."
                             + " This can cause issues in some environments 
(os/jdk)!"
                             + " Consider using reuseCreated strategy."
-                            + System.getProperty("line.separator")
+                            + System.lineSeparator()
                             + "If your env is fine with reuseSame, you can 
skip this warning with the "
                             + "configuration field skipMultiThreadWarning "
                             + "or 
-Dmaven.compiler.skipMultiThreadWarning=true");
diff --git 
a/src/main/java/org/apache/maven/plugin/compiler/CompilationFailureException.java
 
b/src/main/java/org/apache/maven/plugin/compiler/CompilationFailureException.java
index fa55b16..4239115 100644
--- 
a/src/main/java/org/apache/maven/plugin/compiler/CompilationFailureException.java
+++ 
b/src/main/java/org/apache/maven/plugin/compiler/CompilationFailureException.java
@@ -27,9 +27,8 @@ import org.codehaus.plexus.compiler.CompilerMessage;
  * @author <a href="mailto:[email protected]";>Jason van Zyl</a>
  * @since 2.0
  */
-@SuppressWarnings("serial")
 public class CompilationFailureException extends MojoFailureException {
-    private static final String LS = System.getProperty("line.separator");
+    private static final String LS = System.lineSeparator();
 
     /**
      * Wrap error messages from the compiler
diff --git a/src/main/java/org/apache/maven/plugin/compiler/CompilerMojo.java 
b/src/main/java/org/apache/maven/plugin/compiler/CompilerMojo.java
index 295ca39..0638d29 100644
--- a/src/main/java/org/apache/maven/plugin/compiler/CompilerMojo.java
+++ b/src/main/java/org/apache/maven/plugin/compiler/CompilerMojo.java
@@ -43,7 +43,7 @@ import org.apache.maven.project.MavenProject;
 import org.apache.maven.shared.utils.StringUtils;
 import org.apache.maven.shared.utils.logging.MessageUtils;
 import org.apache.maven.toolchain.Toolchain;
-import org.apache.maven.toolchain.java.DefaultJavaToolChain;
+import org.apache.maven.toolchain.java.JavaToolchainImpl;
 import org.codehaus.plexus.compiler.util.scan.SimpleSourceInclusionScanner;
 import org.codehaus.plexus.compiler.util.scan.SourceInclusionScanner;
 import org.codehaus.plexus.compiler.util.scan.StaleSourceScanner;
@@ -72,7 +72,7 @@ public class CompilerMojo extends AbstractCompilerMojo {
     /**
      * The source directories containing the sources to be compiled.
      */
-    @Parameter(defaultValue = "${project.compileSourceRoots}", readonly = 
false, required = true)
+    @Parameter(defaultValue = "${project.compileSourceRoots}", required = true)
     private List<String> compileSourceRoots;
 
     /**
@@ -90,8 +90,7 @@ public class CompilerMojo extends AbstractCompilerMojo {
     @Parameter(
             property = "maven.compiler.outputDirectory",
             defaultValue = "${project.build.outputDirectory}",
-            required = true,
-            readonly = false)
+            required = true)
     private File outputDirectory;
 
     /**
@@ -277,8 +276,8 @@ public class CompilerMojo extends AbstractCompilerMojo {
                         
.setMainModuleDescriptor(moduleDeclaration.get().toFile());
 
                 Toolchain toolchain = getToolchain();
-                if (toolchain instanceof DefaultJavaToolChain) {
-                    request.setJdkHome(new File(((DefaultJavaToolChain) 
toolchain).getJavaHome()));
+                if (toolchain instanceof JavaToolchainImpl) {
+                    request.setJdkHome(new File(((JavaToolchainImpl) 
toolchain).getJavaHome()));
                 }
 
                 resolvePathsResult = locationManager.resolvePaths(request);
@@ -437,6 +436,7 @@ public class CompilerMojo extends AbstractCompilerMojo {
         return compilerArgument;
     }
 
+    @SuppressWarnings("deprecation")
     @Override
     protected Map<String, String> getCompilerArguments() {
         return compilerArguments;
diff --git 
a/src/main/java/org/apache/maven/plugin/compiler/TestCompilerMojo.java 
b/src/main/java/org/apache/maven/plugin/compiler/TestCompilerMojo.java
index 236fd67..1e0b76e 100644
--- a/src/main/java/org/apache/maven/plugin/compiler/TestCompilerMojo.java
+++ b/src/main/java/org/apache/maven/plugin/compiler/TestCompilerMojo.java
@@ -39,7 +39,7 @@ import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.plugins.annotations.ResolutionScope;
 import org.apache.maven.shared.utils.StringUtils;
 import org.apache.maven.toolchain.Toolchain;
-import org.apache.maven.toolchain.java.DefaultJavaToolChain;
+import org.apache.maven.toolchain.java.JavaToolchainImpl;
 import org.codehaus.plexus.compiler.util.scan.SimpleSourceInclusionScanner;
 import org.codehaus.plexus.compiler.util.scan.SourceInclusionScanner;
 import org.codehaus.plexus.compiler.util.scan.StaleSourceScanner;
@@ -74,7 +74,7 @@ public class TestCompilerMojo extends AbstractCompilerMojo {
     /**
      * The source directories containing the test-source to be compiled.
      */
-    @Parameter(defaultValue = "${project.testCompileSourceRoots}", readonly = 
false, required = true)
+    @Parameter(defaultValue = "${project.testCompileSourceRoots}", required = 
true)
     private List<String> compileSourceRoots;
 
     /**
@@ -85,7 +85,7 @@ public class TestCompilerMojo extends AbstractCompilerMojo {
      *
      * @see CompilerMojo#outputDirectory
      */
-    @Parameter(defaultValue = "${project.build.testOutputDirectory}", required 
= true, readonly = false)
+    @Parameter(defaultValue = "${project.build.testOutputDirectory}", required 
= true)
     private File outputDirectory;
 
     /**
@@ -260,8 +260,8 @@ public class TestCompilerMojo extends AbstractCompilerMojo {
                         
.setMainModuleDescriptor(mainModuleDescriptorClassFile.getAbsolutePath());
 
                 Toolchain toolchain = getToolchain();
-                if (toolchain instanceof DefaultJavaToolChain) {
-                    request.setJdkHome(((DefaultJavaToolChain) 
toolchain).getJavaHome());
+                if (toolchain instanceof JavaToolchainImpl) {
+                    request.setJdkHome(((JavaToolchainImpl) 
toolchain).getJavaHome());
                 }
 
                 result = locationManager.resolvePaths(request);
@@ -298,8 +298,8 @@ public class TestCompilerMojo extends AbstractCompilerMojo {
                         
.setMainModuleDescriptor(testModuleDescriptorJavaFile.getAbsolutePath());
 
                 Toolchain toolchain = getToolchain();
-                if (toolchain instanceof DefaultJavaToolChain) {
-                    request.setJdkHome(((DefaultJavaToolChain) 
toolchain).getJavaHome());
+                if (toolchain instanceof JavaToolchainImpl) {
+                    request.setJdkHome(((JavaToolchainImpl) 
toolchain).getJavaHome());
                 }
 
                 result = locationManager.resolvePaths(request);
@@ -462,6 +462,7 @@ public class TestCompilerMojo extends AbstractCompilerMojo {
         return testCompilerArgument == null ? compilerArgument : 
testCompilerArgument;
     }
 
+    @SuppressWarnings("deprecation")
     protected Map<String, String> getCompilerArguments() {
         return testCompilerArguments == null ? compilerArguments : 
testCompilerArguments;
     }
diff --git 
a/src/test/java/org/apache/maven/plugin/compiler/CompilerMojoTest.java 
b/src/test/java/org/apache/maven/plugin/compiler/CompilerMojoTest.java
index a7ec138..260fd94 100644
--- a/src/test/java/org/apache/maven/plugin/compiler/CompilerMojoTest.java
+++ b/src/test/java/org/apache/maven/plugin/compiler/CompilerMojoTest.java
@@ -68,7 +68,7 @@ class CompilerMojoTest {
         setVariableValueToObject(compilerMojo, "targetOrReleaseSet", false);
         compilerMojo.execute();
 
-        Artifact projectArtifact = (Artifact) 
getVariableValueFromObject(compilerMojo, "projectArtifact");
+        Artifact projectArtifact = getVariableValueFromObject(compilerMojo, 
"projectArtifact");
         assertNotNull(
                 projectArtifact.getFile(),
                 "MCOMPILER-94: artifact file should only be null if there is 
nothing to compile");
@@ -108,7 +108,7 @@ class CompilerMojoTest {
 
         assertFalse(compilerMojo.getOutputDirectory().exists());
 
-        Artifact projectArtifact = (Artifact) 
getVariableValueFromObject(compilerMojo, "projectArtifact");
+        Artifact projectArtifact = getVariableValueFromObject(compilerMojo, 
"projectArtifact");
         assertNull(
                 projectArtifact.getFile(), "MCOMPILER-94: artifact file should 
be null if there is nothing to compile");
     }
diff --git 
a/src/test/java/org/apache/maven/plugin/compiler/TestCompilerMojoTest.java 
b/src/test/java/org/apache/maven/plugin/compiler/TestCompilerMojoTest.java
index 4f18b77..20bc7ea 100644
--- a/src/test/java/org/apache/maven/plugin/compiler/TestCompilerMojoTest.java
+++ b/src/test/java/org/apache/maven/plugin/compiler/TestCompilerMojoTest.java
@@ -170,7 +170,7 @@ class TestCompilerMojoTest {
     }
 
     private void setUpCompilerMojoTestEnv(TestCompilerMojo mojo) throws 
Exception {
-        File buildDir = (File) getVariableValueFromObject(mojo, 
"buildDirectory");
+        File buildDir = getVariableValueFromObject(mojo, "buildDirectory");
         File testClassesDir = new File(buildDir, "test-classes");
         setVariableValueToObject(mojo, "outputDirectory", testClassesDir);
 

Reply via email to