diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 9a4f956..bd39795 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -13,7 +13,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
- java: [ '8', '11', '17' ]
+ java: [ '14', '17' ]
steps:
- uses: actions/checkout@v3
- name: Set up JDK
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index e48daae..59b825c 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -21,7 +21,7 @@ jobs:
uses: actions/setup-java@v3
with:
distribution: 'zulu'
- java-version: 8
+ java-version: 14
server-id: ossrh
server-username: SONATYPE_USERNAME
server-password: SONATYPE_PASSWORD
diff --git a/.github/workflows/tag-release.yml b/.github/workflows/tag-release.yml
index 9860e79..2240858 100644
--- a/.github/workflows/tag-release.yml
+++ b/.github/workflows/tag-release.yml
@@ -9,9 +9,6 @@ on:
jobs:
build:
runs-on: ubuntu-latest
- strategy:
- matrix:
- java: [ '8' ]
steps:
- name: Publish release notes
uses: release-drafter/release-drafter@v5
diff --git a/README.md b/README.md
index d434419..1f779e1 100644
--- a/README.md
+++ b/README.md
@@ -17,6 +17,19 @@ Add to your `pom.xml`:
dev.guardrail
guardrail-maven-plugin
Please use the latest available release!
+
+
+
+ dev.guardrail
+ guardrail-java-dropwizard_2.13
+ ...
+
+
+ dev.guardrail
+ guardrail-java-async-http_2.13
+ ...
+
+
diff --git a/pom.xml b/pom.xml
index 452de44..9b53913 100644
--- a/pom.xml
+++ b/pom.xml
@@ -57,8 +57,8 @@
3.9.4
3.5.1
UTF-8
- 2.12
- 2.12.18
+ 2.13
+ 2.13.12
@@ -176,53 +176,10 @@
plexus-utils
${plexus-utils.version}
-
-
dev.guardrail
- guardrail-core_2.12
- 0.75.3
-
-
- dev.guardrail
- guardrail-java-async-http_2.12
- 0.72.0
-
-
- dev.guardrail
- guardrail-java-support_2.12
- 0.73.1
-
-
- dev.guardrail
- guardrail-java-dropwizard_2.12
- 0.72.0
-
-
- dev.guardrail
- guardrail-java-spring-mvc_2.12
- 0.71.2
-
-
- dev.guardrail
- guardrail-scala-support_2.12
- 0.75.3
-
-
- dev.guardrail
- guardrail-scala-akka-http_2.12
- 0.76.0
-
-
- dev.guardrail
- guardrail-scala-dropwizard_2.12
- 0.72.0
-
-
- dev.guardrail
- guardrail-scala-http4s_2.12
- 0.76.1
+ guardrail-core_${scala.compat.version}
+ 1.0.0-M1
@@ -231,21 +188,19 @@
net.alchim31.maven
scala-maven-plugin
- 4.6.3
+ 4.8.1
incremental
-unchecked
-deprecation
-feature
- -Xexperimental
- UTF-8
- org.spire-math
- kind-projector_${scala.compat.version}
- 0.9.4
+ org.typelevel
+ kind-projector_${scala.version}
+ 0.13.2
@@ -271,8 +226,8 @@
maven-compiler-plugin
3.10.1
-
- 1.8
+
+ 14
@@ -331,8 +286,8 @@
true
${project.version}
- 1.8
- 1.8
+ 14
+ 14
0.0.1
diff --git a/src/it/codegen-java-vavr/pom.xml b/src/it/codegen-java-vavr/pom.xml
index 80b7714..80ac539 100644
--- a/src/it/codegen-java-vavr/pom.xml
+++ b/src/it/codegen-java-vavr/pom.xml
@@ -121,8 +121,8 @@
maven-compiler-plugin
3.8.1
-
- 1.8
+
+ 14
@@ -143,6 +143,18 @@
dev.guardrail
guardrail-maven-plugin
${guardrail.plugin.version}
+
+
+ dev.guardrail
+ guardrail-java-dropwizard_2.13
+ 1.0.0-M1
+
+
+ dev.guardrail
+ guardrail-java-async-http_2.13
+ 1.0.0-M1
+
+
generate-petstore
diff --git a/src/it/codegen-java/pom.xml b/src/it/codegen-java/pom.xml
index c138ff0..8417c5b 100644
--- a/src/it/codegen-java/pom.xml
+++ b/src/it/codegen-java/pom.xml
@@ -96,8 +96,8 @@
maven-compiler-plugin
3.8.1
-
- 1.8
+
+ 14
@@ -118,6 +118,18 @@
dev.guardrail
guardrail-maven-plugin
${guardrail.plugin.version}
+
+
+ dev.guardrail
+ guardrail-java-dropwizard_2.13
+ 1.0.0-M1
+
+
+ dev.guardrail
+ guardrail-java-async-http_2.13
+ 1.0.0-M1
+
+
generate-petstore-client
diff --git a/src/it/codegen-scala/pom.xml b/src/it/codegen-scala/pom.xml
index d69ece2..e1713e0 100644
--- a/src/it/codegen-scala/pom.xml
+++ b/src/it/codegen-scala/pom.xml
@@ -108,14 +108,14 @@
maven-compiler-plugin
3.8.1
-
- 1.8
+
+ 14
net.alchim31.maven
scala-maven-plugin
- 4.4.0
+ 4.8.1
@@ -143,6 +143,13 @@
dev.guardrail
guardrail-maven-plugin
${guardrail.plugin.version}
+
+
+ dev.guardrail
+ guardrail-scala-akka-http_2.13
+ 1.0.0-M1
+
+
generate-petstore-client
diff --git a/src/it/codegen-spring-mvc-java/pom.xml b/src/it/codegen-spring-mvc-java/pom.xml
index efd7bbb..3ddf880 100644
--- a/src/it/codegen-spring-mvc-java/pom.xml
+++ b/src/it/codegen-spring-mvc-java/pom.xml
@@ -143,8 +143,8 @@
maven-compiler-plugin
3.8.1
-
- 1.8
+
+ 14
@@ -165,6 +165,18 @@
dev.guardrail
guardrail-maven-plugin
${guardrail.plugin.version}
+
+
+ dev.guardrail
+ guardrail-java-spring-mvc_2.13
+ 1.0.0-M1
+
+
+ dev.guardrail
+ guardrail-java-async-http_2.13
+ 1.0.0-M1
+
+
generate-petstore-spring-mvc-server
diff --git a/src/main/scala/dev/guardrail/AbstractGuardrailCodegenMojo.scala b/src/main/scala/dev/guardrail/AbstractGuardrailCodegenMojo.scala
index 46dfb6d..1be9bd4 100644
--- a/src/main/scala/dev/guardrail/AbstractGuardrailCodegenMojo.scala
+++ b/src/main/scala/dev/guardrail/AbstractGuardrailCodegenMojo.scala
@@ -12,7 +12,7 @@ import org.apache.maven.plugins.annotations.{Component, Parameter}
import org.apache.maven.project.{DefaultProjectBuildingRequest, MavenProject}
import org.apache.maven.shared.transfer.artifact.DefaultArtifactCoordinate
import org.apache.maven.shared.transfer.artifact.resolve.{ArtifactResolver, ArtifactResolverException}
-import scala.collection.JavaConverters._
+import scala.jdk.CollectionConverters._
import scala.io.AnsiColor
import scala.language.higherKinds
import scala.util.control.NonFatal
@@ -28,7 +28,10 @@ sealed abstract class Phase(val root: String)
object Main extends Phase("main")
object Test extends Phase("test")
-abstract class AbstractGuardrailCodegenMojo(phase: Phase) extends AbstractMojo with GuardrailRunner {
+abstract class AbstractGuardrailCodegenMojo(phase: Phase) extends AbstractMojo {
+ def guardrailModulePrefix: String
+
+ val runner = new GuardrailRunner() {}
@Parameter(defaultValue = "${project.build.directory}/generated-sources/guardrail-sources", property = "outputPath", required = true)
def outputPath: File
@@ -80,6 +83,8 @@ abstract class AbstractGuardrailCodegenMojo(phase: Phase) extends AbstractMojo w
@Parameter(property = "customExtraction")
var customExtraction: Boolean = _
+ val scalaCompatVersion: String = "2.13"
+
override def execute(): Unit = {
if (!outputPath.exists()) {
outputPath.mkdirs()
@@ -124,25 +129,25 @@ abstract class AbstractGuardrailCodegenMojo(phase: Phase) extends AbstractMojo w
case x => throw new MojoExecutionException(s"Unsupported codegen type: ${x}")
}
- val arg = Args.empty.copy(
- kind=_kind,
- specPath=Some(_specPath.getCanonicalPath),
- packageName=Option(packageName).map(_.trim.split('.').toList),
- dtoPackage=Option(dtoPackage).toList.flatMap(_.split('.').filterNot(_.isEmpty).toList),
- context=Context.empty.copy(
- customExtraction=Option(customExtraction).getOrElse(Context.empty.customExtraction),
- framework=Option(framework),
- tracing=Option(tracing).getOrElse(Context.empty.tracing),
- modules=Option(modules).fold(Context.empty.modules)(_.asScala.toList.map(_.toString))
- ),
- imports=Option(customImports).fold[List[String]](List.empty)(_.asScala.toList.map(_.toString))
- )
+ val arg = Args.empty
+ .withKind(_kind)
+ .withSpecPath(Some(_specPath.getCanonicalPath))
+ .withPackageName(Option(packageName).map(_.trim.split('.').toList))
+ .withDtoPackage(Option(dtoPackage).toList.flatMap(_.split('.').filterNot(_.isEmpty).toList))
+ .withContext(
+ Context.empty
+ .withCustomExtraction(Option(customExtraction).getOrElse(Context.empty.customExtraction))
+ .withFramework(Option(framework))
+ .withTracing(Option(tracing).getOrElse(Context.empty.tracing))
+ .withModules(Option(modules).fold(Context.empty.modules)(_.asScala.toList.map(_.toString)))
+ )
+ .withImports(Option(customImports).fold[List[String]](List.empty)(_.asScala.toList.map(_.toString)))
val logLevel = Option(System.getProperty("guardrail.loglevel")).flatMap(LogLevels.apply).getOrElse(LogLevels.Warning)
getLog.info(s"Generating ${_kind} from ${specDesc}")
- guardrailTask(List((_language, arg)), outputPath)(logLevel)
+ guardrailTask(_language, arg, outputPath)(logLevel)
} catch {
case NonFatal(e) =>
getLog.error("Failed to generate client", e)
@@ -151,15 +156,9 @@ abstract class AbstractGuardrailCodegenMojo(phase: Phase) extends AbstractMojo w
}
type Language = String
- def guardrailTask(tasks: List[(Language, Args)], sourceDir: java.io.File)(implicit logLevel: LogLevel): Seq[java.io.File] = {
- val preppedTasks: Map[String, NonEmptyList[Args]] = tasks.foldLeft(Map.empty[String, NonEmptyList[Args]]) { case (acc, (language, args)) =>
- val prepped = args.copy(outputPath=Some(sourceDir.getPath))
- acc.updated(language, acc.get(language).fold(NonEmptyList.one(prepped))(_ :+ prepped))
- }
-
+ def guardrailTask(language: String, arg: Args, sourceDir: java.io.File)(implicit logLevel: LogLevel): Seq[java.io.File] = {
val /*(logger,*/ paths/*)*/ =
- guardrailRunner
- .apply(preppedTasks)
+ runner.guardrailRunner(language, Array(arg.withOutputPath(Some(sourceDir.getPath))))
.fold[List[java.nio.file.Path]]({
case MissingArg(args, Error.ArgName(arg)) =>
getLog.error(s"Missing argument: ${AnsiColor.BOLD}${arg}${AnsiColor.RESET} (In block ${args})")
@@ -168,7 +167,7 @@ abstract class AbstractGuardrailCodegenMojo(phase: Phase) extends AbstractMojo w
getLog.error(s"""${AnsiColor.RED}Missing dependency:${AnsiColor.RESET}
|${AnsiColor.BOLD}
| dev.guardrail
- | ${name}_2.12
+ | ${guardrailModulePrefix}-${name}_${scalaCompatVersion}
| Check latest version!
|${AnsiColor.RESET}
|""".stripMargin)
diff --git a/src/main/scala/dev/guardrail/GuardrailCodegenMojo.scala b/src/main/scala/dev/guardrail/GuardrailCodegenMojo.scala
index 00d5271..ed43bb8 100644
--- a/src/main/scala/dev/guardrail/GuardrailCodegenMojo.scala
+++ b/src/main/scala/dev/guardrail/GuardrailCodegenMojo.scala
@@ -5,6 +5,9 @@ import org.apache.maven.plugins.annotations.{LifecyclePhase, Mojo, Parameter}
@Mojo(name = "generate-sources", defaultPhase = LifecyclePhase.GENERATE_SOURCES)
class GuardrailCodegenMojo extends AbstractGuardrailCodegenMojo(Main) {
+
+ val guardrailModulePrefix: String = "guardrail"
+
@Parameter(defaultValue = "${project.build.directory}/generated-sources/swagger-clients", property = "outputPath", required = true)
var outputPath: File = _
}
diff --git a/src/main/scala/dev/guardrail/GuardrailTestCodegenMojo.scala b/src/main/scala/dev/guardrail/GuardrailTestCodegenMojo.scala
index 06eccaf..fd382f6 100644
--- a/src/main/scala/dev/guardrail/GuardrailTestCodegenMojo.scala
+++ b/src/main/scala/dev/guardrail/GuardrailTestCodegenMojo.scala
@@ -5,6 +5,8 @@ import org.apache.maven.plugins.annotations.{LifecyclePhase, Mojo, Parameter}
@Mojo(name = "generate-test-sources", defaultPhase = LifecyclePhase.GENERATE_TEST_SOURCES)
class GuardrailTestCodegenMojo extends AbstractGuardrailCodegenMojo(Test) {
+ val guardrailModulePrefix: String = "guardrail"
+
@Parameter(defaultValue = "${project.build.directory}/generated-sources/swagger-test-clients", property = "outputPath", required = true)
var outputPath: File = _
}
diff --git a/src/main/scala/dev/guardrail/m2repo/AbstractGuardrailDeployMojo.scala b/src/main/scala/dev/guardrail/m2repo/AbstractGuardrailDeployMojo.scala
index dfeec95..e87b1ae 100644
--- a/src/main/scala/dev/guardrail/m2repo/AbstractGuardrailDeployMojo.scala
+++ b/src/main/scala/dev/guardrail/m2repo/AbstractGuardrailDeployMojo.scala
@@ -4,7 +4,7 @@ import java.io.File
import org.apache.maven.artifact.DefaultArtifact
import org.apache.maven.plugin.{AbstractMojo, MojoFailureException}
import org.apache.maven.plugins.annotations.Parameter
-import org.apache.maven.project.MavenProject
+import org.apache.maven.project.{ DefaultMavenProjectHelper, MavenProject }
import org.apache.maven.artifact.versioning.VersionRange
abstract class AbstractGuardrailDeployMojo extends AbstractMojo {
@@ -33,13 +33,13 @@ abstract class AbstractGuardrailDeployMojo extends AbstractMojo {
)({ specFileType =>
val handler = new GuardrailArtifactHandler(
specFileType,
- "/" + groupId.replaceAllLiterally(".", "/") + artifactId,
+ "/" + groupId.replace(".", "/") + artifactId,
classifier
)
val artifact = new DefaultArtifact(groupId, artifactId, VersionRange.createFromVersionSpec(project.getVersion), Constants.SCOPE, `type`, classifier, handler)
artifact.setFile(specPath)
artifact.setRelease(!project.getVersion.endsWith("-SNAPSHOT"))
- project.addAttachedArtifact(artifact)
+ new DefaultMavenProjectHelper().attachArtifact(project, artifact)
})
}