diff --git a/modello-core/src/main/java/org/codehaus/modello/ModelloCli.java b/modello-core/src/main/java/org/codehaus/modello/ModelloCli.java index a75e4011e..7fa1eeb61 100644 --- a/modello-core/src/main/java/org/codehaus/modello/ModelloCli.java +++ b/modello-core/src/main/java/org/codehaus/modello/ModelloCli.java @@ -23,8 +23,10 @@ */ import java.io.File; +import java.util.Arrays; import java.util.HashMap; import java.util.Map; +import java.util.stream.Collectors; import org.codehaus.plexus.util.StringUtils; import org.codehaus.plexus.util.xml.XmlStreamReader; @@ -106,11 +108,40 @@ public static void parseArgumentsFromCommandLine(String[] args) throws Exception System.exit(1); } + if (StringUtils.equalsIgnoreCase(javaSource, "true") || StringUtils.equalsIgnoreCase(javaSource, "false")) { + // The old useJava5 parameter at this position + System.err.println("Missing required parameter: Java Source (replacing the old \"Use Java5\" parameter)"); + + usage(); + + System.exit(1); + } + parameters.put(ModelloParameterConstants.OUTPUT_JAVA_SOURCE, javaSource); if (args.length > 6) { parameters.put(ModelloParameterConstants.ENCODING, args[6]); } + + if (args.length > 7) { + parameters.put(ModelloParameterConstants.DOM_AS_XPP3, args[7]); + } + + if (args.length > 8) { + parameters.put(ModelloParameterConstants.VELOCITY_BASEDIR, args[8]); + } + + if (args.length > 9) { + parameters.put(ModelloParameterConstants.VELOCITY_TEMPLATES, args[9]); + } + + if (args.length > 10 && StringUtils.isNotEmpty(args[10])) { + parameters.put(ModelloParameterConstants.VELOCITY_PARAMETERS, (HashMap) + Arrays.stream(args[10].split(",")) + .filter(s -> s.contains("=")) + .map(s -> s.split("=", 2)) + .collect(Collectors.toMap(e -> e[0], e -> e[1]))); + } } // ---------------------------------------------------------------------- @@ -118,7 +149,8 @@ public static void parseArgumentsFromCommandLine(String[] args) throws Exception // ---------------------------------------------------------------------- private static void usage() { - System.err.println("Usage: modello " - + " []"); + System.err.println( + "Usage: modello " + + " [ [ [ ]]] "); } } diff --git a/modello-core/src/main/java/org/codehaus/modello/ModelloParameterConstants.java b/modello-core/src/main/java/org/codehaus/modello/ModelloParameterConstants.java index 572144dc2..28d594682 100644 --- a/modello-core/src/main/java/org/codehaus/modello/ModelloParameterConstants.java +++ b/modello-core/src/main/java/org/codehaus/modello/ModelloParameterConstants.java @@ -93,5 +93,20 @@ public class ModelloParameterConstants { */ public static final String PLURAL_EXCEPTIONS = "modello.plural.exceptions"; + /** + * @since 2.8.2 + */ + public static final String VELOCITY_BASEDIR = "modello.velocity.basedir"; + + /** + * @since 2.8.2 + */ + public static final String VELOCITY_TEMPLATES = "modello.velocity.templates"; + + /** + * @since 2.8.2 + */ + public static final String VELOCITY_PARAMETERS = "modello.velocity.parameters"; + private ModelloParameterConstants() {} } diff --git a/modello-maven-plugin/src/main/java/org/codehaus/modello/maven/ModelloVelocityMojo.java b/modello-maven-plugin/src/main/java/org/codehaus/modello/maven/ModelloVelocityMojo.java index b737f9253..927f98b67 100644 --- a/modello-maven-plugin/src/main/java/org/codehaus/modello/maven/ModelloVelocityMojo.java +++ b/modello-maven-plugin/src/main/java/org/codehaus/modello/maven/ModelloVelocityMojo.java @@ -30,8 +30,8 @@ import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; +import org.codehaus.modello.ModelloParameterConstants; import org.codehaus.modello.core.ModelloCore; -import org.codehaus.modello.plugin.velocity.VelocityGenerator; import org.codehaus.plexus.build.BuildContext; /** @@ -103,10 +103,11 @@ protected void customizeParameters(Map parameters) { .collect(Collectors.toMap( s -> s.substring(0, s.indexOf('=')), s -> s.substring(s.indexOf('=') + 1))); - parameters.put(VelocityGenerator.VELOCITY_BASEDIR, velocityBasedir.getAbsolutePath()); + parameters.put(ModelloParameterConstants.VELOCITY_BASEDIR, velocityBasedir.getAbsolutePath()); - parameters.put(VelocityGenerator.VELOCITY_TEMPLATES, templates.stream().collect(Collectors.joining(","))); - parameters.put(VelocityGenerator.VELOCITY_PARAMETERS, params); + parameters.put( + ModelloParameterConstants.VELOCITY_TEMPLATES, templates.stream().collect(Collectors.joining(","))); + parameters.put(ModelloParameterConstants.VELOCITY_PARAMETERS, params); } protected boolean producesCompilableResult() { diff --git a/modello-plugins/modello-plugin-velocity/src/main/java/org/codehaus/modello/plugin/velocity/VelocityGenerator.java b/modello-plugins/modello-plugin-velocity/src/main/java/org/codehaus/modello/plugin/velocity/VelocityGenerator.java index b1084b8c4..a3e5e04af 100644 --- a/modello-plugins/modello-plugin-velocity/src/main/java/org/codehaus/modello/plugin/velocity/VelocityGenerator.java +++ b/modello-plugins/modello-plugin-velocity/src/main/java/org/codehaus/modello/plugin/velocity/VelocityGenerator.java @@ -43,12 +43,6 @@ @Named("velocity") public class VelocityGenerator extends AbstractModelloGenerator { - public static final String VELOCITY_BASEDIR = "modello.velocity.basedir"; - - public static final String VELOCITY_TEMPLATES = "modello.velocity.templates"; - - public static final String VELOCITY_PARAMETERS = "modello.velocity.parameters"; - public static final String MODELLO_VELOCITY_OUTPUT = "#MODELLO-VELOCITY#SAVE-OUTPUT-TO "; @Override @@ -56,13 +50,15 @@ public class VelocityGenerator extends AbstractModelloGenerator { public void generate(Model model, Map parameters) throws ModelloException { initialize(model, parameters); try { - Map params = - (Map) Objects.requireNonNull(parameters.get(VELOCITY_PARAMETERS)); - String templates = requireParameter(parameters, VELOCITY_TEMPLATES); + Map params = (Map) + Objects.requireNonNull(parameters.get(ModelloParameterConstants.VELOCITY_PARAMETERS)); + String templates = requireParameter(parameters, ModelloParameterConstants.VELOCITY_TEMPLATES); String output = requireParameter(parameters, ModelloParameterConstants.OUTPUT_DIRECTORY); Properties props = new Properties(); - props.put("resource.loader.file.path", requireParameter(parameters, VELOCITY_BASEDIR)); + props.put( + "resource.loader.file.path", + requireParameter(parameters, ModelloParameterConstants.VELOCITY_BASEDIR)); RuntimeInstance velocity = new RuntimeInstance(); velocity.init(props);