diff --git a/mojo/pom.xml b/mojo/pom.xml
index b93d8ea..f7f8715 100644
--- a/mojo/pom.xml
+++ b/mojo/pom.xml
@@ -65,12 +65,23 @@
com.antwerkz.super-expressive
super-expressive
0.2.0
+
+
+ org.jetbrains.kotlin
+ kotlin-stdlib-jdk8
+
+
org.zeroturnaround
zt-exec
+
+ org.jetbrains.kotlin
+ kotlin-stdlib
+ ${kotlin.version}
+
com.github.zafarkhaja
java-semver
@@ -112,25 +123,6 @@
logback-classic
-
\ No newline at end of file
diff --git a/mojo/src/main/kotlin/com/antwerkz/build/GradleInvocationMojo.kt b/mojo/src/main/kotlin/com/antwerkz/build/GradleInvocationMojo.kt
index bc82bb8..97959a8 100644
--- a/mojo/src/main/kotlin/com/antwerkz/build/GradleInvocationMojo.kt
+++ b/mojo/src/main/kotlin/com/antwerkz/build/GradleInvocationMojo.kt
@@ -1,13 +1,16 @@
package com.antwerkz.build
+import java.io.File
+import java.io.FileOutputStream
+import java.lang.Compiler.command
import org.apache.maven.plugin.AbstractMojo
+import org.apache.maven.plugin.MojoExecutionException
import org.apache.maven.plugins.annotations.Component
import org.apache.maven.plugins.annotations.Mojo
import org.apache.maven.plugins.annotations.Parameter
import org.apache.maven.project.MavenProject
import org.codehaus.plexus.logging.Logger
import org.zeroturnaround.exec.ProcessExecutor
-import org.zeroturnaround.exec.stream.LogOutputStream
@Mojo(name = "gradle")
class GradleInvocationMojo : AbstractMojo() {
@@ -15,10 +18,12 @@ class GradleInvocationMojo : AbstractMojo() {
private val baseCommand =
listOf(
"java",
+ "-Xmx64m",
+ "-Xms64m",
+ "-Dorg.gradle.appname=gradlew",
"-cp",
"gradle/wrapper/gradle-wrapper.jar",
"org.gradle.wrapper.GradleWrapperMain",
- "--no-daemon",
"--console",
"plain"
)
@@ -28,51 +33,36 @@ class GradleInvocationMojo : AbstractMojo() {
@Parameter(defaultValue = "\${project}", required = true, readonly = true)
lateinit var project: MavenProject
-
@Parameter lateinit var task: GradleTask
+ @Parameter(defaultValue = "true") var log = true
- @Parameter(defaultValue = "true") var quiet = true
-
- /*
-
- java
- ${project.basedir}
-
- -cp
- gradle/wrapper/gradle-wrapper.jar
- org.gradle.wrapper.GradleWrapperMain
- classes
-
- true
-
-
- */
override fun execute() {
var command = baseCommand
- if (quiet) {
- command += "--quiet"
- }
- command += listOf("-i", task.name, *task.args.toTypedArray())
- logger.debug("executing command: ${command.joinToString(" ")}")
- ProcessExecutor()
- .command(command)
- .directory(project.basedir)
- .redirectOutput(
- object : LogOutputStream() {
- override fun processLine(line: String) {
- if (!quiet) {
- logger.info("> ${line}")
- }
- }
- }
+ command += listOf(task.name, *task.args.toTypedArray())
+ val executor = ProcessExecutor().command(command).directory(project.basedir)
+ if (log) {
+ logger.info(
+ "invoking gradle:\n\tdirectory: ${project.basedir}\n\tcommand: ${command.joinToString(" ")}"
)
- .redirectError(
- object : LogOutputStream() {
- override fun processLine(line: String) {
- logger.error("[error] > ${line}")
- }
- }
- )
- .execute()
+ val infoLogFile = File(project.basedir, "build/graven/${task.name}-info.log")
+ infoLogFile.parentFile.mkdirs()
+ logger.info("Logging enabled. See build/graven for details.")
+ executor
+ .redirectOutput(FileOutputStream(infoLogFile))
+ .redirectError(
+ FileOutputStream(File(project.basedir, "build/graven/${task.name}-error.log"))
+ )
+ }
+ val execute = executor.execute()
+
+ if (execute.exitValue != 0) {
+ if (log) {
+ throw MojoExecutionException("gradle run failed. check logs in build/graven/")
+ } else {
+ throw MojoExecutionException(
+ "gradle run failed. enabling logging to see the gradle output."
+ )
+ }
+ }
}
}
diff --git a/mojo/src/main/kotlin/com/antwerkz/build/ReplacementMojo.kt b/mojo/src/main/kotlin/com/antwerkz/build/ReplacementMojo.kt
index e4d1325..65ec710 100644
--- a/mojo/src/main/kotlin/com/antwerkz/build/ReplacementMojo.kt
+++ b/mojo/src/main/kotlin/com/antwerkz/build/ReplacementMojo.kt
@@ -3,6 +3,7 @@ package com.antwerkz.build
import com.antwerkz.expression.RegularExpression
import com.antwerkz.expression.toRegex
import java.io.File
+import java.io.IOException
import java.nio.charset.Charset
import java.util.Properties
import org.apache.maven.model.Dependency
@@ -75,8 +76,9 @@ class ReplacementMojo : AbstractMojo() {
.split(",")
.map { it.trim() }
.forEach {
- val file = File(it)
+ val file = File(project.basedir, it)
+ logger.info("Updating ${file}")
if (file.exists()) {
file.writeText(
file
@@ -97,20 +99,24 @@ class ReplacementMojo : AbstractMojo() {
}
private fun updateGradleWrapper() {
- val file = File("gradle/wrapper/gradle-wrapper.properties")
-
- file.writeText(
- file
- .readLines(Charset.defaultCharset())
- .map { line: String ->
- if (line.startsWith("distributionUrl=", ignoreCase = true)) {
- """distributionUrl=https://services.gradle.org/distributions/gradle-${gradleVersion}-bin.zip"""
- } else {
- line
+ val file = File(project.basedir, "gradle/wrapper/gradle-wrapper.properties")
+
+ try {
+ file.writeText(
+ file
+ .readLines(Charset.defaultCharset())
+ .map { line: String ->
+ if (line.startsWith("distributionUrl=", ignoreCase = true)) {
+ """distributionUrl=https://services.gradle.org/distributions/gradle-${gradleVersion}-bin.zip"""
+ } else {
+ line
+ }
}
- }
- .joinToString("\n")
- )
+ .joinToString("\n")
+ )
+ } catch (e: IOException) {
+ throw e
+ }
}
}