Author: agiraudet Date: 2013-06-12 17:46:10 +0200 (Wed, 12 Jun 2013) New Revision: 1276 Url: http://nuiton.org/projects/eugene/repository/revisions/1276 Log: syntaxe user friendly : param?\195?\168tre de retour des op?\195?\169rations d?\195?\169sormais devant l'op?\195?\169ration et non apr?\195?\168s (remplac?\195?\169 par bodyCode) syntaxe user firendly : remplacement de la valeur par d?\195?\169faut des attributs par la reverse min/max multiplicit?\195?\169 et reverse ordering pour les liens unidirectionnels (test) ajout d'un template de g?\195?\169n?\195?\169ration de syntaxe pure yaml ?\195?\160 partir d'un ObjectModel (template pour la syntaxe user friendly ?\195?\160 venir) Added: trunk/eugene-yaml-templates/ trunk/eugene-yaml-templates/LICENSE.txt trunk/eugene-yaml-templates/README.txt trunk/eugene-yaml-templates/changelog.txt trunk/eugene-yaml-templates/pom.xml trunk/eugene-yaml-templates/src/ trunk/eugene-yaml-templates/src/main/ trunk/eugene-yaml-templates/src/main/java/ trunk/eugene-yaml-templates/src/main/java/org/ trunk/eugene-yaml-templates/src/main/java/org/nuiton/ trunk/eugene-yaml-templates/src/main/java/org/nuiton/eugene/ trunk/eugene-yaml-templates/src/main/java/org/nuiton/eugene/yaml/ trunk/eugene-yaml-templates/src/main/java/org/nuiton/eugene/yaml/PureYamlTemplatesGenerator.java trunk/eugene-yaml-templates/src/main/java/org/nuiton/eugene/yaml/UserFriendlyTemplatesGenerator.java trunk/eugene-yaml-templates/src/main/resources/ trunk/eugene-yaml-templates/src/test/ trunk/eugene-yaml-templates/src/test/java/ Modified: trunk/eugene-maven-plugin/pom.xml trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/KeyWords.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/ParserUserFriendly.java trunk/pom.xml Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/KeyWords.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/KeyWords.java 2013-06-11 14:52:53 UTC (rev 1275) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/KeyWords.java 2013-06-12 15:46:10 UTC (rev 1276) @@ -9,6 +9,7 @@ String SEPARATOR = "."; String ABSTRACT = "abstract"; + String AGGREGATE = "aggregate"; String ASSOCIATION_CLASS = "associationclass"; String ASSOCIATION_CLASS_NAME = "associationclassname"; String ASSOCIATION_TYPE = "associationtype"; @@ -17,7 +18,9 @@ String CLASS = "class"; String CLASSIFIER = "classifier"; String COMMENTS = "comments"; + String COMPOSITE = "composite"; String DEFAULT_VALUE = "defaultvalue"; + String DESCRIPTION = "description"; String DOCUMENTATION = "documentation"; String ENUMERATION = "enumeration"; String EXTERN = "extern"; @@ -43,6 +46,8 @@ String RETURN_PARAMETER = "returnparameter"; String REVERSE_ATTRIBUTE_NAME = "reverseattributename"; String REVERSE_MAX_MULTIPLICITY = "reversemaxmultiplicity"; + String REVERSE_MIN_MULTIPLICITY = "reverseminmultiplicity"; + String REVERSE_ORDERING = "reverseordering"; String STATIC = "static"; String STEREOTYPES = "stereotypes"; String SUPER_CLASSES = "superclasses"; Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/ParserUserFriendly.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/ParserUserFriendly.java 2013-06-11 14:52:53 UTC (rev 1275) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/reader/yaml/ParserUserFriendly.java 2013-06-12 15:46:10 UTC (rev 1276) @@ -486,6 +486,40 @@ if (attributePARSE.size() > 1) { attributeYAMLO.addStringToMap(NAME, attributePARSE.get(1)); } + if(value != null) + { + //idée1: defaultValue + //attributeYAMLO.addStringToMap(DEFAULT_VALUE,String.valueOf(value)); + //idée2: reverseMultiplicity & reverseOrdering (pour lien unidirectionnel) + List<String> valuePARSE = YamlUtil.charParse(String.valueOf(value),' '); + if (valuePARSE.contains(ORDERED)) { + attributeYAMLO.addStringToMap(REVERSE_ORDERING, ORDERED); + attributePARSE.remove(valuePARSE.indexOf(ORDERED)); + } else if (valuePARSE.contains(UNORDERED)) { + attributeYAMLO.addStringToMap(REVERSE_ORDERING, UNORDERED); + attributePARSE.remove(valuePARSE.indexOf(UNORDERED)); + } + + if (valuePARSE.contains("[" + YamlUtil.extract('[', ']', String.valueOf(value)) + "]")) { + String multiplicity = YamlUtil.extract('[', ']', String.valueOf(value)); + if (multiplicity.equals("*")) { + attributeYAMLO.addStringToMap(REVERSE_MIN_MULTIPLICITY, "0"); + attributeYAMLO.addStringToMap(REVERSE_MAX_MULTIPLICITY, "-1"); + } else if (multiplicity.contains("..")) { + String min = YamlUtil.beforeChar(multiplicity, '.'); + String max = YamlUtil.afterChar(multiplicity, '.'); + if (min.equals("*")) { + min = "-1"; + } + if (max.equals("*")) { + max = "-1"; + } + attributeYAMLO.addStringToMap(REVERSE_MIN_MULTIPLICITY, min); + attributeYAMLO.addStringToMap(REVERSE_MAX_MULTIPLICITY, max); + } + valuePARSE.remove("[" + YamlUtil.extract('[', ']', String.valueOf(value)) + "]"); + } + } } public void parseOperation(String key, Object value, YamlObject operationYAMLO) { @@ -531,11 +565,20 @@ } } - if (value != null) { + if (operationPARSE.size() > 1) { YamlObject returnParameterYAMLO = new YamlObject(); - returnParameterYAMLO.addStringToMap(TYPE, String.valueOf(value)); + returnParameterYAMLO.addStringToMap(TYPE, operationPARSE.get(0)); operationYAMLO.addYamlObjectToMap(RETURN_PARAMETER, returnParameterYAMLO); } + + if (value != null) { + //idée1: returnParameter + /*YamlObject returnParameterYAMLO = new YamlObject(); + returnParameterYAMLO.addStringToMap(TYPE, String.valueOf(value)); + operationYAMLO.addYamlObjectToMap(RETURN_PARAMETER, returnParameterYAMLO);*/ + //idée2: bodyCode + operationYAMLO.addStringToMap(BODY_CODE,String.valueOf(value)); + } } public void resolveImports() { @@ -662,6 +705,7 @@ YamlObject reverseObject = getReverseObject(YamlUtil.afterChar(type, '.')); if (reverseObject != null) { YamlObject reverseAttribute = new YamlObject(); + attribute.addStringToMap(NAVIGABLE, String.valueOf(true)); reverseAttribute.addStringToMap(NAVIGABLE, String.valueOf(false)); reverseAttribute.addStringToMap(TYPE, imports.get(labelisable.getFirstMapStringListString(NAME))); if (attribute.containsKeyMapStringListString(MAX_MULTIPLICITY)) { @@ -670,7 +714,18 @@ if (attribute.containsKeyMapStringListString(NAME)) { reverseAttribute.addStringToMap(REVERSE_ATTRIBUTE_NAME, attribute.getFirstMapStringListString(NAME)); } - if (attribute.containsKeyMapStringListString(ORDERING)) { + if (attribute.containsKeyMapStringListString(REVERSE_MIN_MULTIPLICITY)) { + reverseAttribute.addStringToMap(MIN_MULTIPLICITY, attribute.getFirstMapStringListString(REVERSE_MIN_MULTIPLICITY)); + } + if (attribute.containsKeyMapStringListString(REVERSE_MAX_MULTIPLICITY)) { + reverseAttribute.addStringToMap(MAX_MULTIPLICITY, attribute.getFirstMapStringListString(REVERSE_MAX_MULTIPLICITY)); + } + if(attribute.containsKeyMapStringListString(REVERSE_ORDERING)) + { + reverseAttribute.addStringToMap(ORDERING, attribute.getFirstMapStringListString(REVERSE_ORDERING)); + } + //else set opposit ordering + else if (attribute.containsKeyMapStringListString(ORDERING)) { if (attribute.getFirstMapStringListString(ORDERING).equals(ORDERED)) { reverseAttribute.addStringToMap(ORDERING, UNORDERED); } else if (attribute.getFirstMapStringListString(ORDERING).equals(UNORDERED)) { @@ -678,8 +733,6 @@ } } reverseObject.addYamlObjectToMap(ATTRIBUTE, reverseAttribute); - - attribute.addStringToMap(NAVIGABLE, String.valueOf(true)); } } } Modified: trunk/eugene-maven-plugin/pom.xml =================================================================== --- trunk/eugene-maven-plugin/pom.xml 2013-06-11 14:52:53 UTC (rev 1275) +++ trunk/eugene-maven-plugin/pom.xml 2013-06-12 15:46:10 UTC (rev 1276) @@ -64,6 +64,13 @@ </dependency> <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>eugene-yaml-templates</artifactId> + <version>${project.version}</version> + <scope>runtime</scope> + </dependency> + + <dependency> <groupId>org.nuiton</groupId> <artifactId>nuiton-utils</artifactId> </dependency> Property changes on: trunk/eugene-yaml-templates ___________________________________________________________________ Added: svn:ignore + target .idea *.ipr *.iml *.iws Added: trunk/eugene-yaml-templates/LICENSE.txt =================================================================== Added: trunk/eugene-yaml-templates/README.txt =================================================================== Added: trunk/eugene-yaml-templates/changelog.txt =================================================================== Added: trunk/eugene-yaml-templates/pom.xml =================================================================== --- trunk/eugene-yaml-templates/pom.xml (rev 0) +++ trunk/eugene-yaml-templates/pom.xml 2013-06-12 15:46:10 UTC (rev 1276) @@ -0,0 +1,72 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + #%L + EUGene :: EUGene + + $HeadURL: http://svn.nuiton.org/svn/eugene/trunk/eugene-yaml-templates/pom.xml $ + %% + Copyright (C) 2004 - 2010 CodeLutin + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Lesser Public License for more details. + + You should have received a copy of the GNU General Lesser Public + License along with this program. If not, see + <http://www.gnu.org/licenses/lgpl-3.0.html>. + #L% + --> +<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</modelVersion> + + <parent> + <groupId>org.nuiton</groupId> + <artifactId>eugene</artifactId> + <version>2.6.4-SNAPSHOT</version> + </parent> + + <groupId>org.nuiton.eugene</groupId> + <artifactId>eugene-yaml-templates</artifactId> + + <dependencies> + + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>eugene</artifactId> + <version>${project.version}</version> + </dependency> + + </dependencies> + + <name>EUGene :: YAML templates</name> + + <inceptionYear>2013</inceptionYear> + + <build> + <plugins> + <!-- expose new plexus components --> + <plugin> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-component-metadata</artifactId> + <executions> + <execution> + <goals> + <goal>generate-metadata</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + +</project> + + + Added: trunk/eugene-yaml-templates/src/main/java/org/nuiton/eugene/yaml/PureYamlTemplatesGenerator.java =================================================================== --- trunk/eugene-yaml-templates/src/main/java/org/nuiton/eugene/yaml/PureYamlTemplatesGenerator.java (rev 0) +++ trunk/eugene-yaml-templates/src/main/java/org/nuiton/eugene/yaml/PureYamlTemplatesGenerator.java 2013-06-12 15:46:10 UTC (rev 1276) @@ -0,0 +1,281 @@ +package org.nuiton.eugene.yaml; + +import org.nuiton.eugene.models.object.*; +import org.nuiton.eugene.models.object.reader.yaml.KeyWords; + +import java.io.IOException; +import java.io.Writer; +import java.util.Map; + +/** + * @author agiraudet <giraudet@codelutin.com> + * @plexus.component role="org.nuiton.eugene.Template" role-hint="org.nuiton.eugene.yaml.PureYamlTemplatesGenerator" + * @since 2.6.4 + */ + +public class PureYamlTemplatesGenerator extends ObjectModelGenerator implements KeyWords { + + //TODO: tenir compte des valeurs par defaut : afficher seulement les valeurs différentes des valeurs par défaut + + @Override + public void generateFromModel(Writer output, ObjectModel input) throws IOException { + output.write("%YAML 1.1\n---\n- syntaxe: 1.0\n\n"); + if(input.getName() != null) + { + output.write("- "+NAME+": "+input.getName()+"\n"); + } + if(input.getVersion() != null) + { + output.write("- "+VERSION+": "+input.getVersion()+"\n"); + } + if(input.getTagValues() != null && !input.getTagValues().isEmpty()) + { + output.write("- "+TAG_VALUES+":\n"); + for(Map.Entry<String,String> entry : input.getTagValues().entrySet()) + { + output.write(" - "+entry.getKey()+": "+entry.getValue()+"\n"); + } + } + output.write("\n"); + //classifier + if(input.getClasses() != null && !input.getClasses().isEmpty()) + { + for(ObjectModelClass objectModelClass : input.getClasses()) + { + //associationClass + if(objectModelClass instanceof ObjectModelAssociationClass) + { + generateFromAssociationClass(output, (ObjectModelAssociationClass) objectModelClass); + } + //class + else + { + generateFromClass(output, objectModelClass); + } + } + } + //interface + if(input.getInterfaces() != null && !input.getInterfaces().isEmpty()) + { + for(ObjectModelInterface objectModelInterface : input.getInterfaces()) + { + generateFromInterface(output, objectModelInterface); + } + } + //enumeration + if(input.getEnumerations() != null && !input.getEnumerations().isEmpty()) + { + for(ObjectModelEnumeration objectModelEnumeration : input.getEnumerations()) + { + generateFromEnumeration(output,objectModelEnumeration); + } + } + } + + @Override + public String getFilenameForModel(ObjectModel model) { + return model.getName()+".yamlobjectmodel"; + } + + public void generateFromElement(Writer output, ObjectModelElement input, String indent) throws IOException { + if(input.getName() != null) + { + output.write(indent+"- "+NAME+": "+input.getName()+"\n"); + } + if(input.getStereotypes() != null && !input.getStereotypes().isEmpty()) + { + for(String stereotype : input.getStereotypes()) + { + output.write(indent+"- "+STEREOTYPES+": "+stereotype+"\n"); + } + } + if(input.getComments() != null && !input.getComments().isEmpty()) + { + for(String comment : input.getComments()) + { + output.write(indent+"- "+COMMENTS+": "+comment+"\n"); + } + } + /*if(input.getDescription() != null) + { + output.write(indent+"- "+DESCRIPTION+": "+input.getDescription()+"\n"); + }*/ + if(input.getDocumentation() != null) + { + output.write(indent+"- "+DOCUMENTATION+": "+input.getDocumentation()+"\n"); + } + if(input.getTagValues() != null && !input.getTagValues().isEmpty()) + { + output.write("- "+TAG_VALUES+":\n"); + for(Map.Entry<String,String> entry : input.getTagValues().entrySet()) + { + output.write(" - "+entry.getKey()+": "+entry.getValue()+"\n"); + } + } + output.write(indent+"- "+STATIC+": "+String.valueOf(input.isStatic())+"\n"); + } + + public void generateFromClassifier(Writer output, ObjectModelClassifier input) throws IOException { + if(input.getInterfaces() != null && !input.getInterfaces().isEmpty()) + { + for(ObjectModelInterface objectModelInterface : input.getInterfaces()) + { + //tester null + output.write(" - "+SUPER_INTERFACES+": "+objectModelInterface.getPackageName()+"."+objectModelInterface.getName()); + } + } + generateFromElement(output,input," "); + output.write(" - "+INNER+": "+String.valueOf(input.isInner())+"\n"); + if(input.getPackageName() != null) + { + output.write(" - "+PACKAGE+": "+input.getPackageName()+"\n"); + } + if(input.getAttributes() != null && !input.getAttributes().isEmpty()) + { + for(ObjectModelAttribute attribute : input.getAttributes()) + { + generateFromAttribute(output,attribute); + } + } + if(input.getOperations() != null && !input.getOperations().isEmpty()) + { + for(ObjectModelOperation operation : input.getOperations()) + { + generateFromOperation(output,operation); + } + } + } + + public void generateFromClass(Writer output, ObjectModelClass input) throws IOException { + output.write("- " + CLASS + ":\n"); + output.write(" - "+ABSTRACT+": "+String.valueOf(input.isAbstract())+"\n"); + if(input.getSuperclasses() != null && !input.getSuperclasses().isEmpty()) + { + for(ObjectModelClass objectModelClass : input.getSuperclasses()) + { + //tester null + output.write(" - "+SUPER_CLASSES+": "+objectModelClass.getPackageName()+"."+objectModelClass.getName()); + } + } + generateFromClassifier(output,input); + output.write("\n"); + } + + public void generateFromInterface(Writer output, ObjectModelInterface input) throws IOException { + output.write("- "+INTERFACE+":\n"); + generateFromClassifier(output,input); + output.write("\n"); + } + + public void generateFromAssociationClass(Writer output, ObjectModelAssociationClass input) throws IOException { + output.write("- " + ASSOCIATION_CLASS + ":\n"); + if(input.getSuperclasses() != null && !input.getSuperclasses().isEmpty()) + { + for(ObjectModelClass objectModelClass : input.getSuperclasses()) + { + //tester null + output.write(" - "+SUPER_CLASSES+": "+objectModelClass.getPackageName()+"."+objectModelClass.getName()); + } + } + generateFromClassifier(output,input); + output.write(" - " + ABSTRACT + ": " + String.valueOf(input.isAbstract()) + "\n"); + if(input.getParticipantsAttributes() != null && !input.getParticipantsAttributes().isEmpty()) + { + for(ObjectModelAttribute attribute : input.getParticipantsAttributes()) + { + output.write(" - "+PARTICIPANT+":\n"); + //tester null + if(attribute.getType() != null) + { + output.write(" - "+NAME+": "+attribute.getType()+"\n"); + } + if(attribute.getName() != null) + { + output.write(" - "+TYPE+": "+attribute.getName()+"\n"); + } + } + } + output.write("\n"); + } + + public void generateFromEnumeration(Writer output, ObjectModelEnumeration input) throws IOException { + output.write("- "+ENUMERATION+":\n"); + generateFromElement(output,input," "); + } + + public void generateFromParameter(Writer output, ObjectModelParameter input, String indent) throws IOException { + generateFromElement(output,input,indent); + if(input.isOrdered()) + { + output.write(indent+"- "+ORDERING+": "+ORDERED+"\n"); + } + else + { + output.write(indent+"- "+ORDERING+": "+UNORDERED+"\n"); + } + if(input.getType() != null) + { + output.write(indent+"- "+TYPE+": "+input.getType()+"\n"); + } + if(input.getDefaultValue() != null) + { + output.write(indent+"- "+DEFAULT_VALUE+": "+input.getDefaultValue()+"\n"); + } + output.write(indent+"- "+MIN_MULTIPLICITY+": "+String.valueOf(input.getMinMultiplicity())+"\n"); + output.write(indent+"- "+MAX_MULTIPLICITY+": "+String.valueOf(input.getMaxMultiplicity())+"\n"); + output.write(indent+"- "+UNIQUE+": "+String.valueOf(input.isUnique())+"\n"); + } + + public void generateFromAttribute(Writer output, ObjectModelAttribute input) throws IOException { + output.write(" - "+ATTRIBUTE+":\n"); + generateFromParameter(output, input, " "); + output.write(" - "+NAVIGABLE+": "+String.valueOf(input.isNavigable())+"\n"); + output.write(" - "+TRANSIENT+": "+String.valueOf(input.isTransient())+"\n"); + output.write(" - "+FINAL+": "+String.valueOf(input.isFinal())+"\n"); + output.write(" - "+REVERSE_MAX_MULTIPLICITY+": "+String.valueOf(input.getReverseMaxMultiplicity())+"\n"); + if(input.getVisibility() != null) + { + output.write(" - "+VISIBILITY+": "+input.getVisibility()+"\n"); + } + if(input.isComposite()) + { + output.write(" - "+ASSOCIATION_TYPE+": "+COMPOSITE+"\n"); + } + else if(input.isAggregate()) + { + output.write(" - "+ASSOCIATION_TYPE+": "+AGGREGATE+"\n"); + } + if(input.getAssociationClass() != null) + { + output.write(" - "+ASSOCIATION_CLASS_NAME+": "+input.getAssociationClass().getPackageName()+"."+input.getAssociationClass().getName()+"\n"); + } + } + + public void generateFromOperation(Writer output, ObjectModelOperation input) throws IOException { + output.write(" - " + ATTRIBUTE + ":\n"); + generateFromElement(output, input, " "); + output.write(" - "+ABSTRACT+": "+String.valueOf(input.isAbstract())+"\n"); + if(input.getVisibility() != null) + { + output.write(" - "+VISIBILITY+": "+input.getVisibility()+"\n"); + } + if(input.getBodyCode() != null) + { + output.write(" - "+BODY_CODE+": "+input.getBodyCode()+"\n"); + } + if(input.getReturnParameter() != null) + { + output.write(" - "+RETURN_PARAMETER+":\n"); + generateFromParameter(output, input.getReturnParameter(), " "); + } + if(input.getParameters() != null && !input.getParameters().isEmpty()) + { + for(ObjectModelParameter objectModelParameter : input.getParameters()) + { + output.write(" - "+PARAMETER+":\n"); + generateFromParameter(output, objectModelParameter, " "); + } + } + + } +} Added: trunk/eugene-yaml-templates/src/main/java/org/nuiton/eugene/yaml/UserFriendlyTemplatesGenerator.java =================================================================== --- trunk/eugene-yaml-templates/src/main/java/org/nuiton/eugene/yaml/UserFriendlyTemplatesGenerator.java (rev 0) +++ trunk/eugene-yaml-templates/src/main/java/org/nuiton/eugene/yaml/UserFriendlyTemplatesGenerator.java 2013-06-12 15:46:10 UTC (rev 1276) @@ -0,0 +1,26 @@ +package org.nuiton.eugene.yaml; + +import org.nuiton.eugene.models.object.ObjectModel; +import org.nuiton.eugene.models.object.ObjectModelGenerator; +import org.nuiton.eugene.models.object.reader.yaml.KeyWords; + +import java.io.IOException; +import java.io.Writer; + +/** + * @author agiraudet <giraudet@codelutin.com> + * @plexus.component role="org.nuiton.eugene.Template" role-hint="org.nuiton.eugene.yaml.UserFriendlyTemplatesGenerator" + * @since 2.6.4 + */ +public class UserFriendlyTemplatesGenerator extends ObjectModelGenerator implements KeyWords { + + @Override + public void generateFromModel(Writer output, ObjectModel input) throws IOException { + ;//TODO: + } + + @Override + public String getFilenameForModel(ObjectModel model) { + return model.getName()+".yamlobjectmodel"; + } +} Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2013-06-11 14:52:53 UTC (rev 1275) +++ trunk/pom.xml 2013-06-12 15:46:10 UTC (rev 1276) @@ -43,6 +43,7 @@ <module>eugene-java-templates</module> <module>eugene-plantuml-templates</module> <module>eugene-maven-plugin</module> + <module>eugene-yaml-templates</module> </modules> <dependencyManagement>