From c8a15ac16452fe7489a8b0bcc1007688388f2c88 Mon Sep 17 00:00:00 2001 From: Wolfgang Herget Date: Tue, 12 May 2015 17:39:05 +0200 Subject: [PATCH] Passthrough additional environment variables Squashed, rebased version of https://github.com/eirslett/frontend-maven-plugin/pull/214 --- .../maven/plugins/frontend/mojo/BowerMojo.java | 11 ++++++++++- .../maven/plugins/frontend/mojo/EmberMojo.java | 9 ++++++++- .../maven/plugins/frontend/mojo/GruntMojo.java | 15 ++++++++++++++- .../maven/plugins/frontend/mojo/GulpMojo.java | 9 ++++++++- .../maven/plugins/frontend/mojo/JspmMojo.java | 9 ++++++++- .../maven/plugins/frontend/mojo/KarmaRunMojo.java | 14 +++++++++++++- .../maven/plugins/frontend/mojo/NpmMojo.java | 10 +++++++++- .../maven/plugins/frontend/mojo/WebpackMojo.java | 9 ++++++++- .../maven/plugins/frontend/lib/BowerRunner.java | 4 +++- .../maven/plugins/frontend/lib/EmberRunner.java | 4 +++- .../maven/plugins/frontend/lib/GruntRunner.java | 3 ++- .../maven/plugins/frontend/lib/GulpRunner.java | 3 ++- .../maven/plugins/frontend/lib/JspmRunner.java | 5 +++-- .../maven/plugins/frontend/lib/KarmaRunner.java | 3 ++- .../plugins/frontend/lib/NodeAndNPMInstaller.java | 2 +- .../maven/plugins/frontend/lib/NodeExecutor.java | 6 ++++-- .../plugins/frontend/lib/NodeTaskExecutor.java | 5 +++-- .../maven/plugins/frontend/lib/NpmRunner.java | 3 ++- .../plugins/frontend/lib/ProcessExecutor.java | 7 ++++++- .../maven/plugins/frontend/lib/WebpackRunner.java | 3 ++- 20 files changed, 111 insertions(+), 23 deletions(-) diff --git a/frontend-maven-plugin/src/main/java/com/github/eirslett/maven/plugins/frontend/mojo/BowerMojo.java b/frontend-maven-plugin/src/main/java/com/github/eirslett/maven/plugins/frontend/mojo/BowerMojo.java index a85aa6153..b02d59a6e 100644 --- a/frontend-maven-plugin/src/main/java/com/github/eirslett/maven/plugins/frontend/mojo/BowerMojo.java +++ b/frontend-maven-plugin/src/main/java/com/github/eirslett/maven/plugins/frontend/mojo/BowerMojo.java @@ -6,6 +6,9 @@ import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; +import java.io.File; +import java.util.Map; + @Mojo(name = "bower", defaultPhase = LifecyclePhase.GENERATE_RESOURCES) public final class BowerMojo extends AbstractFrontendMojo { @@ -15,6 +18,12 @@ public final class BowerMojo extends AbstractFrontendMojo { @Parameter(defaultValue = "install", property = "frontend.bower.arguments", required = false) private String arguments; + /** + * Additional environment variables to pass to the build. + */ + @Parameter + private Map environmentVariables; + /** * Skips execution of this mojo. */ @@ -28,6 +37,6 @@ protected boolean isSkipped() { @Override protected void execute(FrontendPluginFactory factory) throws TaskRunnerException { - factory.getBowerRunner().execute(arguments); + factory.getBowerRunner().execute(arguments, environmentVariables); } } diff --git a/frontend-maven-plugin/src/main/java/com/github/eirslett/maven/plugins/frontend/mojo/EmberMojo.java b/frontend-maven-plugin/src/main/java/com/github/eirslett/maven/plugins/frontend/mojo/EmberMojo.java index e661022cc..59ed58023 100644 --- a/frontend-maven-plugin/src/main/java/com/github/eirslett/maven/plugins/frontend/mojo/EmberMojo.java +++ b/frontend-maven-plugin/src/main/java/com/github/eirslett/maven/plugins/frontend/mojo/EmberMojo.java @@ -11,6 +11,7 @@ import java.io.File; import java.util.Arrays; import java.util.List; +import java.util.Map; @Mojo(name="ember", defaultPhase = LifecyclePhase.GENERATE_RESOURCES) public final class EmberMojo extends AbstractFrontendMojo { @@ -44,6 +45,12 @@ public final class EmberMojo extends AbstractFrontendMojo { @Parameter(property = "outputdir") private File outputdir; + /** + * Additional environment variables to pass to the build. + */ + @Parameter + private Map environmentVariables; + /** * Skips execution of this mojo. */ @@ -61,7 +68,7 @@ protected boolean isSkipped() { @Override public void execute(FrontendPluginFactory factory) throws TaskRunnerException { if (shouldExecute()) { - factory.getEmberRunner().execute(arguments); + factory.getEmberRunner().execute(arguments, environmentVariables); if (outputdir != null) { getLog().info("Refreshing files after ember: " + outputdir); diff --git a/frontend-maven-plugin/src/main/java/com/github/eirslett/maven/plugins/frontend/mojo/GruntMojo.java b/frontend-maven-plugin/src/main/java/com/github/eirslett/maven/plugins/frontend/mojo/GruntMojo.java index 8fdcb768f..35b9fd9ad 100644 --- a/frontend-maven-plugin/src/main/java/com/github/eirslett/maven/plugins/frontend/mojo/GruntMojo.java +++ b/frontend-maven-plugin/src/main/java/com/github/eirslett/maven/plugins/frontend/mojo/GruntMojo.java @@ -2,6 +2,12 @@ import com.github.eirslett.maven.plugins.frontend.lib.FrontendPluginFactory; import com.github.eirslett.maven.plugins.frontend.lib.TaskRunnerException; + + +import org.apache.maven.plugin.AbstractMojo; +import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugin.MojoFailureException; + import org.apache.maven.plugins.annotations.Component; import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.Mojo; @@ -11,6 +17,7 @@ import java.io.File; import java.util.Arrays; import java.util.List; +import java.util.Map; @Mojo(name="grunt", defaultPhase = LifecyclePhase.GENERATE_RESOURCES) public final class GruntMojo extends AbstractFrontendMojo { @@ -44,6 +51,12 @@ public final class GruntMojo extends AbstractFrontendMojo { @Parameter(property = "outputdir") private File outputdir; + /** + * Additional environment variables to pass to the build. + */ + @Parameter + private Map environmentVariables; + /** * Skips execution of this mojo. */ @@ -61,7 +74,7 @@ protected boolean isSkipped() { @Override public void execute(FrontendPluginFactory factory) throws TaskRunnerException { if (shouldExecute()) { - factory.getGruntRunner().execute(arguments); + factory.getGruntRunner().execute(arguments, environmentVariables); if (outputdir != null) { getLog().info("Refreshing files after grunt: " + outputdir); diff --git a/frontend-maven-plugin/src/main/java/com/github/eirslett/maven/plugins/frontend/mojo/GulpMojo.java b/frontend-maven-plugin/src/main/java/com/github/eirslett/maven/plugins/frontend/mojo/GulpMojo.java index 96ca9c776..8662c26e9 100644 --- a/frontend-maven-plugin/src/main/java/com/github/eirslett/maven/plugins/frontend/mojo/GulpMojo.java +++ b/frontend-maven-plugin/src/main/java/com/github/eirslett/maven/plugins/frontend/mojo/GulpMojo.java @@ -11,6 +11,7 @@ import java.io.File; import java.util.Arrays; import java.util.List; +import java.util.Map; @Mojo(name="gulp", defaultPhase = LifecyclePhase.GENERATE_RESOURCES) public final class GulpMojo extends AbstractFrontendMojo { @@ -44,6 +45,12 @@ public final class GulpMojo extends AbstractFrontendMojo { @Parameter(property = "outputdir") private File outputdir; + /** + * Additional environment variables to pass to the build. + */ + @Parameter + private Map environmentVariables; + /** * Skips execution of this mojo. */ @@ -61,7 +68,7 @@ protected boolean isSkipped() { @Override public void execute(FrontendPluginFactory factory) throws TaskRunnerException { if (shouldExecute()) { - factory.getGulpRunner().execute(arguments); + factory.getGulpRunner().execute(arguments, environmentVariables); if (outputdir != null) { getLog().info("Refreshing files after gulp: " + outputdir); diff --git a/frontend-maven-plugin/src/main/java/com/github/eirslett/maven/plugins/frontend/mojo/JspmMojo.java b/frontend-maven-plugin/src/main/java/com/github/eirslett/maven/plugins/frontend/mojo/JspmMojo.java index 222f67a61..8f121ae72 100644 --- a/frontend-maven-plugin/src/main/java/com/github/eirslett/maven/plugins/frontend/mojo/JspmMojo.java +++ b/frontend-maven-plugin/src/main/java/com/github/eirslett/maven/plugins/frontend/mojo/JspmMojo.java @@ -10,6 +10,7 @@ import org.apache.maven.plugins.annotations.Parameter; import java.io.File; +import java.util.Map; @Mojo(name="jspm", defaultPhase = LifecyclePhase.GENERATE_RESOURCES) public class JspmMojo extends AbstractFrontendMojo { @@ -26,6 +27,12 @@ public class JspmMojo extends AbstractFrontendMojo { @Parameter(property = "skip.jspm", defaultValue = "false") private Boolean skip; + /** + * Additional environment variables to pass to the build. + */ + @Parameter + private Map environmentVariables; + @Override protected boolean isSkipped() { return this.skip; @@ -33,7 +40,7 @@ protected boolean isSkipped() { @Override protected void execute(FrontendPluginFactory factory) throws TaskRunnerException { - factory.getJspmRunner().execute(arguments); + factory.getJspmRunner().execute(arguments, environmentVariables); } } diff --git a/frontend-maven-plugin/src/main/java/com/github/eirslett/maven/plugins/frontend/mojo/KarmaRunMojo.java b/frontend-maven-plugin/src/main/java/com/github/eirslett/maven/plugins/frontend/mojo/KarmaRunMojo.java index 9a58fc2c1..7ba879f09 100644 --- a/frontend-maven-plugin/src/main/java/com/github/eirslett/maven/plugins/frontend/mojo/KarmaRunMojo.java +++ b/frontend-maven-plugin/src/main/java/com/github/eirslett/maven/plugins/frontend/mojo/KarmaRunMojo.java @@ -1,7 +1,13 @@ package com.github.eirslett.maven.plugins.frontend.mojo; +import java.util.Map; + import com.github.eirslett.maven.plugins.frontend.lib.FrontendPluginFactory; import com.github.eirslett.maven.plugins.frontend.lib.TaskRunnerException; +import org.apache.maven.plugin.AbstractMojo; +import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugin.MojoFailureException; + import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; @@ -29,6 +35,12 @@ public final class KarmaRunMojo extends AbstractFrontendMojo { @Parameter(property = "testFailureIgnore", required = false, defaultValue = "false") private Boolean testFailureIgnore; + /** + * Additional environment variables to pass to the build. + */ + @Parameter + private Map environmentVariables; + /** * Skips execution of this mojo. */ @@ -47,7 +59,7 @@ public void execute(FrontendPluginFactory factory) throws TaskRunnerException { LoggerFactory.getLogger(KarmaRunMojo.class).info("Skipping karma tests."); } else { - factory.getKarmaRunner().execute("start " + karmaConfPath); + factory.getKarmaRunner().execute("start " + karmaConfPath, environmentVariables); } } catch (TaskRunnerException e) { diff --git a/frontend-maven-plugin/src/main/java/com/github/eirslett/maven/plugins/frontend/mojo/NpmMojo.java b/frontend-maven-plugin/src/main/java/com/github/eirslett/maven/plugins/frontend/mojo/NpmMojo.java index a75a74e98..ce7d0fb94 100644 --- a/frontend-maven-plugin/src/main/java/com/github/eirslett/maven/plugins/frontend/mojo/NpmMojo.java +++ b/frontend-maven-plugin/src/main/java/com/github/eirslett/maven/plugins/frontend/mojo/NpmMojo.java @@ -3,6 +3,7 @@ import com.github.eirslett.maven.plugins.frontend.lib.FrontendPluginFactory; import com.github.eirslett.maven.plugins.frontend.lib.ProxyConfig; import com.github.eirslett.maven.plugins.frontend.lib.TaskRunnerException; + import org.apache.maven.execution.MavenSession; import org.apache.maven.plugins.annotations.Component; import org.apache.maven.plugins.annotations.LifecyclePhase; @@ -12,6 +13,7 @@ import org.sonatype.plexus.build.incremental.BuildContext; import java.io.File; +import java.util.Map; @Mojo(name="npm", defaultPhase = LifecyclePhase.GENERATE_RESOURCES) public final class NpmMojo extends AbstractFrontendMojo { @@ -22,6 +24,12 @@ public final class NpmMojo extends AbstractFrontendMojo { @Parameter(defaultValue = "install", property = "frontend.npm.arguments", required = false) private String arguments; + /** + * Additional environment variables to pass to the build. + */ + @Parameter + private Map environmentVariables; + @Parameter(property = "session", defaultValue = "${session}", readonly = true) private MavenSession session; @@ -47,7 +55,7 @@ public void execute(FrontendPluginFactory factory) throws TaskRunnerException { File packageJson = new File(workingDirectory, "package.json"); if (buildContext == null || buildContext.hasDelta(packageJson) || !buildContext.isIncremental()) { ProxyConfig proxyConfig = MojoUtils.getProxyConfig(session, decrypter); - factory.getNpmRunner(proxyConfig).execute(arguments); + factory.getNpmRunner(proxyConfig).execute(arguments, environmentVariables); } else { getLog().info("Skipping npm install as package.json unchanged"); } diff --git a/frontend-maven-plugin/src/main/java/com/github/eirslett/maven/plugins/frontend/mojo/WebpackMojo.java b/frontend-maven-plugin/src/main/java/com/github/eirslett/maven/plugins/frontend/mojo/WebpackMojo.java index cf8b9fb7e..6169f3e15 100644 --- a/frontend-maven-plugin/src/main/java/com/github/eirslett/maven/plugins/frontend/mojo/WebpackMojo.java +++ b/frontend-maven-plugin/src/main/java/com/github/eirslett/maven/plugins/frontend/mojo/WebpackMojo.java @@ -11,6 +11,7 @@ import java.io.File; import java.util.Arrays; import java.util.List; +import java.util.Map; @Mojo(name="webpack", defaultPhase = LifecyclePhase.GENERATE_RESOURCES) public final class WebpackMojo extends AbstractFrontendMojo { @@ -53,6 +54,12 @@ public final class WebpackMojo extends AbstractFrontendMojo { @Component private BuildContext buildContext; + /** + * Additional environment variables to pass to the build. + */ + @Parameter + private Map environmentVariables; + @Override protected boolean isSkipped() { return this.skip; @@ -61,7 +68,7 @@ protected boolean isSkipped() { @Override public void execute(FrontendPluginFactory factory) throws TaskRunnerException { if (shouldExecute()) { - factory.getWebpackRunner().execute(arguments); + factory.getWebpackRunner().execute(arguments, environmentVariables); if (outputdir != null) { getLog().info("Refreshing files after webpack: " + outputdir); diff --git a/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/BowerRunner.java b/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/BowerRunner.java index b7844d8b9..ce09ebb78 100644 --- a/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/BowerRunner.java +++ b/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/BowerRunner.java @@ -1,7 +1,9 @@ package com.github.eirslett.maven.plugins.frontend.lib; +import java.util.Map; + public interface BowerRunner { - void execute(String args) throws TaskRunnerException; + public void execute(String args, Map environment) throws TaskRunnerException; } final class DefaultBowerRunner extends NodeTaskExecutor implements BowerRunner { diff --git a/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/EmberRunner.java b/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/EmberRunner.java index bddebc74f..c428b2a2d 100644 --- a/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/EmberRunner.java +++ b/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/EmberRunner.java @@ -1,7 +1,9 @@ package com.github.eirslett.maven.plugins.frontend.lib; +import java.util.Map; + public interface EmberRunner { - void execute(String args) throws TaskRunnerException; + public void execute(String args, Map environment) throws TaskRunnerException; } final class DefaultEmberRunner extends NodeTaskExecutor implements EmberRunner { diff --git a/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/GruntRunner.java b/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/GruntRunner.java index f50935db8..3456e51f8 100644 --- a/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/GruntRunner.java +++ b/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/GruntRunner.java @@ -1,9 +1,10 @@ package com.github.eirslett.maven.plugins.frontend.lib; import java.util.Arrays; +import java.util.Map; public interface GruntRunner { - void execute(String args) throws TaskRunnerException; + public void execute(String args, Map environment) throws TaskRunnerException; } final class DefaultGruntRunner extends NodeTaskExecutor implements GruntRunner { diff --git a/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/GulpRunner.java b/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/GulpRunner.java index 677d23ef2..2a508c3f0 100644 --- a/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/GulpRunner.java +++ b/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/GulpRunner.java @@ -1,9 +1,10 @@ package com.github.eirslett.maven.plugins.frontend.lib; import java.util.Arrays; +import java.util.Map; public interface GulpRunner { - void execute(String args) throws TaskRunnerException; + public void execute(String args, Map environment) throws TaskRunnerException; } final class DefaultGulpRunner extends NodeTaskExecutor implements GulpRunner { diff --git a/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/JspmRunner.java b/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/JspmRunner.java index d4c20e522..a9cfe84a7 100644 --- a/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/JspmRunner.java +++ b/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/JspmRunner.java @@ -1,10 +1,11 @@ package com.github.eirslett.maven.plugins.frontend.lib; +import java.util.Map; + public interface JspmRunner { - void execute(String args) throws TaskRunnerException; + void execute(String args, Map environment) throws TaskRunnerException; } - final class DefaultJspmRunner extends NodeTaskExecutor implements JspmRunner { static final String TASK_LOCATION = "node_modules/jspm/jspm.js"; diff --git a/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/KarmaRunner.java b/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/KarmaRunner.java index c8bfbc621..1a9c69a7d 100644 --- a/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/KarmaRunner.java +++ b/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/KarmaRunner.java @@ -1,9 +1,10 @@ package com.github.eirslett.maven.plugins.frontend.lib; import java.util.Arrays; +import java.util.Map; public interface KarmaRunner { - void execute(String args) throws TaskRunnerException; + public void execute(String args, Map environment) throws TaskRunnerException; } final class DefaultKarmaRunner extends NodeTaskExecutor implements KarmaRunner { diff --git a/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/NodeAndNPMInstaller.java b/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/NodeAndNPMInstaller.java index 35a53af93..c8fd91b38 100644 --- a/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/NodeAndNPMInstaller.java +++ b/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/NodeAndNPMInstaller.java @@ -77,7 +77,7 @@ private boolean nodeIsAlreadyInstalled() { NodeExecutorConfig executorConfig = new InstallNodeExecutorConfig(config); File nodeFile = executorConfig.getNodePath(); if(nodeFile.exists()){ - final String version = new NodeExecutor(executorConfig, Arrays.asList("--version")).executeAndGetResult(); + final String version = new NodeExecutor(executorConfig, Arrays.asList("--version"), null).executeAndGetResult(); if(version.equals(nodeVersion)){ logger.info("Node " + version + " is already installed."); diff --git a/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/NodeExecutor.java b/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/NodeExecutor.java index ffa92c0d3..7088f051b 100644 --- a/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/NodeExecutor.java +++ b/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/NodeExecutor.java @@ -4,11 +4,12 @@ import java.util.ArrayList; import java.util.List; +import java.util.Map; final class NodeExecutor { private final ProcessExecutor executor; - public NodeExecutor(NodeExecutorConfig config, List arguments){ + public NodeExecutor(NodeExecutorConfig config, List arguments, Map additionalEnvironment){ final String node = config.getNodePath().getAbsolutePath(); List localPaths = new ArrayList(); localPaths.add(config.getNodePath().getParent()); @@ -17,7 +18,8 @@ public NodeExecutor(NodeExecutorConfig config, List arguments){ config.getWorkingDirectory(), localPaths, Utils.prepend(node, arguments), - config.getPlatform()); + config.getPlatform(), + additionalEnvironment); } public String executeAndGetResult() throws ProcessExecutionException { diff --git a/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/NodeTaskExecutor.java b/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/NodeTaskExecutor.java index 955dee32c..d0594505e 100644 --- a/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/NodeTaskExecutor.java +++ b/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/NodeTaskExecutor.java @@ -8,6 +8,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.Map; import static com.github.eirslett.maven.plugins.frontend.lib.Utils.implode; import static com.github.eirslett.maven.plugins.frontend.lib.Utils.normalize; @@ -48,13 +49,13 @@ private static String getTaskNameFromLocation(String taskLocation) { } - public final void execute(String args) throws TaskRunnerException { + public final void execute(String args, Map environment) throws TaskRunnerException { final String absoluteTaskLocation = getAbsoluteTaskLocation(); final List arguments = getArguments(args); logger.info("Running " + taskToString(taskName, arguments) + " in " + config.getWorkingDirectory()); try { - final int result = new NodeExecutor(config, prepend(absoluteTaskLocation, arguments)).executeAndRedirectOutput(logger); + final int result = new NodeExecutor(config, prepend(absoluteTaskLocation, arguments), environment).executeAndRedirectOutput(logger); if (result != 0) { throw new TaskRunnerException(taskToString(taskName, arguments) + " failed. (error code " + result + ")"); } diff --git a/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/NpmRunner.java b/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/NpmRunner.java index c45b3ef7a..c3e19e0b4 100644 --- a/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/NpmRunner.java +++ b/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/NpmRunner.java @@ -2,9 +2,10 @@ import java.util.ArrayList; import java.util.List; +import java.util.Map; public interface NpmRunner { - void execute(String args) throws TaskRunnerException; + public void execute(String args, Map environment) throws TaskRunnerException; } final class DefaultNpmRunner extends NodeTaskExecutor implements NpmRunner { diff --git a/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/ProcessExecutor.java b/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/ProcessExecutor.java index 9ebfe641f..6cf709c66 100644 --- a/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/ProcessExecutor.java +++ b/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/ProcessExecutor.java @@ -25,12 +25,14 @@ final class ProcessExecutor { private final List command; private final ProcessBuilder processBuilder; private final Platform platform; + private final Map additionalEnvironment; - public ProcessExecutor(File workingDirectory, List paths, List command, Platform platform){ + public ProcessExecutor(File workingDirectory, List paths, List command, Platform platform, Map additionalEnvironment){ this.workingDirectory = workingDirectory; this.localPaths = paths; this.command = command; this.platform = platform; + this.additionalEnvironment = additionalEnvironment; this.processBuilder = createProcessBuilder(); } @@ -97,6 +99,9 @@ private ProcessBuilder createProcessBuilder(){ } environment.put(pathVarName, pathBuilder.toString()); + if (additionalEnvironment != null) { + environment.putAll(additionalEnvironment); + } return pbuilder; } diff --git a/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/WebpackRunner.java b/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/WebpackRunner.java index fa40784d0..c88cdb859 100644 --- a/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/WebpackRunner.java +++ b/frontend-plugin-core/src/main/java/com/github/eirslett/maven/plugins/frontend/lib/WebpackRunner.java @@ -1,9 +1,10 @@ package com.github.eirslett.maven.plugins.frontend.lib; import java.util.ArrayList; +import java.util.Map; public interface WebpackRunner { - void execute(String args) throws TaskRunnerException; + void execute(String args, Map environment) throws TaskRunnerException; } final class DefaultWebpackRunner extends NodeTaskExecutor implements WebpackRunner {