Search code examples
xmlmavenmaven-archetype

Maven 2 Archetype creation: how to concatenate variables in folder/file names


I want, from my archetype, to create an xml file which name has two variables concatenated together.

Example: archetype-metadata.xml

<requiredProperties>
    <requiredProperty key="category"/>
    <requiredProperty key="description"/>
</requiredProperties>

Given category="MyCategory" and description="MyDescription", I want my file to be named "MyCateogryMyDescription.xml". Not "MyCategory-MyDescription.xml" nor anything else with something between the two.

The reason behind this weird, specific, inflexible requirement is, well, obviously backward compatibility with standards I don't want to touch.

My first try was the obvious __category____description__.xml, but it turns out that the generated file is named "MyCategory__description__.xml". If I add something between them, like a dash as __category__-__description__.xml it resolves correctly to "MyCategory-MyDescription.xml", but that's not what I want as I said before.


Solution

  • you could define an additional requiredProperty, which default value corresponds to the combination of the description and category tags values (i.e. accessible by means of the usual ${...} notation).

    Therefore, considering the above cited example, you could insert the following snippet in the archetype-metadata.xml file

    <requiredProperties>
        <requiredProperty key="category"/>
        <requiredProperty key="description"/>
        <requiredProperty key="categoryDescriptionComposition">
            <defaultValue>${category}${description}</defaultValue>
        </requiredProperty>
    </requiredProperties>
    

    and finally name your file as __categoryDescriptionComposition__.xml.