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 38fc0b711..0a329be81 100644 --- a/modello-core/src/main/java/org/codehaus/modello/ModelloParameterConstants.java +++ b/modello-core/src/main/java/org/codehaus/modello/ModelloParameterConstants.java @@ -80,5 +80,12 @@ public class ModelloParameterConstants { */ public static final String XSD_ENFORCE_MANDATORY_ELEMENTS = "modello.xsd.enforce.mandatory.element"; + /** + * The license text as string, to be added to generated files, if needed. + * + * @since 2.3.1 + */ + public static final String LICENSE_TEXT = "modello.license.text"; + private ModelloParameterConstants() {} } diff --git a/modello-core/src/main/java/org/codehaus/modello/plugin/AbstractModelloGenerator.java b/modello-core/src/main/java/org/codehaus/modello/plugin/AbstractModelloGenerator.java index a297210db..23170bd7c 100644 --- a/modello-core/src/main/java/org/codehaus/modello/plugin/AbstractModelloGenerator.java +++ b/modello-core/src/main/java/org/codehaus/modello/plugin/AbstractModelloGenerator.java @@ -66,6 +66,8 @@ public abstract class AbstractModelloGenerator implements ModelloGenerator { private String encoding; + private String licenseText; + @Inject private BuildContext buildContext; @@ -82,9 +84,12 @@ protected void initialize(Model model, Properties parameters) throws ModelloExce generatedVersion = new Version(version); - packageWithVersion = Boolean.valueOf(getParameter(parameters, ModelloParameterConstants.PACKAGE_WITH_VERSION)); + packageWithVersion = + Boolean.parseBoolean(getParameter(parameters, ModelloParameterConstants.PACKAGE_WITH_VERSION)); encoding = parameters.getProperty(ModelloParameterConstants.ENCODING); + + licenseText = parameters.getProperty(ModelloParameterConstants.LICENSE_TEXT); } protected Model getModel() { @@ -108,13 +113,27 @@ protected String getEncoding() { } protected String getHeader() { + String header = getLicenseHeader(); + if (header == null) { + return getGeneratedHeader(); + } + header += System.lineSeparator(); + header += getGeneratedHeader(); + return header; + } + + protected String getGeneratedHeader() { String version = getClass().getPackage().getImplementationVersion(); - return "=================== DO NOT EDIT THIS FILE ====================\n" - + "Generated by Modello" + ((version == null) ? "" : (' ' + version)) + ",\n" - + "any modifications will be overwritten.\n" + return "=================== DO NOT EDIT THIS FILE ====================" + System.lineSeparator() + + "Generated by Modello" + ((version == null) ? "" : (' ' + version)) + "," + System.lineSeparator() + + "any modifications will be overwritten." + System.lineSeparator() + "=============================================================="; } + protected String getLicenseHeader() { + return licenseText; + } + protected boolean isClassInModel(String fieldType, Model model) { try { return model.getClass(fieldType, generatedVersion) != null; diff --git a/modello-maven-plugin/src/it/maven-model/pom.xml b/modello-maven-plugin/src/it/maven-model/pom.xml index 1c125fb7f..ade38bc61 100644 --- a/modello-maven-plugin/src/it/maven-model/pom.xml +++ b/modello-maven-plugin/src/it/maven-model/pom.xml @@ -28,12 +28,14 @@ src/main/mdo/maven.mdo + The license of this file java xpp3-reader + xsd diff --git a/modello-maven-plugin/src/it/maven-model/src/main/mdo/maven.mdo b/modello-maven-plugin/src/it/maven-model/src/main/mdo/maven.mdo index e07e0e2aa..0a6bdfaf3 100644 --- a/modello-maven-plugin/src/it/maven-model/src/main/mdo/maven.mdo +++ b/modello-maven-plugin/src/it/maven-model/src/main/mdo/maven.mdo @@ -23,7 +23,10 @@ | definition of these types | --> - + maven Maven packagedVersions = new ArrayList(); + /** + * The contents of license header text, verbatim. + * + * @since 2.3.1 + */ + @Parameter + private String licenseText; + + /** + * The file that contains license header text. If both configured, the {@link #licenseText} prevails. + * + * @since 2.3.1 + */ + @Parameter + private File licenseFile; + /** * @since 1.0.1 */ @@ -160,11 +177,27 @@ public void execute() throws MojoExecutionException { parameters.setProperty(ModelloParameterConstants.PACKAGE_WITH_VERSION, Boolean.toString(packageWithVersion)); - if (packagedVersions.size() > 0) { + if (!packagedVersions.isEmpty()) { parameters.setProperty( ModelloParameterConstants.ALL_VERSIONS, StringUtils.join(packagedVersions.iterator(), ",")); } + if (licenseText != null || licenseFile != null) { + String license = ""; + if (licenseText != null) { + // licenseText prevails + license = licenseText; + } else { + try { + // load it up and hard fail if cannot, as it is user misconfiguration + license = String.join(System.lineSeparator(), Files.readAllLines(licenseFile.toPath())); + } catch (IOException e) { + throw new MojoExecutionException("Could not load up license text from " + licenseFile, e); + } + } + parameters.setProperty(ModelloParameterConstants.LICENSE_TEXT, license); + } + customizeParameters(parameters); // ----------------------------------------------------------------------