[wildfly-dev] Updating the WildFly archetypes
Wolfgang Knauf
wolfgang.knauf at gmx.de
Sun Feb 24 15:02:02 EST 2019
About problem b from below: I can think of two possibilities to resolve it:
b.1) modify the qstools class "ArchetypeSyncMojo" so that it merges the
"kitchensink-ear" pom.xml and the quickstart pom into one file.
But I don't like the idea: The quickstarts root pom.xml has 778 lines -
this is way too much overhead for a newly created project. So I prefer...
b.2) creating an archetype from scratch, with only "relevant" snippets
in pom.xml and discard the "copy automatically from kitchensink sample"
code.
What do you think? Or is it possible to split the root pom file for the
quickstart into a bundle of feature sets? It seems maven does not
support this.
Best regards
Wolfgang
Am 22.02.19 um 22:26 schrieb Wolfgang Knauf:
> Thanks for the reply, Brian. But before discussing the naming scheme, I
> would like to understand the concept of the old archetype creation and
> make it work again ;-).
>
> I made some progress on the failing build, but now I reached a point
> where the concept "pulling from the kitchensink-ear app" seems to be
> broken by design....
>
> To sum it up:
>
> a) in the kitchensink sample, the names of the subdirectories ("ear",
> "ejb", "war") have changed. This causes the the archetype build to fail
> => this error is fixable, see below.
> But is it intended to provide an archetype with subdirectories "ear",
> "ejb" and "war" instead of "myapp-ear", "myapp-ejb" and "myapp-war"? I
> prefer the old naming scheme ;-).
>
>
> b) after fixing this, the archetype test will fail:
>
> [ERROR] The project foo.bar:multi:[unknown-version]
> (C:\Temp\wildfly-archetypes\wildfly-javaee7-webapp-ear-archetype\target\test-classes\projects\multi\project\multi\pom.xml)
> has 1 error
> [ERROR] Non-resolvable parent POM for
> foo.bar:multi:[unknown-version]: Could not find artifact
> foo.bar:multi:pom:0.0.1-SNAPSHOT and 'parent.relativePath' points at
> wrong local POM @ line 21, column 13 -> [Help 2]
>
>
> The reason is the "relativePath" in "....\kitchensink-ear\pom.xml",
> which is the root pom in the archetype:
>
>
> <parent>
> <groupId>org.wildfly.quickstarts</groupId>
> <artifactId>quickstart-parent</artifactId>
> <version>16.0.0.CR1-SNAPSHOT</version>
> <relativePath>../pom.xml</relativePath>
> </parent>
>
> ==>of course this parent file is not found in the generated archetype,
> thus it fails. This will make the archetype unusable.
>
> How to resolve this problem? I don't think that it is a good idea to
> include all the stuff from the quickstart pom.xml - that's way too much
> for any user generated application. Keep it simple ;-).
>
>
> Best regards
>
> Wolfgang
> ======================================
>
> And now a detailed analysis of the first problem (broken build because
> of renamed directories) - for those who are interested in the details:
>
>
> When building the "wildfly-javaee7-webapp-ear-archetype", it fails with
> this error message:
>
> [ERROR] Failed to execute goal
> org.apache.maven.plugins:maven-archetype-plugin:2.1:integration-test
> (default-integration-test) on project wildfly-javaee7-webapp-ear-archetype:
> [ERROR] Archetype IT 'multi' failed:
> org.apache.maven.archetype.exception.ArchetypeGenerationFailure: Error
> merging velocity templates: Unable to find resource
> 'archetype-resources/__rootArtifactId__-ejb/pom.xml'
>
>
> Taking a look at the files: in Git you find the files for the archetype
> in the subdir
> "wildfly-javaee7-webapp-ear-archetype/src/main/resources/archetype-resources/__rootArtifactId__-ejb"
>
> (https://github.com/wildfly/wildfly-archetypes/tree/master/wildfly-javaee7-webapp-ear-archetype/src/main/resources/archetype-resources/__rootArtifactId__-ejb)
>
> Those files shall be overwritten by the build: they are picked from the
> kitchensink sample and converted to a archetype version (with some
> placeholders like "${rootArtifactId}").
>
> After the maven build has failed,
> "..../archetype-resources/__rootArtifactId__-ejb" contains only empty
> directories - all files inside are deleted.
> The files that are copied from the kitchensink-ear project are now in
> the directories "..../archetype-resources/ear",
> ".../archetype-resources/ejb", ".../archetype-resources/web".
> This is not the place where the tests expect it.
>
> See attached screenshot "archetype_structure.png"
>
>
>
> Now about the explanation:
> At the time of creation of this archetype project, the "kitchensink-ear"
> module had three submodules "wildfly-kitchensink-ear-ear",
> "wildfly-kitchensink-ear-ejb" and "wildfly-kitchensink-ear-web".
>
> Here are old sources:
> https://github.com/wildfly/quickstart/tree/ed12afad407a2946b85db37bfeec1d2d1dd0201d/kitchensink-ear
>
>
>
> In the file
> "wildfly-archetypes\wildfly-javaee7-webapp-archetype\pom.xml", there are
> defined several archetype replacement rules for the "qstools" plugin.
> One is this:
>
> <archetypeExpressionReplaceValue>wildfly-kitchensink</archetypeExpressionReplaceValue>
>
> This means: in all path components containing "wildfly-kitchensink" this
> will be replaced by "__rootArtifactId__"
> E.g. "wildfly-kitchensink-ear-ejb" will become ""__rootArtifactId__ear-ejb"
>
>
> See source code for the replacements at
> https://github.com/jboss-developer/maven-qstools-plugin/blob/master/src/main/java/org/jboss/maven/plugins/qstools/ArchetypeSyncMojo.java
>
>
>
> BUT the "kitchensink-ear" module has three submodules "ear", "ejb" and
> "web". So, no replacement occurs, and the files are copied to
> ".../archetype-resources/ejb" instead of
> ".../archetype-resources/__rootArtifactId__-ejb".
>
>
> This error is fixable if the file
> "...\wildfly-archetypes\wildfly-javaee7-webapp-ear-archetype\src\main\resources\META-INF\maven\archetype-metadata.xml"
>
> is changed:
> replace
> <module id="ejb" dir="__rootArtifactId__-ejb" name="ejb">
> with:
> <module id="ejb" dir="ejb" name="ejb">
>
>
>
>
>
>
> Am 22.02.19 um 05:05 schrieb Brian Stansberry:
>>
>>
>> On Wed, Feb 20, 2019 at 3:45 PM Wolfgang Knauf <wolfgang.knauf at gmx.de
>> <mailto:wolfgang.knauf at gmx.de>> wrote:
>>
>> OK, after some digging around: the archetypes are generated based on
>> the
>> "Kitchensink" quickstart. So, actually there should be not much
>> changes
>> to the archetype files itself, just a "rebuild". But currently, a
>> "maven
>> install" for the archetype fails for me. More research needed...
>>
>> Oops; I missed this post and responded to your first one! Thanks for
>> digging into this!
>>
>> Wolfgang
>>
>>
>>
>> Am 19.02.19 um 22:12 schrieb Wolfgang Knauf:
>> > Hi,
>> >
>> > the archetypes at https://github.com/wildfly/wildfly-archetypes
>> > (e.g. "wildfly-javaee7-webapp-ear-blank-archetype") are for
>> WildFly 8,
>> > and when updating the WildFly version in pom.xmls, a lot of
>> further
>> > changes is required, see https://issues.jboss.org/browse/WFLY-9703
>> > (which is only part of the changes).
>> >
>> > I am interested in creating new archetypes for WildFly 15. What
>> do you
>> > think?
>> >
>> > My plan is to name them e.g.
>> > "wildfly15-javaee8-webapp-ear-blank-archetype" and to create a new
>> > archetype version each time a new WildFly major version is
>> released.
>> >
>> > If you are OK with this, I will struggle with my first steps in
>> Git, and
>> > I probably will ask some more or less dumb questions about
>> details ;-).
>> >
>> > Best regards
>> >
>> > Wolfgang
>> > _______________________________________________
>> > wildfly-dev mailing list
>> > wildfly-dev at lists.jboss.org <mailto:wildfly-dev at lists.jboss.org>
>> > https://lists.jboss.org/mailman/listinfo/wildfly-dev
>> >
>> _______________________________________________
>> wildfly-dev mailing list
>> wildfly-dev at lists.jboss.org <mailto:wildfly-dev at lists.jboss.org>
>> https://lists.jboss.org/mailman/listinfo/wildfly-dev
>>
>>
>>
>> --
>> Brian Stansberry
>> Manager, Senior Principal Software Engineer
>> Red Hat
More information about the wildfly-dev
mailing list