You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@maven.apache.org by Ed Hillmann <ed...@gmail.com> on 2011/05/03 00:08:26 UTC

Re: reordering the lifecycle

On Fri, Apr 29, 2011 at 5:05 PM, Ron Wheeler <rwheeler@artifact-software.com
> wrote:

> On 28/04/2011 5:35 PM, Justin Lee wrote:
>
>> I have a huge tree of ant based projects i'm trying to convert to maven.
>>  I
>> have the mechanics worked about except for a minor hitch:  I need the test
>> phase to be the last one executed.  Since all of this code is test code
>> there will be no artifacts to install, no deployments run.  But I need to,
>> say, generate the war files before surefire kicks off and runs the test.
>>  How can I do that?  Could I bind the surefire plugin to the install phase
>> instead?
>>
>>  Try to identify the "Maven way" to do what you are doing.
> Maven is not Ant.
>
> Don't be tempted to invent something new unless you are sure that no one
> else has ever tried to develop an application like yours.
> There is a Maven Best Practice for almost every situation and most likely
> thousands of people have already set up a project like yours. It somethings
> takes a bit of digging to find out the "right" way.
>
>
> Ron
>

Another option which I've found useful is separate the tests into a
different module from the code being tested.  This is quite
straight-forward, and you can use Maven dependencies to ensure the tests are
running against the right version of the WAR file.  So, you'd have the
original module that builds the WAR file (and whatever appropriate
Unit-level tests remaining in this module... any tests that don't require a
packaged and/or deployed WAR file), and a new module which contains only
those tests that require the WAR file.  I do this with my Selenium tests.

This is a nice Maven-way of doing it, ensuring I don't run my Selenium tests
if the WAR doesn't build.

Just another thought. :)

Thanks,
Ed

Re: reordering the lifecycle

Posted by Justin Lee <ev...@gmail.com>.
I understand and fully support The Maven Way.  But this is a tree of 500+
tests in this tree alone (there's at least another half dozen other trees)
I'm trying to script the conversion for.  There's a limit to how much I can
script reliably.  In this case the code being tested is built elsewhere.
 This tree generates artifacts (test wars and servlets, e.g.) that are
deployed and then used in testing.  But these artifacts and tests both live
in essentially the same maven module.  Yes, it's more than mildly crappy.
 Yes, there are betters ways to do this if you're starting from scratch.
 But this test code and the "framework" it's built on are 10+ years old in
some cases and far predate maven, testng, and junit.  I'm trying to bring
this code in to the 21st century bit by bit but I can only do so much at
once.  So for now, making the default goal "integration-test" is exactly
what I needed.

On Mon, May 2, 2011 at 6:08 PM, Ed Hillmann <ed...@gmail.com> wrote:

> On Fri, Apr 29, 2011 at 5:05 PM, Ron Wheeler <
> rwheeler@artifact-software.com
> > wrote:
>
> > On 28/04/2011 5:35 PM, Justin Lee wrote:
> >
> >> I have a huge tree of ant based projects i'm trying to convert to maven.
> >>  I
> >> have the mechanics worked about except for a minor hitch:  I need the
> test
> >> phase to be the last one executed.  Since all of this code is test code
> >> there will be no artifacts to install, no deployments run.  But I need
> to,
> >> say, generate the war files before surefire kicks off and runs the test.
> >>  How can I do that?  Could I bind the surefire plugin to the install
> phase
> >> instead?
> >>
> >>  Try to identify the "Maven way" to do what you are doing.
> > Maven is not Ant.
> >
> > Don't be tempted to invent something new unless you are sure that no one
> > else has ever tried to develop an application like yours.
> > There is a Maven Best Practice for almost every situation and most likely
> > thousands of people have already set up a project like yours. It
> somethings
> > takes a bit of digging to find out the "right" way.
> >
> >
> > Ron
> >
>
> Another option which I've found useful is separate the tests into a
> different module from the code being tested.  This is quite
> straight-forward, and you can use Maven dependencies to ensure the tests
> are
> running against the right version of the WAR file.  So, you'd have the
> original module that builds the WAR file (and whatever appropriate
> Unit-level tests remaining in this module... any tests that don't require a
> packaged and/or deployed WAR file), and a new module which contains only
> those tests that require the WAR file.  I do this with my Selenium tests.
>
> This is a nice Maven-way of doing it, ensuring I don't run my Selenium
> tests
> if the WAR doesn't build.
>
> Just another thought. :)
>
> Thanks,
> Ed
>