generator-martinlabs
Version:
Generates a fullstack CRUD using Java and Vue.js, check the features list
284 lines (260 loc) • 10.2 kB
JavaScript
var fs = require('fs');
var xml2js = require('xml2js');
module.exports = {
readFromFile: function(main) {
var done = main.async();
fs.readFile(main.customDestinationPath('pom.xml'), function(err, data) {
xml2js.parseString(data, function (err, result) {
var resp = {};
if (result) {
main.props.pom = result;
main.props.package = result.project.groupId[0];
main.props.projectName = result.project.artifactId[0];
}
done();
});
});
},
fillMissingContent: function(main) {
if (!main.props.pom) {
main.props.pom = {
project: {
"$": {
xmlns: "http://maven.apache.org/POM/4.0.0",
"xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance",
"xsi:schemaLocation": "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
},
modelVersion: ["4.0.0"],
groupId: [main.props.package],
artifactId: [main.props.projectName],
version: ["1.0.0"],
packaging: ["war"],
name: [main.props.projectName],
properties: [{
"endorsed.dir": ["${project.build.directory}/endorsed"],
"project.build.sourceEncoding": ["UTF-8"],
"kotlin.version": "1.1.51"
}]
}
};
}
if (!main.props.pom.project.dependencies) {
main.props.pom.project.dependencies = [{}];
}
if (!main.props.pom.project.dependencies[0].dependency) {
main.props.pom.project.dependencies[0].dependency = [];
}
var dependenciesToAdd = [{
groupId: ["junit"],
artifactId: ["junit"],
version: ["4.12"],
scope: ["test"]
}, {
groupId: ["com.simpli.model"],
artifactId: ["simpli-model"],
version: ["1.0.0"]
}, {
groupId: ["com.simpli.tools"],
artifactId: ["simpli-tools"],
version: ["1.0.0"]
}, {
groupId: ["com.simpli.sql"],
artifactId: ["simpli-sql"],
version: ["1.0.0"]
}, {
groupId: ["com.google.api.client"],
artifactId: ["google-api-client-util"],
version: ["1.2.3-alpha"]
}, {
groupId: ["org.glassfish.jersey.containers"],
artifactId: ["jersey-container-servlet"],
version: ["2.15"]
}, {
groupId: ["org.zalando.phrs"],
artifactId: ["jersey-media-json-gson"],
version: ["0.1"]
}, {
groupId: ["javax"],
artifactId: ["javaee-web-api"],
version: ["7.0"],
scope: ["provided"]
}, {
groupId: ["io.swagger"],
artifactId: ["swagger-jersey2-jaxrs"],
version: ["1.5.10"],
scope: ["compile"]
}, {
groupId: ["org.jetbrains.kotlin"],
artifactId: ["kotlin-runtime"],
version: ["${kotlin.version}"],
scope: ["compile"]
}, {
groupId: ["org.jetbrains.kotlin"],
artifactId: ["kotlin-stdlib-jre8"],
version: ["${kotlin.version}"]
}, {
groupId: ["org.jetbrains.kotlin"],
artifactId: ["kotlin-test"],
version: ["${kotlin.version}"],
scope: ["test"]
}, {
groupId: ["org.jetbrains.kotlin"],
artifactId: ["kotlin-reflect"],
version: ["${kotlin.version}"]
}];
for (var i in dependenciesToAdd) {
var dta = dependenciesToAdd[i];
var exist = false;
for (var j in main.props.pom.project.dependencies[0].dependency) {
var d = main.props.pom.project.dependencies[0].dependency[j];
if (dta.groupId[0] === d.groupId[0] && dta.artifactId[0] === d.artifactId[0]) {
exist = true;
}
}
if (!exist) {
main.props.pom.project.dependencies[0].dependency.push(dta);
}
}
if (!main.props.pom.project.build) {
main.props.pom.project.build = [{}];
}
main.props.pom.project.build[0].finalName = [main.props.projectName];
if (!main.props.pom.project.build[0].plugins) {
main.props.pom.project.build[0].plugins = [{}];
}
if (!main.props.pom.project.build[0].plugins[0].plugin) {
main.props.pom.project.build[0].plugins[0].plugin = [];
}
var pluginsToAdd = [{
groupId: ["org.apache.maven.plugins"],
artifactId: ["maven-compiler-plugin"],
version: ["3.1"],
configuration: [{
source: ["1.8"],
target: ["1.8"],
compilerArguments: [{
endorseddirs: ["${endorsed.dir}"]
}]
}]
}, {
groupId: ["org.apache.maven.plugins"],
artifactId: ["maven-war-plugin"],
version: ["2.3"],
configuration: [{
failOnMissingWebXml: ["false"],
warSourceExcludes: [".sass-cache/**, node_modules/**"]
}]
}, {
groupId: ["org.apache.maven.plugins"],
artifactId: ["maven-dependency-plugin"],
version: ["2.6"],
executions: [{
execution: [{
phase: ["validate"],
goals: [{
goal: ["copy"]
}],
configuration: [{
outputDirectory: ["${endorsed.dir}"],
silent: ["true"],
artifactItems: [{
artifactItem: [{
groupId: ["javax"],
artifactId: ["javaee-endorsed-api"],
version: ["7.0"],
type: ["jar"]
}]
}]
}]
}]
}]
}, {
groupId: ["org.jacoco"],
artifactId: ["jacoco-maven-plugin"],
version: ["0.7.1.201405082137"],
executions: [{
execution: [
{
goals: [{ goal: ["prepare-agent"] }]
},
{
id: ["report"],
phase: ["prepare-package"],
goals: [{ goal: ["report"] }]
},
{
id: ["check"],
goals: [{ goal: ["check"] }],
configuration: [{
rules: [{
rule: [{
"$": { implementation: "org.jacoco.maven.RuleConfiguration" },
element: ["BUNDLE"]
}]
}],
excludes: [{
exclude: [
"**/Router.*"
]
}]
}]
}
]
}]
},
{
groupId: ["org.jetbrains.kotlin"],
artifactId: ["kotlin-maven-plugin"],
version: ["${kotlin.version}"],
executions: [{
execution: [
{
id: ["compile"],
goals: [{ goal: ["compile"] }],
configuration: [{
sourceDirs: [{
sourceDir: ["${project.basedir}/src/main/kotlin", "${project.basedir}/src/main/java"]
}]
}]
},
{
id: ["test-compile"],
goals: [{ goal: ["test-compile"] }],
configuration: [{
sourceDirs: [{
sourceDir: ["${project.basedir}/src/test/kotlin", "${project.basedir}/src/test/java"]
}]
}]
}
]
}]
}
];
for (var i in pluginsToAdd) {
var bta = pluginsToAdd[i];
var exist = false;
for (var j in main.props.pom.project.build[0].plugins[0].plugin) {
var b = main.props.pom.project.build[0].plugins[0].plugin[j];
if (b.groupId && b.artifactId && bta.groupId[0] === b.groupId[0] && bta.artifactId[0] === b.artifactId[0]) {
exist = true;
if (bta.configuration && bta.configuration.length) {
if (bta.configuration[0].source) {
b.configuration[0].source = bta.configuration[0].source;
b.configuration[0].target = bta.configuration[0].target;
}
if (bta.configuration[0].warSourceExcludes) {
b.configuration[0].warSourceExcludes = bta.configuration[0].warSourceExcludes;
}
}
}
}
if (!exist) {
main.props.pom.project.build[0].plugins[0].plugin.push(bta);
}
}
},
writeToFile: function(main) {
var pomAsXml = new xml2js.Builder().buildObject(main.props.pom);
fs.writeFileSync(main.customDestinationPath("pom.xml"), pomAsXml, "utf8");
}
};