On Wed, 16 Feb 2005 15:54:53 -0800 (PST), James Adams
<[EMAIL PROTECTED]> wrote:
> Thanks Arnaud, this looks like a perfect solution.
> 
> Unfortunately I have two problems which I'm not sure
> how to handle:
> 
> 1. When I try the proposed solution I get an exception
> complaining about the j element not being bound.  For
> example:
> 
> Fatal Error [line 4, row 40]: The prefix "j" for
> element "j:set" is not bound.
> org.apache.maven.MavenException: Error parsing plugin
> script
> 

you haven't bound the jelly core tags namespace - here's the root
element from one of my maven.xmls as an example

<project 
  xmlns:j="jelly:core"
  xmlns:ant="jelly:ant"
  xmlns:x="jelly:xml"
> 

> Am I perhaps missing a Maven component which is not
> part of the default distribution ?
> 

it is part of the default distro, you just have to bind it (as with
other uses of XML namespaces)

> 2. Because I am using Eclipse I cannot have all of my
> projects in subdirectories under a main project
> directory.  Hence I have the myproj-app project which
> I'm using to build the EAR (there is no code in that
> project, it's just there for Maven build purposes).
> It's this project's directory that I'm using as a faux
> root directory.  Essentially my directory layout looks
> like this:
> 
> C:\dev\myproj-app
> C:\dev\myproj-ejb
> C:\dev\myproj-util
> C:\dev\myproj-web
> 
> For testing the proposed solution I have created a
> maven.xml and project.properties in C:\dev.  However I
> would like to have the myproj-app directory be the
> place where the original maven command is called.  I
> am planning to do something like the below in the
> maven.xml and project.properties under
> C:\dev\myproj-app:
> 
> --- maven.xml ---
> <project default="myproj:default">
>   <goal name="myproj:default" prereqs="ear:install">
>     <j:set var="goal" value="myproj:default"/>
>     <attainGoal name="multiproject:goal"/>
>   </goal>
> </project>
> 
> --- project.properties ---
> # Multiproject properties
> maven.multiproject.includes=../myproj-ejb/project.xml,../myproj-util/project.xml,../myproj-web/project.xml
> maven.multiproject.excludes=project.xml
> 
> Does this look reasonable ?  (I can't test it myself
> until I resolve issue #1 above, as it gives the same
> exceptions.)

Yeah looks like it will work to me. I guess you are thinking that the
relative paths does not perfectly encapsulate the dependencies of
myproj-app as it would be possible for it to fail if the relative
paths were wrong / did not exist? I think this way myself but it is a
fairly small issue and eclipse encourages you to check out all
projects to a single flat directory structure such as your own. You
could always write a bit of jelly script to test if the directories
are there and echo a warning if they are not

> 
> Thanks...
> 
> 
> --James
> 
> 
> --- Arnaud HERITIER <[EMAIL PROTECTED]> wrote:
> 
> > You're right, you can't do it by default.
> > But to do it, it's "very" simple.
> >
> > In each subproject you create a maven.xml file with
> > :
> >
> > - in myproj-util :
> > <project default="myproj:default">
> >   <goal name="myproj:default"
> > prereqs="jar:install"/>
> > </project>
> >
> > - in myproj-ejb :
> > <project default="myproj:default">
> >   <goal name="myproj:default"
> > prereqs="ejb:install"/>
> > </project>
> >
> > - in myproj-web :
> > <project default="myproj:default">
> >   <goal name="myproj:default"
> > prereqs="war:install"/>
> > </project>
> >
> > - in myproj-app :
> > <project default="myproj:default">
> >   <goal name="myproj:default"
> > prereqs="ear:install"/>
> > </project>
> >
> >
> > And in your project's root :
> > A maven.xml file :
> > <project default="myproj:default">
> >   <goal name="myproj:default">
> >     <j:set var="goal" value="myproj:default"/>
> >     <attainGoal name="multiproject:goal"/>
> >   </goal>
> > </project>
> >
> > A project.properties file :
> >
> > # Multiproject properties
> > maven.multiproject.includes=**/project.xml
> > maven.multiproject.excludes=project.xml
> >
> >
> > You type in your root directory : maven :-)
> >
> > Arnaud
> >
> >
> > > -----Message d'origine-----
> > > De : James Adams [mailto:[EMAIL PROTECTED]
> > > Envoy� : mercredi 16 f�vrier 2005 22:27
> > > � : Maven Users List
> > > Objet : Re: How to build a EAR with EJB and WAR
> > included ?
> > >
> > > Thanks for the help so far.  After some initial
> > confusion
> > > I've come up with a working solution.  I have
> > broken my
> > > project up into three separate projects
> > (myproj-util,
> > > myproj-ejb, and myproj-web) and created an overall
> > project
> > > for creating the EAR (myproj-app).
> > > I found
> > >
> >
> http://www-106.ibm.com/developerworks/java/library/j-maven/index.html
> > > to be a very helpful resource, with a good
> > explanation of how
> > > I can extend the main POM in order to have the
> > same version
> > > number across all of the modules.
> > >
> > > I'd like to come up with a way to run one maven
> > command to do
> > > the following:
> > >
> > > 1. create and install the
> > myproj-util-<version>.jar 2. create
> > > and install the myproj-ejb-<version>.jar 3. create
> > and
> > > install the myproj-web-<version>.war 4. create and
> > install
> > > the myproj-app-<version>.ear
> > >
> > > From what I can tell this is not possible with a
> > single maven
> > > command and I will have to cook up a script which
> > will call
> > > the jar:install, ejb:install, war:install, and
> > ear:install
> > > maven goals from the proper directories.  Is this
> > really the
> > > case, or am I missing something ?
> > >
> > >
> > > --James
> > >
> > >
> > >
> 
> __________________________________________________
> Do You Yahoo!?
> Tired of spam?  Yahoo! Mail has the best spam protection around
> http://mail.yahoo.com
> 
> ---------------------------------------------------------------------
> 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]

Reply via email to