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);
// ----------------------------------------------------------------------