[wildfly-dev] Updating the WildFly archetypes
Wolfgang Knauf
wolfgang.knauf at gmx.de
Sat Mar 2 06:55:55 EST 2019
Hi,
just wanted to send a reminder about the questions below...
Best regards
Wolfgang
Am 24.02.19 um 21:02 schrieb Wolfgang Knauf:
> 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