Thanks for the reply Martin, I’ve created https://issues.apache.org/jira/browse/ARCHETYPE-609 as requested.
Matt > On Aug 29, 2020, at 7:23 AM, Martin Kanters <[email protected]> wrote: > > Hi Matt, > > Thanks a lot for your extensive bug report including sample project. Could > you please create a bug in Jira? [1] > It will make it easier to pick up the issue and assign the potential fix to > a future release. > > Regards, Martin > > [1] https://issues.apache.org/jira/projects/ARCHETYPE/issues/ > > Op do 27 aug. 2020 om 21:41 schreef Matthew Compton <[email protected]>: > >> Hello all, >> >> 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: >> >> >> [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 >> >> >> 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. >> >> <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> >> >> 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. >> >> Thank you for the help, >> >> Matt >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [email protected] >> For additional commands, e-mail: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
