Converting AppFuse to a Maven 2 Project

View: New views
13 Messages — Rating Filter:   Alert me  

Converting AppFuse to a Maven 2 Project

by Matt Raible-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hello all,

I'm starting to convert AppFuse to be a Maven 2 project, and
(hopefully) use Maven 2's archetype system to allow users to create
new projects.

Initially, I'm thinking of a directory structure that contains many
different modules, maybe something like this:

hibernate
ibatis
core (services and common dao/web/model classes, could also be named service)
jsf
tapestry
struts-1
struts-2
springmvc (or spring-mvc)

I'm also open to allowing the dao and web tiers to be nested, so they
can be built and tested together:

data
   hibernate
   ibatis
core
web
   jsf
   tapestry
   etc.

Which is a better way to structure things in our source control
repository?  For the end user, hopefully it won't matter because
they'll only have a few AppFuse dependencies in their pom.xml (i.e.
appfuse-hibernate + appfuse-struts).  We can hopefully prompt them for
a multi-module project or a single-module project, and create the
directory structure appropriately.

Currently, AppFuse uses Ant to "install" the various modules.  This is
a pain because it requires parsing and replacing XML.  The good thing
about it is it reduces duplication.  With Maven and separate modules,
it seems like duplication might be a necessary evil.  For example,
there are many common CSS/JavaScript files between the web framework
implementations.  There's no way to copy these into each option's WAR
at build-time is there?  The easiest way to solve this might be
svn:externals AFAIK.

Thanks,

Matt

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@...
For additional commands, e-mail: users-help@...


Re: Converting AppFuse to a Maven 2 Project

by saturnism :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Matt,

We have worked on some ideas here
http://saturnism.wordpress.com/2006/06/16/prototype/ .  We can post the code
fairly easily to somehwere.  I think there were talks about a war plugin
that are able to make copies of another war project into the current?  But
to include lots of common files (dojo javascripts in our case) was a pain w/
how maven2 archetype works.  Currently we serve it from a resource servlet
that serves those from the classpath (i.e. a single jar dependecy).

ray,

On 7/18/06, Matt Raible <mraible@...> wrote:

>
> Hello all,
>
> I'm starting to convert AppFuse to be a Maven 2 project, and
> (hopefully) use Maven 2's archetype system to allow users to create
> new projects.
>
> Initially, I'm thinking of a directory structure that contains many
> different modules, maybe something like this:
>
> hibernate
> ibatis
> core (services and common dao/web/model classes, could also be named
> service)
> jsf
> tapestry
> struts-1
> struts-2
> springmvc (or spring-mvc)
>
> I'm also open to allowing the dao and web tiers to be nested, so they
> can be built and tested together:
>
> data
>    hibernate
>    ibatis
> core
> web
>    jsf
>    tapestry
>    etc.
>
> Which is a better way to structure things in our source control
> repository?  For the end user, hopefully it won't matter because
> they'll only have a few AppFuse dependencies in their pom.xml (i.e.
> appfuse-hibernate + appfuse-struts).  We can hopefully prompt them for
> a multi-module project or a single-module project, and create the
> directory structure appropriately.
>
> Currently, AppFuse uses Ant to "install" the various modules.  This is
> a pain because it requires parsing and replacing XML.  The good thing
> about it is it reduces duplication.  With Maven and separate modules,
> it seems like duplication might be a necessary evil.  For example,
> there are many common CSS/JavaScript files between the web framework
> implementations.  There's no way to copy these into each option's WAR
> at build-time is there?  The easiest way to solve this might be
> svn:externals AFAIK.
>
> Thanks,
>
> Matt
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@...
> For additional commands, e-mail: users-help@...
>
>

Re: Converting AppFuse to a Maven 2 Project

by Carlos Sanchez-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I like more the nested approach, it allows you to grow the number of
frameworks easier.

About the war resources i think you should be able to pack them in a
jar in a separate project and then  depend on it in the war projects,
uncompressing it with maybe the antrun plugin before making the war

On 7/19/06, Matt Raible <mraible@...> wrote:

