[forge-dev] Forge and Camel Archetypes

Grzegorz Grzybek ggrzybek at redhat.com
Tue Jul 8 02:29:16 EDT 2014


Hello Lincoln!

Thanks for the skeleton project! That'll sure help me start moving what 
I've done in Fabric8 into Forge.
Currently we have 3 commands in Fabric:
  - list available archetypes (only a list included with Fabric8 distro)
  - show details about single archetype
  - generate project from one of the archetypes into specified 
directory. User is asked to specify (or accept default) parameters of 
archetype + of course groupId/artifactId/version/package

Give me a little time to read about developing addons for Forge!

best regards
Grzegorz Grzybek

> Hi Grzegorz,
>
> I'm sorry for dropping the ball on this. For Forge, I've set up a
> repository for you in https://github.com/forge/addon-maven-archetype.
> I've also created an empty Forge command for you to use as a starting point.
>
> Note, the project is split into addon/api/impl/spi/tests. The addon/
> project is classified as a 'forge-addon' JAR. More details on addon
> development can be found here:
> http://forge.jboss.org/document/develop-an-addon and info about the UI
> addon (used to create commands), can be found here:
> http://forge.jboss.org/addon/org.jboss.forge.addon:ui
>
> Please find me on #forge IRC if you get stuck, or reply here!
>
> ~Lincoln
>
>
> On Thu, Jun 5, 2014 at 10:30 AM, Grzegorz Grzybek <ggrzybek at redhat.com
> <mailto:ggrzybek at redhat.com>> wrote:
>
>     Hello
>
>     Finally I have time to start the discussion about the use of Maven
>     Archetypes in both JBoss Fuse and JBoss Fabric.
>
>     Here are the links to relevant issues:
>       - https://issues.jboss.org/browse/FORGE-273
>       - https://github.com/fabric8io/fabric8/issues/1091
>
>     Currently we have (here:
>     https://github.com/fabric8io/fabric8/blob/master/tooling/camel-tooling-util/src/main/java/io/fabric8/camel/tooling/util/ArchetypeHelper.java)
>     a helper which can unpack maven archetype and correctly replace
>     ${VAR} variables in archetype resources.
>
>     Let's first say what we want to achieve. I'd say (please provide
>     comments if I misunderstood something):
>     Basic:
>       - to be able to unpack any Maven Archetype JAR and create working
>     ("mvn clean install"able) project in FileSystem *without* using
>     Maven archetype-related libraries
>       - to be able to replace variables in archetype resources
>       - to be able to evaluate Velocity expressions (they may be present
>     in the archetypes)
>     Discovery:
>       - to be able to read list of available archetypes
>       - to be able to discover available archetypes and create the above
>     list (explicit distinction to free ourselves from finding the
>     archetypes in M2_REPO each time)
>     Help:
>       - to be able to discover archetype parameters (this is the main
>     goal - to make something more user/tab-completion friendly than "mvn
>     archetype:create" with millions of options)
>       - to provide commands (Karaf/Gogo or JBoss Forge) for project creation
>       - to ask users (GUI? Console? Hawt.io?) for required
>     archetype:create params
>
>     OK. I'd like to start a project (https://github.com/forge/ or
>     https://github.com/fusesource/ or https://github.com/jboss/ or
>     https://github.com/jboss-fuse/ - any suggestions?) which will do
>     most of the above and will be a foundation of:
>       - karaf/fabric command
>       - Forge addon(?)
>
>     Any suggestions?
>
>     ---
>     regards
>     Grzegorz Grzybek
>
>
>>     That sounds good. Please post to forge-dev at lists.jboss.org
>>     <mailto:forge-dev at lists.jboss.org> when you want help getting this
>>     rolling!
>>
>>
>>     On Wed, May 21, 2014 at 9:10 AM, James Strachan
>>     <jstracha at redhat.com <mailto:jstracha at redhat.com>> wrote:
>>
>>         Hey :)
>>
>>         The scala code is ported to Java now; why don’t we get the
>>         little ‘project creator’ command in fabric8 working; then when
>>         its there, we could post it to the forge list to see about
>>         including/sharing/reusing the same stuff there too?
>>
>>         On 21 May 2014, at 12:33, Grzegorz Grzybek
>>         <ggrzybek at redhat.com <mailto:ggrzybek at redhat.com>> wrote:
>>>         Hello - sorry I couldn't start the discussion... But I still
>>>         remember that it's quite important ;)
>>>
>>>         regards
>>>         Grzegorz Grzybek
>>>>         I think that sounds like a good idea. If we can consume this
>>>>         as a library, it would make things very easy to implement.
>>>>         It would also probably give you guys a migration path so you
>>>>         don't immediately have to jump to Forge on drop 0.
>>>>
>>>>         Forge has a number of ways of locating resources, we can
>>>>         come up with a nice pattern for this :)
>>>>
>>>>         Shall we move this discussion to forge-dev at lists.jboss.org
>>>>         <mailto:forge-dev at lists.jboss.org> or #forge on
>>>>         irc.freenode.net <http://irc.freenode.net/> and get started?
>>>>
>>>>         ~Lincoln
>>>>
>>>>
>>>>         On Thu, May 15, 2014 at 3:13 AM, James Strachan
>>>>         <jstracha at redhat.com <mailto:jstracha at redhat.com>> wrote:
>>>>
>>>>             Yeah, we might wanna polish the archetype generator code
>>>>             into its own jar/bundle thats got minimal dependencies &
>>>>             is easier to use stand alone (so it could be more easily
>>>>             consumed from inside Forge).
>>>>
>>>>             For the ‘create project’ command/plugin I figured we’d
>>>>             discover the available archetypes on the classpath
>>>>             somehow; in Fuse IDE (the Fuse/Camel plugins now in
>>>>             JBDS) we just did a bit of code generation to put the
>>>>             archetype jars inside the plugin.  Something a bit more
>>>>             extensible, eventually, might be nice for Forge; though
>>>>             for fabric8 just having a curated list of archetypes
>>>>             from the fabric8 project itself will be fine for us for
>>>>             a while ;)
>>>>
>>>>
>>>>             On 15 May 2014, at 08:03, Grzegorz Grzybek
>>>>             <ggrzybek at redhat.com <mailto:ggrzybek at redhat.com>> wrote:
>>>>>             Hello!
>>>>>>             Awesome, thanks Grzegorz!
>>>>>>
>>>>>>             BTW a bit of background for you, sorry I should have
>>>>>>             said - there’s been discussions in the past of adding
>>>>>>             a nice ability to create new projects from archetypes
>>>>>>             nicely into JBoss Forge:
>>>>>>             https://issues.jboss.org/browse/FORGE-273
>>>>>>
>>>>>>             http://forge.jboss.org/
>>>>>>
>>>>>>             the mvn command line to generate archetypes isn’t
>>>>>>             awesome ;) and we could curate a nice default set with
>>>>>>             auto-completion of all the known jboss archetypes from
>>>>>>             our projects (and maybe have a nice little way to
>>>>>>             filter them by tag/project name/tech etc) with tab
>>>>>>             completion etc
>>>>>             Thanks for links - so another item on my TODO list ;)
>>>>>             I'll think about how to make it easier both for Forge
>>>>>             and commands inside Fabric8.
>>>>>
>>>>>             regards
>>>>>             Grzegorz
>>>>>>
>>>>>>             On 15 May 2014, at 07:55, Grzegorz Grzybek
>>>>>>             <ggrzybek at redhat.com <mailto:ggrzybek at redhat.com>> wrote:
>>>>>>>             Hello!
>>>>>>>
>>>>>>>             I successfully ported insight-maven stuff from Scala
>>>>>>>             (it's Maven's Aether concept to deal with
>>>>>>>             repositories). But now I'm 30% in camel-tooling-util.
>>>>>>>             Scala is not really needed here and I see it has much
>>>>>>>             more cons than pros!
>>>>>>>             I know that for Scala ninjas this language is the
>>>>>>>             ultimate expression tool, but reading it after few
>>>>>>>             years is not such a Zen experience after all.
>>>>>>>
>>>>>>>             As someone said - Java8 is the new Java, not Scala.
>>>>>>>             Of course I don't want to rewrite all this code into
>>>>>>>             lambda-spaghetti, but good old Java6 syntax is enough :)
>>>>>>>
>>>>>>>             And after porting camel-tooling-util back to Java,
>>>>>>>             I'll look at
>>>>>>>             https://github.com/fabric8io/fabric8/issues/1091
>>>>>>>             which is about making creating projects from
>>>>>>>             archetypes much easier.
>>>>>>>
>>>>>>>             regards
>>>>>>>             Grzegorz
>>>>>>>>             Cool; wanna CC Grzegorz and myself?; am hoping at
>>>>>>>>             some point Grzegorz gets the chance to port the
>>>>>>>>             existing Archetype creation code from scala to java
>>>>>>>>             so its a little leaner & meaner and easier to reuse
>>>>>>>>             in Forge.
>>>>>>>>
>>>>>>>>             On 14 May 2014, at 20:31, Lincoln Baxter, III
>>>>>>>>             <lincolnbaxter at gmail.com
>>>>>>>>             <mailto:lincolnbaxter at gmail.com>> wrote:
>>>>>>>>>             Okay cool. We'll continue to go down the archetype
>>>>>>>>>             route and see if we can get that working for you
>>>>>>>>>             guys. It would help if we had someone on your team
>>>>>>>>>             who could take point on this so we can assist. Is
>>>>>>>>>             that possible?
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>             On Wed, May 14, 2014 at 3:29 PM, James Strachan
>>>>>>>>>             <jstracha at redhat.com <mailto:jstracha at redhat.com>>
>>>>>>>>>             wrote:
>>>>>>>>>
>>>>>>>>>                 Ah yeah - just chatted to Dave; this is some
>>>>>>>>>                 gem based stuff for generating projects from
>>>>>>>>>                 templates; which is cool too. We went the maven
>>>>>>>>>                 archetype direction in Fuse IDE (now the Fuse /
>>>>>>>>>                 Camel tooling in JBDS) and now have lots of
>>>>>>>>>                 archetypes (both on upstream projects like
>>>>>>>>>                 camel & cxf and in JBoss Fuse); so I’m
>>>>>>>>>                 personally more keen to support archetypes
>>>>>>>>>                 ASAP; but the more tooling and options the
>>>>>>>>>                 better! :)
>>>>>>>>>
>>>>>>>>>                 On 14 May 2014, at 17:58, Lincoln Baxter, III
>>>>>>>>>                 <lincolnbaxter at gmail.com
>>>>>>>>>                 <mailto:lincolnbaxter at gmail.com>> wrote:
>>>>>>>>>
>>>>>>>>>>                 https://issues.jboss.org/browse/FORGE-273
>>>>>>>>>>
>>>>>>>>>>                 Also just got contacted by some people from
>>>>>>>>>>                 GSS who are working on fusegen and want to
>>>>>>>>>>                 merge that into Forge. Do you know anything
>>>>>>>>>>                 about that?
>>>>>>>>>>                 Wai Chun Hoi, and Dave Stanley.
>>>>>>>>>>
>>>>>>>>>>                 ~Lincoln
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>                 On Wed, Apr 16, 2014 at 11:50 AM, James
>>>>>>>>>>                 Strachan <jstracha at redhat.com
>>>>>>>>>>                 <mailto:jstracha at redhat.com>> wrote:
>>>>>>>>>>
>>>>>>>>>>                     Sounds cool; am around until about 2-3pm I
>>>>>>>>>>                     think so late morning sounds cool.
>>>>>>>>>>
>>>>>>>>>>                     FWIW we added an archetype generator a
>>>>>>>>>>                     while back into eclipse so it was easy for
>>>>>>>>>>                     folks to start projects & we pre-baked all
>>>>>>>>>>                     our camel/fuse archetypes - as using the
>>>>>>>>>>                     maven archetype:generate command line is
>>>>>>>>>>                     so utterly awful.
>>>>>>>>>>
>>>>>>>>>>                     Here’s the code to create an archetype
>>>>>>>>>>                     from the mvn coordinates of the archetype
>>>>>>>>>>                     distro:
>>>>>>>>>>                     https://github.com/fabric8io/fabric8/blob/master/tooling/camel-tooling-util/src/main/scala/io/fabric8/camel/tooling/util/ArchetypeHelper.scala#L45
>>>>>>>>>>
>>>>>>>>>>                     e.g. here’s a test case that creates a
>>>>>>>>>>                     bunch of archetypes - no maven is required
>>>>>>>>>>                     etc:
>>>>>>>>>>                     https://github.com/fabric8io/fabric8/blob/master/tooling/camel-tooling-util/src/test/scala/io/fabric8/camel/tooling/util/ArchetypeTest.scala#L29
>>>>>>>>>>
>>>>>>>>>>                     I was hoping we could cobble something
>>>>>>>>>>                     like this into a standard command; then
>>>>>>>>>>                     have nice tab completion on the list of
>>>>>>>>>>                     archetypes we ship by default in Forge
>>>>>>>>>>                     which groks all the jboss / fuse / apache
>>>>>>>>>>                     archetypes we want to prime it with; and
>>>>>>>>>>                     make it easy for folks to
>>>>>>>>>>                     add/load/configure others. e.g. JBoss Fuse
>>>>>>>>>>                     ships with a bunch of archetypes (but they
>>>>>>>>>>                     are not sync’d to maven central); so it’d
>>>>>>>>>>                     be nice if all jboss products that have
>>>>>>>>>>                     archetypes were baked into Forge (e.g. EAP
>>>>>>>>>>                     / Fuse / Fuse Service Works / BRMS etc).
>>>>>>>>>>
>>>>>>>>>>                     Hope that helps - would love to port the
>>>>>>>>>>                     code to plain java ;) but I guess whats
>>>>>>>>>>                     another massive jar dependency on
>>>>>>>>>>                     spring-library between friends ;)
>>>>>>>>>>
>>>>>>>>>>                     Anyway - hope to see you around this
>>>>>>>>>>                     morning. Go Errai! :)
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>                     On 16 Apr 2014, at 02:52, Lincoln Baxter,
>>>>>>>>>>                     III <lincolnbaxter at gmail.com
>>>>>>>>>>                     <mailto:lincolnbaxter at gmail.com>> wrote:
>>>>>>>>>>>                     Let's talk about this tomorrow (today.)
>>>>>>>>>>>                     I'll be over at the conference in the
>>>>>>>>>>>                     late morning. And I'll be at the hack-fest.
>>>>>>>>>>>
>>>>>>>>>>>                     --
>>>>>>>>>>>                     Lincoln Baxter, III
>>>>>>>>>>>                     http://ocpsoft.org <http://ocpsoft.org/>
>>>>>>>>>>>                     "Simpler is better."
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>                     James
>>>>>>>>>>                     -------
>>>>>>>>>>                     Red Hat
>>>>>>>>>>
>>>>>>>>>>                     Email: jstracha at redhat.com
>>>>>>>>>>                     <mailto:jstracha at redhat.com>
>>>>>>>>>>                     Web: http://fusesource.com
>>>>>>>>>>                     <http://fusesource.com/>
>>>>>>>>>>                     Twitter: jstrachan, fusenews
>>>>>>>>>>                     Blog: http://macstrac.blogspot.com/
>>>>>>>>>>
>>>>>>>>>>                     Open Source Integration
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>                 --
>>>>>>>>>>                 Lincoln Baxter, III
>>>>>>>>>>                 http://ocpsoft.org <http://ocpsoft.org/>
>>>>>>>>>>                 "Simpler is better."
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>                 James
>>>>>>>>>                 -------
>>>>>>>>>                 Red Hat
>>>>>>>>>
>>>>>>>>>                 Twitter: @jstrachan
>>>>>>>>>                 Email: jstracha at redhat.com
>>>>>>>>>                 <mailto:jstracha at redhat.com>
>>>>>>>>>                 Blog: http://macstrac.blogspot.com/
>>>>>>>>>
>>>>>>>>>                 hawtio: http:/
>>>>>>>>>                 <http://fusesource.com/>/hawt.io/
>>>>>>>>>                 <http://hawt.io/>
>>>>>>>>>                 fabric8: http:/
>>>>>>>>>                 <http://fusesource.com/>/fabric8.io/
>>>>>>>>>                 <http://fabric8.io/>
>>>>>>>>>
>>>>>>>>>                 Open Source Integration
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>             --
>>>>>>>>>             Lincoln Baxter, III
>>>>>>>>>             http://ocpsoft.org <http://ocpsoft.org/>
>>>>>>>>>             "Simpler is better."
>>>>>>>>
>>>>>>>>
>>>>>>>>             James
>>>>>>>>             -------
>>>>>>>>             Red Hat
>>>>>>>>
>>>>>>>>             Twitter: @jstrachan
>>>>>>>>             Email: jstracha at redhat.com <mailto:jstracha at redhat.com>
>>>>>>>>             Blog: http://macstrac.blogspot.com/
>>>>>>>>
>>>>>>>>             hawtio: http:/ <http://fusesource.com/>/hawt.io/
>>>>>>>>             <http://hawt.io/>
>>>>>>>>             fabric8: http:/ <http://fusesource.com/>/fabric8.io/
>>>>>>>>             <http://fabric8.io/>
>>>>>>>>
>>>>>>>>             Open Source Integration
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>             James
>>>>>>             -------
>>>>>>             Red Hat
>>>>>>
>>>>>>             Twitter: @jstrachan
>>>>>>             Email: jstracha at redhat.com <mailto:jstracha at redhat.com>
>>>>>>             Blog: http://macstrac.blogspot.com/
>>>>>>
>>>>>>             hawtio: http:/ <http://fusesource.com/>/hawt.io/
>>>>>>             <http://hawt.io/>
>>>>>>             fabric8: http:/ <http://fusesource.com/>/fabric8.io/
>>>>>>             <http://fabric8.io/>
>>>>>>
>>>>>>             Open Source Integration
>>>>>>
>>>>>
>>>>
>>>>
>>>>             James
>>>>             -------
>>>>             Red Hat
>>>>
>>>>             Twitter: @jstrachan
>>>>             Email: jstracha at redhat.com <mailto:jstracha at redhat.com>
>>>>             Blog: http://macstrac.blogspot.com/
>>>>
>>>>             hawtio: http:/ <http://fusesource.com/>/hawt.io/
>>>>             <http://hawt.io/>
>>>>             fabric8: http:/ <http://fusesource.com/>/fabric8.io/
>>>>             <http://fabric8.io/>
>>>>
>>>>             Open Source Integration
>>>>
>>>>
>>>>
>>>>
>>>>         --
>>>>         Lincoln Baxter, III
>>>>         http://ocpsoft.org <http://ocpsoft.org/>
>>>>         "Simpler is better."
>>>
>>
>>
>>         James
>>         -------
>>         Red Hat
>>
>>         Twitter: @jstrachan
>>         Email: jstracha at redhat.com <mailto:jstracha at redhat.com>
>>         Blog: http://macstrac.blogspot.com/
>>
>>         hawtio: http:/ <http://fusesource.com/>/hawt.io/
>>         <http://hawt.io/>
>>         fabric8: http:/ <http://fusesource.com/>/fabric8.io/
>>         <http://fabric8.io/>
>>
>>         Open Source Integration
>>
>>
>>
>>
>>     --
>>     Lincoln Baxter, III
>>     http://ocpsoft.org
>>     "Simpler is better."
>
>
>
>
> --
> Lincoln Baxter, III
> http://ocpsoft.org
> "Simpler is better."



More information about the forge-dev mailing list