[ 
https://issues.apache.org/jira/browse/ARCHETYPE-612?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17208254#comment-17208254
 ] 

Martin Kanters commented on ARCHETYPE-612:
------------------------------------------

Thanks for the sample config and the thorough description. I am not very 
experienced with the archetype plugin, but I am inclined to agree with the 
solution proposed in -ARCHETYPE-443-: letting the end-user control the order of 
properties. The current ordering solution is unintuitive and clearly has some 
flaws. As I lack experience in this plugin I do not want to make the call, 
let's hope some other committers chip in. :)

> Required property interactive prompt ordering incorrect when reassigning 
> default for a "core" property
> ------------------------------------------------------------------------------------------------------
>
>                 Key: ARCHETYPE-612
>                 URL: https://issues.apache.org/jira/browse/ARCHETYPE-612
>             Project: Maven Archetype
>          Issue Type: Bug
>          Components: Plugin
>    Affects Versions: 3.2.0
>            Reporter: David Hutchison
>            Priority: Minor
>
> The interactive archetype project generation attempts to be smart in ordering 
> required properties so that when a default value for one property includes a 
> reference to another, they are asked for in the correct order. This also 
> however tries to ask the "core" properties (groupId, archetypeId, version, 
> and package) in a fixed order, and any others in alphabetical order, if they 
> do not have dependencies. 
>  
> I was trying to setup an archetype with a couple of prompts which would be 
> referenced in the default values for groupId, archetypeId and package. 
> Basically attempting to standardise the setup for these based on the 
> "application" and "database" the repository was for, so we would have:
>  * groupId: {{com.example.${application}.data}}
>  * archetypeId: {{${database}}}
>  * package: {{com.example.${application}.data.${database}}}
>  
> When doing this however, the package is prompted for before the value it's 
> default depends on. 
>  
> This snippet from archetype-metadata.xml will trigger the issue as a test
> {code:java}
>   <requiredProperties>
>     <requiredProperty key="a-prop"/>
>     <requiredProperty key="groupId">
>       <defaultValue>com.devwithimagination</defaultValue>
>     </requiredProperty>
>     <requiredProperty key="artifactId">
>       <defaultValue>test-${a-prop}</defaultValue>
>     </requiredProperty>
>     <requiredProperty key="package">
>       <defaultValue>${groupId}.${artifactId}.${z-prop}</defaultValue>
>     </requiredProperty>
>     <requiredProperty key="z-prop"/>
>   </requiredProperties>
> {code}
> Running this archetype interactively will output something like this:
> {code:java}
> $ mvn archetype:generate -DarchetypeArtifactId=archetype-test 
> -DarchetypeGroupId=com.devwithimagination.archetypes
> [INFO] Generating project in Interactive mode
> [INFO] Archetype 
> [com.devwithimagination.archetypes:archetype-test:1.0-SNAPSHOT] found in 
> catalog local
> [INFO] Using property: groupId = com.devwithimagination
> Define value for property 'version' 1.0-SNAPSHOT: : 
> Define value for property 'package' 
> com.devwithimagination.archetypes.archetype-test.${z-prop}: : 
> Define value for property 'a-prop': 123
> Define value for property 'artifactId' test-123: : 
> Define value for property 'z-prop': 
> {code}
> So {{package}} was prompted for before {{artifactId}} and {{z-prop}} which it 
> needed for the default value. In typing this up I just noticed it used the 
> {{archetypeArtifactId}} in the default value instead. 
> I have got a failing test case for {{RequiredPropertyComparatorTest}} which 
> shows the comparator isn't performing the sort correctly. 
> A possible solution for this could be what ARCHETYPE-443 proposed, and 
> respect the property order defined in the archetype metadata file. Any "core" 
> required properties could still be prompted for in their default order, 
> unless the archetype author had also included them in 
> {{archetype-metadata.xml}}. With that change, it would be up to the archetype 
> author to ensure that properties are correctly ordered. ARCHETYPE-562 points 
> to other issues with this sort.
> I have been having a look at making the sort smarter, but so far I've not 
> been able to keep the name based ordering working while fixing the property 
> dependency based sort. 
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to