> Hello all,
>
> I'm starting to convert AppFuse to be a Maven 2 project, and
> (hopefully) use Maven 2's archetype system to allow users to create
> new projects.
>
> Initially, I'm thinking of a directory structure that contains many
> different modules, maybe something like this:
>
> hibernate
> ibatis
> core (services and common dao/web/model classes, could also be named service)
> jsf
> tapestry
> struts-1
> struts-2
> springmvc (or spring-mvc)
>
> I'm also open to allowing the dao and web tiers to be nested, so they
> can be built and tested together:
>
> data
>    hibernate
>    ibatis
> core
> web
>    jsf
>    tapestry
>    etc.
>
> Which is a better way to structure things in our source control
> repository?  For the end user, hopefully it won't matter because
> they'll only have a few AppFuse dependencies in their pom.xml (i.e.
> appfuse-hibernate + appfuse-struts).  We can hopefully prompt them for
> a multi-module project or a single-module project, and create the
> directory structure appropriately.
>
> Currently, AppFuse uses Ant to "install" the various modules.  This is
> a pain because it requires parsing and replacing XML.  The good thing
> about it is it reduces duplication.  With Maven and separate modules,
> it seems like duplication might be a necessary evil.  For example,
> there are many common CSS/JavaScript files between the web framework
> implementations.  There's no way to copy these into each option's WAR
> at build-time is there?  The easiest way to solve this might be
> svn:externals AFAIK.
>
> Thanks,
>
> Matt
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@...
> For additional commands, e-mail: users-help@...
>
>


--
I could give you my word as a Spaniard.
No good. I've known too many Spaniards.
                             -- The Princess Bride

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@...
For additional commands, e-mail: users-help@...


Parent Message unknown RE: Converting AppFuse to a Maven 2 Project

by Jörg Schaible :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Matt,

Matt Raible wrote on Wednesday, July 19, 2006 7:56 AM:

[snip]

> With Maven and separate modules,
> it seems like duplication might be a necessary evil.  For example,
> there are many common CSS/JavaScript files between the web framework
> implementations.  There's no way to copy these into each option's WAR
> at build-time is there?  The easiest way to solve this might be
> svn:externals AFAIK.

Simply build a toolkit.war with your files to share. Let other wars dependend on it and anything will be copied over. See war plugin documentation.

- Jörg

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@...
For additional commands, e-mail: users-help@...


Re: Converting AppFuse to a Maven 2 Project

by Carlos Sanchez-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

even better ;)
http://maven.apache.org/plugins/maven-war-plugin/examples/war-overlay.html

On 7/19/06, Jörg Schaible <Joerg.Schaible@...> wrote:

> Hi Matt,
>
> Matt Raible wrote on Wednesday, July 19, 2006 7:56 AM:
>
> [snip]
>
> > With Maven and separate modules,
> > it seems like duplication might be a necessary evil.  For example,
> > there are many common CSS/JavaScript files between the web framework
> > implementations.  There's no way to copy these into each option's WAR
> > at build-time is there?  The easiest way to solve this might be
> > svn:externals AFAIK.
>
> Simply build a toolkit.war with your files to share. Let other wars dependend on it and anything will be copied over. See war plugin documentation.
>
> - Jörg
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@...
> For additional commands, e-mail: users-help@...
>
>


--
I could give you my word as a Spaniard.
No good. I've known too many Spaniards.
                             -- The Princess Bride

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@...
For additional commands, e-mail: users-help@...


Re: Converting AppFuse to a Maven 2 Project

by Alex Shneyderman :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

> Simply build a toolkit.war with your files to share. Let other wars dependend on it
> and anything will be copied over. See war plugin documentation.

WAR plugin does not allow for custom merging (web.xml,
springContext.xml, etc.), so take a look at cargo:uberwar
(cargo.codehaus.org). It allows for custom merging callbacks. Although
a pain in an ass to set up (hint: use latest snapshot)

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@...
For additional commands, e-mail: users-help@...


Cargo uberwar PITA (was RE: Converting AppFuse to a Maven 2 Project)

by vmassol :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Alex,

> -----Original Message-----
> From: Alex Shneyderman [mailto:a.shneyderman@...]
> Sent: mercredi 19 juillet 2006 13:42
> To: Maven Users List
> Subject: Re: Converting AppFuse to a Maven 2 Project

[snip]

> [...] so take a look at cargo:uberwar
> (cargo.codehaus.org). It allows for custom merging callbacks. Although
> a pain in an ass to set up (hint: use latest snapshot)

That's some interesting feedback! It would be real nice if you could send an
email to the cargo list explaining what you think is painful and how you
think it could be improved.

