From 8d4f42e9fe76fe432cd3f1d8188cb883ac4e5c3d Mon Sep 17 00:00:00 2001 From: Martin Goldhahn Date: Sun, 28 Jan 2024 17:20:16 +0100 Subject: [PATCH 1/3] Use default target Path, add target path to project sources, make apiPath required --- .../io/openapiprocessor/maven/ProcessMojo.java | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/main/java/io/openapiprocessor/maven/ProcessMojo.java b/src/main/java/io/openapiprocessor/maven/ProcessMojo.java index faeaf3d..08c0a0a 100644 --- a/src/main/java/io/openapiprocessor/maven/ProcessMojo.java +++ b/src/main/java/io/openapiprocessor/maven/ProcessMojo.java @@ -10,6 +10,7 @@ import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; +import org.apache.maven.project.MavenProject; import java.io.File; import java.nio.file.Path; @@ -28,21 +29,18 @@ public class ProcessMojo extends AbstractMojo { @Parameter(required = true) private String id; - @Parameter(required = false) - private String processorName; - - @Parameter(required = false) + @Parameter(required = true) private File apiPath; @Parameter(required = false) private Options options; - @Parameter(readonly = true, required = true, defaultValue = "${project.basedir}") - private File baseDir; + @Parameter(readonly = true, required = true, defaultValue = "${project}") + private MavenProject project; @Override public void execute () throws MojoExecutionException { - String processor = String.format ("openapi-processor-%s", processorName == null ? id : processorName); + String processor = String.format ("openapi-processor-%s", id); try { getLog().info(String.format ("%10s - %s", "processor", processor)); @@ -53,7 +51,8 @@ public void execute () throws MojoExecutionException { String relativeSource = stripBaseDir (source.getAbsolutePath ()); getLog().info(String.format ("%10s - ${project.basedir}/%s", "apiPath", relativeSource)); - String targetDir = (String) properties.get (TARGET_DIR); + String targetDir = (String) properties.computeIfAbsent (TARGET_DIR, k -> project.getBuild().getDirectory() + "/generated-sources/" + id); + project.addCompileSourceRoot(targetDir); String relativeTargetDir = stripBaseDir (targetDir); getLog().info(String.format ("%10s - ${project.basedir}/%s", "targetDir", relativeTargetDir)); @@ -79,7 +78,7 @@ public void execute () throws MojoExecutionException { } private String stripBaseDir (String source) { - Path base = Paths.get (baseDir.getAbsolutePath ()); + Path base = Paths.get (project.getBasedir().getAbsolutePath ()); Path src = Paths.get (source); return base.relativize (src).toString (); } From 268702c3f908be9f0e443c3a0e7ab047a48048da Mon Sep 17 00:00:00 2001 From: Martin Goldhahn Date: Fri, 2 Feb 2024 20:13:04 +0100 Subject: [PATCH 2/3] use File.separator, add targetDir to compiler sources only if id!=json --- .../java/io/openapiprocessor/maven/ProcessMojo.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/main/java/io/openapiprocessor/maven/ProcessMojo.java b/src/main/java/io/openapiprocessor/maven/ProcessMojo.java index 08c0a0a..96bfef8 100644 --- a/src/main/java/io/openapiprocessor/maven/ProcessMojo.java +++ b/src/main/java/io/openapiprocessor/maven/ProcessMojo.java @@ -20,6 +20,7 @@ /** * run an openapi-processor. + * Except for id==json the generated sources are added to the compile source roots. */ @Mojo (name = "process", defaultPhase = LifecyclePhase.GENERATE_SOURCES) public class ProcessMojo extends AbstractMojo { @@ -49,12 +50,16 @@ public void execute () throws MojoExecutionException { File source = apiPath.getParentFile (); String relativeSource = stripBaseDir (source.getAbsolutePath ()); - getLog().info(String.format ("%10s - ${project.basedir}/%s", "apiPath", relativeSource)); + getLog().info(String.format ("%10s - ${project.basedir}%s%s", "apiPath", File.pathSeparator, relativeSource)); + + String targetDir = (String) properties.computeIfAbsent (TARGET_DIR, k -> project.getBuild().getDirectory() + File.pathSeparator + "generated-sources" + File.pathSeparator + id); + + if (!"json".equals(id)) { + project.addCompileSourceRoot(targetDir); + } - String targetDir = (String) properties.computeIfAbsent (TARGET_DIR, k -> project.getBuild().getDirectory() + "/generated-sources/" + id); - project.addCompileSourceRoot(targetDir); String relativeTargetDir = stripBaseDir (targetDir); - getLog().info(String.format ("%10s - ${project.basedir}/%s", "targetDir", relativeTargetDir)); + getLog().info(String.format ("%10s - ${project.basedir}%s%s", "targetDir", File.pathSeparator, relativeTargetDir)); File targetRoot = new File(targetDir); UpToDateCheck upToDateCheck = new UpToDateCheck (); From 6222bb241a4f88d485375683cc97d35d0a9487fc Mon Sep 17 00:00:00 2001 From: Martin Hauner Date: Sun, 4 Feb 2024 10:57:18 +0100 Subject: [PATCH 3/3] allow to disable automatic compile source root --- src/main/java/io/openapiprocessor/maven/ProcessMojo.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/openapiprocessor/maven/ProcessMojo.java b/src/main/java/io/openapiprocessor/maven/ProcessMojo.java index 96bfef8..00c2cfa 100644 --- a/src/main/java/io/openapiprocessor/maven/ProcessMojo.java +++ b/src/main/java/io/openapiprocessor/maven/ProcessMojo.java @@ -20,7 +20,6 @@ /** * run an openapi-processor. - * Except for id==json the generated sources are added to the compile source roots. */ @Mojo (name = "process", defaultPhase = LifecyclePhase.GENERATE_SOURCES) public class ProcessMojo extends AbstractMojo { @@ -36,6 +35,9 @@ public class ProcessMojo extends AbstractMojo { @Parameter(required = false) private Options options; + @Parameter(required = false, defaultValue = "true") + private boolean addSourceRoot; + @Parameter(readonly = true, required = true, defaultValue = "${project}") private MavenProject project; @@ -54,7 +56,7 @@ public void execute () throws MojoExecutionException { String targetDir = (String) properties.computeIfAbsent (TARGET_DIR, k -> project.getBuild().getDirectory() + File.pathSeparator + "generated-sources" + File.pathSeparator + id); - if (!"json".equals(id)) { + if (addSourceRoot) { project.addCompileSourceRoot(targetDir); }