Esteban DUGUEPEROUX created ARCHETYPE-558:
---------------------------------------------

             Summary: Allow transitive requiredProperty from non default ones
                 Key: ARCHETYPE-558
                 URL: https://issues.apache.org/jira/browse/ARCHETYPE-558
             Project: Maven Archetype
          Issue Type: New Feature
          Components: Generator
    Affects Versions: 3.0.1
            Reporter: Esteban DUGUEPEROUX


Hi,

I want to create a Maven Archetype with 2 requiredProperty :

 

<requiredProperty key="apiName" />

<requiredProperty key="resourceName" />

 

apiName is used for the artifactId as follow:

<requiredProperty key="artifactId">
 <defaultValue>${apiName}</defaultValue>
 </requiredProperty>

 

I want also to define transitive properties from these 2 first properties:

 

<requiredProperty key="camelCaseAPIName">
 <defaultValue>${artifactId.replaceAll("^a|-a", "A").replaceAll("^b|-b", 
"B").replaceAll("^c|-c", "C").replaceAll("^d|-d", "D").replaceAll("^e|-e", 
"E").replaceAll("^f|-f", "F").replaceAll("^g|-g", "G").replaceAll("^h|-h", 
"H").replaceAll("^i|-i", "I").replaceAll("^j|-j", "J").replaceAll("^k|-k", 
"K").replaceAll("^l|-l", "L").replaceAll("^m|-m", "M").replaceAll("^n|-n", 
"N").replaceAll("^o|-o", "O").replaceAll("^p|-p", "P").replaceAll("^q|-q", 
"Q").replaceAll("^r|-r", "R").replaceAll("^s|-s", "S").replaceAll("^t|-t", 
"T").replaceAll("^u|-u", "U").replaceAll("^v|-v", "V").replaceAll("^w|-w", 
"W").replaceAll("^x|-x", "X").replaceAll("^y|-y", "Y").replaceAll("^z|-z", 
"Z")}</defaultValue>
 </requiredProperty>
 <requiredProperty key="camelCaseResourceName">
 <defaultValue>${resourceName.replaceAll("^a|-a", "A").replaceAll("^b|-b", 
"B").replaceAll("^c|-c", "C").replaceAll("^d|-d", "D").replaceAll("^e|-e", 
"E").replaceAll("^f|-f", "F").replaceAll("^g|-g", "G").replaceAll("^h|-h", 
"H").replaceAll("^i|-i", "I").replaceAll("^j|-j", "J").replaceAll("^k|-k", 
"K").replaceAll("^l|-l", "L").replaceAll("^m|-m", "M").replaceAll("^n|-n", 
"N").replaceAll("^o|-o", "O").replaceAll("^p|-p", "P").replaceAll("^q|-q", 
"Q").replaceAll("^r|-r", "R").replaceAll("^s|-s", "S").replaceAll("^t|-t", 
"T").replaceAll("^u|-u", "U").replaceAll("^v|-v", "V").replaceAll("^w|-w", 
"W").replaceAll("^x|-x", "X").replaceAll("^y|-y", "Y").replaceAll("^z|-z", 
"Z")}</defaultValue>
 </requiredProperty>

 

to have a camel case version of the 2 first properties.

For camelCaseAPIName property, it works because it uses artifactId property 
which is same as apiName. But for camelCaseResourceName it doesn't works 
because resourceName property is not added in velocity context. Only 
requiredProperty with no value and default value are set in velocity context.

See 
org.apache.maven.archetype.ui.generation.DefaultArchetypeGenerationConfigurator.configureArchetype(ArchetypeGenerationRequest,
 Boolean, Properties) line 262.

 

Could we have velocity context extended to property with value and no default 
value?

 

Best Regards.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to