Thanks
-Vincent


       

       
               
___________________________________________________________________________
Découvrez un nouveau moyen de poser toutes vos questions quelque soit le sujet !
Yahoo! Questions/Réponses pour partager vos connaissances, vos opinions et vos expériences.
http://fr.answers.yahoo.com 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@...
For additional commands, e-mail: users-help@...


Re: Converting AppFuse to a Maven 2 Project

by mraible :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I started working on the Maven 2 conversion last night. I'm currently using Carlos's nested recommendation.

Here's a screenshot of the current structure:

http://raibledesigns.com/repository/images/appfuse2-structure.png

Using this structure, I get errors stating that the "data" and "web" parent projects should have a packaging type of "pom".  However, I want these projects to create their own JAR artifacts.  Should these be moved into "common" projects instead of having them in the root of data and web?

Thanks,

Matt

Re: Converting AppFuse to a Maven 2 Project

by Mike Perham-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message





common sounds right.  "Leaf" projects can be jar/war/pom/ear/etc.
Aggregating/parent projects must be pom.  You can hack a pom to have a
binary with the assembly plugin but it's a questionable design IMO.

mike

mraible <matt@...> wrote on 08/09/2006 11:23:51 AM:

>
> I started working on the Maven 2 conversion last night. I'm currently
using
> Carlos's nested recommendation.
>
> Here's a screenshot of the current structure:
>
> http://raibledesigns.com/repository/images/appfuse2-structure.png
>
> Using this structure, I get errors stating that the "data" and "web"
parent

> projects should have a packaging type of "pom".  However, I want these
> projects to create their own JAR artifacts.  Should these be moved into
> "common" projects instead of having them in the root of data and web?
>
> Thanks,
>
> Matt
> --
> View this message in context: http://www.nabble.com/Converting-
> AppFuse-to-a-Maven-2-Project-tf1964609.html#a5729055
> Sent from the Maven - Users forum at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@...
> For additional commands, e-mail: users-help@...
>

Re: Converting AppFuse to a Maven 2 Project

by Carlos Sanchez-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

yes, you need to move them to common

On 8/9/06, mraible <matt@...> wrote:

>
> I started working on the Maven 2 conversion last night. I'm currently using
> Carlos's nested recommendation.
>
> Here's a screenshot of the current structure:
>
> http://raibledesigns.com/repository/images/appfuse2-structure.png
>
> Using this structure, I get errors stating that the "data" and "web" parent
> projects should have a packaging type of "pom".  However, I want these
> projects to create their own JAR artifacts.  Should these be moved into
> "common" projects instead of having them in the root of data and web?
>
> Thanks,
>
> Matt
> --
> View this message in context: http://www.nabble.com/Converting-AppFuse-to-a-Maven-2-Project-tf1964609.html#a5729055
> Sent from the Maven - Users forum at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@...
> For additional commands, e-mail: users-help@...
>
>


--
I could give you my word as a Spaniard.
No good. I've known too many Spaniards.
                             -- The Princess Bride

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@...
For additional commands, e-mail: users-help@...


RE: Converting AppFuse to a Maven 2 Project

by Scott Ryan :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I posted a sample project on Jira and copied it to the appfuse group that
had a similar structure and had the poms set up to build correctly.  The
structure was close to what you are proposing.  I will see if i can dig it
up and you can just modify it to your liking.

Scott Ryan
Chief Technology Officer
Soaring Eagle L.L.C.
scott@...
www.soaringeagleco.com
(303) 263-3044

-----Original Message-----
From: mraible [mailto:matt@...]
Sent: Wednesday, August 09, 2006 10:24 AM
To: users@...
Subject: Re: Converting AppFuse to a Maven 2 Project



I started working on the Maven 2 conversion last night. I'm currently using
Carlos's nested recommendation.

Here's a screenshot of the current structure:

http://raibledesigns.com/repository/images/appfuse2-structure.png

Using this structure, I get errors stating that the "data" and "web" parent
projects should have a packaging type of "pom".  However, I want these
projects to create their own JAR artifacts.  Should these be moved into
"common" projects instead of having them in the root of data and web?

Thanks,

Matt
--
View this message in context:
http://www.nabble.com/Converting-AppFuse-to-a-Maven-2-Project-tf1964609.html
#a5729055
Sent from the Maven - Users forum at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@...
For additional commands, e-mail: users-help@...




