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

Matthew Compton commented on ARCHETYPE-609:
-------------------------------------------

See original request sent to Maven User's mailing list: 
[https://lists.apache.org/thread.html/r24dff215890e3be13412b283f4c6138e0a513980d96e60eeb37a6b0f%40%3Cusers.maven.apache.org%3E]

> Using common Velocity template breaks with version 3.2.0
> --------------------------------------------------------
>
>                 Key: ARCHETYPE-609
>                 URL: https://issues.apache.org/jira/browse/ARCHETYPE-609
>             Project: Maven Archetype
>          Issue Type: Bug
>          Components: Plugin
>    Affects Versions: 3.2.0
>         Environment: macOS Mojave 10.14.6
>            Reporter: Matthew Compton
>            Priority: Major
>         Attachments: archetype-fail.tar.gz
>
>
> The recently released version 3.2.0 of the Maven Archetype Plugin has broken 
> an archetype I created. I have confirmed my archetype still works with 
> version 3.1.2 of the plugin but my team and I normally run {{mvn 
> archetype:generate ...}} just so we don’t have to specify a particular 
> version of the plugin, but now Maven will pick up the 3.2.0 version of the 
> plugin and fail. I am aware that using {{mvn 
> org.apache.maven.plugins:maven-archetype-plugin:3.1.2:generate ...}} will 
> work around the problem, but I’d still like to fix my archetype to work with 
> the latest version of the plugin.
> The problem appears to be that something has changed with how the class 
> path/resources are setup with the Velocity template engine when rendering 
> templates. I tried looking through the release notes but it just looks like 
> version numbers were bumped, so I doesn’t seem like this was an intentional 
> change in behavior.
> The source of the problem is my archetype has a common 
> {{META-INF/common-variable-definitions.vm}} that contains variables that are 
> used in multiple files within the archetype. This worked great with earlier 
> versions of the archetype plugin, each template that needed the common 
> variable definitions simply needed  a {{#parse( 
> "META-INF/common-variable-definitions.vm”}} ) at the top of the file and then 
> all of the usual replacements that were needed are available. Now, with the 
> 3.2.0 version of the plugin I get the following error:
> {noformat}
> ...
> [ERROR] ResourceManager : unable to find resource 
> 'archetype-resources/META-INF/common-variable-definitions.vm' in any resource 
> loader.
> [ERROR] #parse(): cannot find template 
> 'archetype-resources/META-INF/common-variable-definitions.vm', called at 
> archetype-resources/pom.xml[line 1, column 1]
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] BUILD FAILURE
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] Total time:  1.327 s
> [INFO] Finished at: 2020-08-26T16:28:24-07:00
> [INFO] 
> ------------------------------------------------------------------------
> [ERROR] Failed to execute goal 
> org.apache.maven.plugins:maven-archetype-plugin:3.2.0:integration-test 
> (default-integration-test) on project demo-archetype: 
> [ERROR] Archetype IT 'basic' failed: Error merging velocity templates: Unable 
> to find resource 'archetype-resources/META-INF/common-variable-definitions.vm'
> [ERROR] -> [Help 1]
> [ERROR] 
> [ERROR] To see the full stack trace of the errors, re-run Maven with the -e 
> switch.
> [ERROR] Re-run Maven using the -X switch to enable full debug logging.
> [ERROR] 
> [ERROR] For more information about the errors and possible solutions, please 
> read the following articles:
> [ERROR] [Help 1] 
> http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException{noformat}
> The issue is that the Velocity engine now expects the common definitions file 
> in {{archetype-resources/META-INF}} instead of a top-level {{META-INF}} 
> directory. I tried moving the file to 
> {{archetype-resources/META-INF/common-variable-definitions.vm}}, but I found 
> that only worked for the “first level”, and it essentially expected that file 
> to copied into every level of the directory hierarchy of the archetype 
> resources that had templates to render, which makes trying to do this totally 
> pointless, I might as well copy the definitions into the top of each file 
> like I had done in a very early version of my archetype. I also tried using 
> “../“ relative paths (like {{#parse( 
> “../META-INF/common-variable-definitions.vm” )}}) in files deeper into the 
> directory hierarchy to reference back up to a single common velocity 
> template, but could not get that to work either.
> Is there something I can do to get this working again with version 3.2.0? Or 
> is this no something that is actually supported and I was just getting lucky 
> before?
> To help reproduce the problem I created a simple example project to 
> demonstrate this change in behavior between the two versions of the Maven 
> Archetype Plugin. The top-level {{pom.xml}} in the attach tar has the 
> following properties which you can comment/uncomment to switch between a 
> working and failing version.
> {code:xml}
>  <properties>
>   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
>   <!-- This version of archetype plugin works -->
>   <!--<maven-archetype-plugin.verson>3.1.2</maven-archetype-plugin.verson>-->
>   <!-- This version of archetype plugin does not work -->
>   <maven-archetype-plugin.verson>3.2.0</maven-archetype-plugin.verson>
> </properties>{code}
> If you uncompress the attached tar and call {{mvn clean verify}} you can see 
> how it works with 3.1.2 and fails with 3.2.0.



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

Reply via email to