---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@...
For additional commands, e-mail: users-help@...


RE: Converting AppFuse to a Maven 2 Project

by Scott Ryan :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Matt,
Check out the project attached to the jira ticket
http://jira.codehaus.org/browse/MOJO-315 .  It has a zip with a project
structure similar to what you are looking at and that should build and you
can use as a template.  It has been a while since I posted it but it may be
something you can modify to work.

Scott Ryan
Chief Technology Officer
Soaring Eagle L.L.C.
scott@...
www.soaringeagleco.com
(303) 263-3044

-----Original Message-----
From: mraible [mailto:matt@...]
Sent: Wednesday, August 09, 2006 10:24 AM
To: users@...
Subject: Re: Converting AppFuse to a Maven 2 Project



I started working on the Maven 2 conversion last night. I'm currently using
Carlos's nested recommendation.

Here's a screenshot of the current structure:

http://raibledesigns.com/repository/images/appfuse2-structure.png

Using this structure, I get errors stating that the "data" and "web" parent
projects should have a packaging type of "pom".  However, I want these
projects to create their own JAR artifacts.  Should these be moved into
"common" projects instead of having them in the root of data and web?

Thanks,

Matt
--
View this message in context:
http://www.nabble.com/Converting-AppFuse-to-a-Maven-2-Project-tf1964609.html
#a5729055
Sent from the Maven - Users forum at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@...
For additional commands, e-mail: users-help@...




---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@...
For additional commands, e-mail: users-help@...


Re: Converting AppFuse to a Maven 2 Project

by mraible :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

While this looks like an ideal solution, it doesn't appear to work as I'd like.

Since I have 4 web/war projects implementing the same thing, it'd be nice to put common files (i.e. filters, listeners) in a "common" project and have that one overlay the other war projects.  Eventually, I'm hoping users will be able to "double war overlay" and have the appfuse-jsf (and its dependent appfuse-web-common war) war project overlay theirs.

However, having the web-common war as a dependency for appfuse-jsf doesn't seem to work.  In my pom.xml, I have:

    <name>AppFuse JSF Module</name>
    <build>
        <defaultGoal>install</defaultGoal>
        <plugins>
            <plugin>
                <artifactId>maven-war-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    ...
        <dependency>
            <groupId>${pom.groupId}</groupId>
            <artifactId>appfuse-web-common</artifactId>
            <version>${pom.version}</version>
            <type>war</type>
        </dependency>

Yet when I compile appfuse-jsf, it doesn't find the classes in appfuse-web-common's WEB-INF/classes directory.  Seems like a bug to me.  I'm sure the solution is to create a JAR for web-common and a WAR for common-web, but I think it's more intuitive for the classloader to recognize classes from the overlayed WAR.

Another issue I'm seeing is that the dependencies from appfuse-web-common aren't recognized in appfuse-jsf.  For example, the following dependencies are in appfuse-web-common, and needed by appfuse-jsf as well.  However, appfuse-jsf doesn't find them when compiling.

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.4</version>
            <scope>provided</scope>
        </dependency>

I'm thought this might be an issue with <scope>provided</scope>, but I changed it to <scope>compile</scope> and the problem still exists.

How hard would it be to change the WAR overlay (or war dependency) to support class and dependency resolution?  I'm willing to do the work if someone can point me in the right direction.

Thanks,

Matt
Carlos Sanchez-4 wrote:
even better ;)
http://maven.apache.org/plugins/maven-war-plugin/examples/war-overlay.html

On 7/19/06, Jörg Schaible <Joerg.Schaible@elsag-solutions.com> wrote:
> Hi Matt,
>
> Matt Raible wrote on Wednesday, July 19, 2006 7:56 AM:
>
> [snip]
>
> > With Maven and separate modules,
> > it seems like duplication might be a necessary evil.  For example,
> > there are many common CSS/JavaScript files between the web framework
> > implementations.  There's no way to copy these into each option's WAR
> > at build-time is there?  The easiest way to solve this might be
> > svn:externals AFAIK.
>
> Simply build a toolkit.war with your files to share. Let other wars dependend on it and anything will be copied over. See war plugin documentation.
>
> - Jörg
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
> For additional commands, e-mail: users-help@maven.apache.org
>
>


--
I could give you my word as a Spaniard.
No good. I've known too many Spaniards.
                             -- The Princess Bride

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org