Re: Are Maven profiles like Ant targets?

2008-12-22 Thread Trevor Harmon

On Dec 19, 2008, at 4:24 PM, Baptiste MATHUS wrote:

And I'm also really wondering why you try to use maven in what seems  
to me

an ant-ish way.


I made a mistake in even mentioning Ant. It seems to give a sense that  
I'm closed-minded and unable to think in the Maven way. I should  
have simply asked, How do I do such-and-such in Maven? and left it  
at that.



If you need more specific and totally unrelated tasks, and
you don't want a predefined packaging lifecycle


I don't know how I've given the impression that I'm trying to avoid  
the Maven lifecycle, or that I somehow want to twist Maven into an Ant  
clone. I'm simply giving examples of use cases that are common in my  
development cycle and wanting to know how to implement them with Maven.



like maven provides you
with, why don't you simply use ant alone?


We used to use Ant, but the management decided to switch to Maven. I  
guess the idea was to take advantage of the broader Maven features  
such as dependency resolution, convention-over-configuration, and so on.


However, I'm now facing difficulty trying to do things in Maven that  
we used to do with Ant -- building an installer, launching desktop  
apps in two different ways, etc. It seems that Maven makes some tasks  
very simple, but at the same time it makes others very complex.


Trevor


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



RE: Are Maven profiles like Ant targets?

2008-12-22 Thread Todd Thiessen
 -Original Message-
 From: Trevor Harmon [mailto:tre...@vocaro.com] 
 
 I don't know how I've given the impression that I'm trying to 
 avoid the Maven lifecycle

I get this impression from you when you ask about how to run tasks, that
are specific to a particular project, directly from a UI or the command
line. The whole mantra Convention over Configuration is to not have to
define specific new tasks for a project but rather to think about how
this task is related to the overall build lifecycle and plug it into the
appropriate place.
 
 However, I'm now facing difficulty trying to do things in 
 Maven that we used to do with Ant -- building an installer, 
 launching desktop apps in two different ways, etc. It seems 
 that Maven makes some tasks very simple, but at the same time 
 it makes others very complex.

I think the question you need to ask yourself is how are these tasks
related to the build lifecycle of your project. For example, when during
the build do you want to launch an app in one way and when do you want
to launch it in another?  I think the reason why you are having so much
trouble with Maven is that you want to configure it to do what you
want by giving it a specific command.

I do agree with you that it is more complex in the sense that Maven does
require more upfront thought regarding how a task fits into the
lifecycle. But this isn't necessarily a bad thing.

---
Todd Thiessen

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



Re: Are Maven profiles like Ant targets?

2008-12-22 Thread Trevor Harmon

On Dec 22, 2008, at 12:38 PM, Todd Thiessen wrote:


I think the reason why you are having so much
trouble with Maven is that you want to configure it to do what you
want by giving it a specific command.


But actually, I can give Maven a specific command to do what I  
want ... as long as a plugin exists for it. Take for example DocBook.  
There's a plugin for that, so I can invoke one of its goals  
explicitly, or at the same time I can have it run automatically by  
binding it to a phase. That's exactly the kind of flexibility I need.


For install4j, however, there's no plugin, so I have to emulate one  
with AntRun. That's when my problems start, since there's no way to  
target a particular AntRun configuration without using profiles.


So I think the lesson here is that I should try to avoid AntRun and  
Exec, and use a specific plugin for the task, even if that means  
writing my own.


Trevor


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



RE: Are Maven profiles like Ant targets?

2008-12-22 Thread Todd Thiessen
Trevor

Its the culture I think your missing. Yes you can call goals directly
but this isn't something you should be needing very often. It isn't the
Maven way as they say nor does it follow Convention over
configuration.  If you find yourself calling a plugin goal directly all
the time you should be asking yourself why.

Good luck.

---
Todd Thiessen
 

 -Original Message-
 From: Trevor Harmon [mailto:tre...@vocaro.com] 
 Sent: Monday, December 22, 2008 1:49 PM
 To: Maven Users List
 Subject: Re: Are Maven profiles like Ant targets?
 
 On Dec 22, 2008, at 12:38 PM, Todd Thiessen wrote:
 
  I think the reason why you are having so much trouble with Maven is 
  that you want to configure it to do what you want by giving it a 
  specific command.
 
 But actually, I can give Maven a specific command to do what 
 I want ... as long as a plugin exists for it. Take for 
 example DocBook.  
 There's a plugin for that, so I can invoke one of its goals 
 explicitly, or at the same time I can have it run 
 automatically by binding it to a phase. That's exactly the 
 kind of flexibility I need.
 
 For install4j, however, there's no plugin, so I have to 
 emulate one with AntRun. That's when my problems start, since 
 there's no way to target a particular AntRun configuration 
 without using profiles.
 
 So I think the lesson here is that I should try to avoid 
 AntRun and Exec, and use a specific plugin for the task, even 
 if that means writing my own.
 
 Trevor
 
 
 -
 To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
 For additional commands, e-mail: users-h...@maven.apache.org
 
 

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



Re: Are Maven profiles like Ant targets?

2008-12-22 Thread Baptiste MATHUS
2008/12/22 Todd Thiessen thies...@nortel.com

 Trevor

 Its the culture I think your missing. Yes you can call goals directly
 but this isn't something you should be needing very often. It isn't the


+1. I only know maybe 10 special goals or so, mostly for debugging purpose
(dependency:list or tree, dependency:purge-local-repository,
help:effective-settings, test, verify...)

I almost call them directly. For example, I don't think I ran mvn install
once during the last 2 or 3 months. Since it's just a task CI will handle
better than me.

If you need docbook generation, that's the same. Bind it to some phase, and
just generate it automatically.

Cheers

-- 
Baptiste


Re: Are Maven profiles like Ant targets?

2008-12-20 Thread Alex Athanasopoulos
This reminds me of this best practice that uses a single maven profile to
run an ant task:

http://ionixx.wordpress.com/2008/03/10/running-specified-ant-tasks-within-maven2-outside-the-lifecycle/

Basically, you can run an ant target from maven like this:  mvn -Pant
-Dtarget=my-target.

This is better than using ant alone, because it lets maven construct an
appropriate classpath which the ant target can use.

So, maven tasks were not designed to be like ant targets, but can be used
like them, if you're using ant targets as standalone scripts outside of the
build lifecycle.

-Alex


Re: Are Maven profiles like Ant targets?

2008-12-19 Thread Baptiste MATHUS
2008/12/18 Martin Höller mar...@xss.co.at


 
  Yes, that's what I've been doing, but you said I was doing it wrong.

 In your original mail you tried to use profiles like you would use tasks in
 ant. That's not the maven way and that's what I meant when I was saying you
 are doing it wrong. I never said using profiles is wrong.


And btw, the subject was Are Maven profiles like ant targets ?
The answer was clearly no. I guess it also started with this :-).

And I'm also really wondering why you try to use maven in what seems to me
an ant-ish way. If you need more specific and totally unrelated tasks, and
you don't want a predefined packaging lifecycle like maven provides you
with, why don't you simply use ant alone?

Imo, Ant can turn your head upside down to configure a whole project
packaging/testing/site generation/etc. (I mean without things like Ivy or
so, I guess). But it seems almost better than maven to execute a specific
task in the way we sometimes do with specific plugin goal (still in my
opinion).

Cheers.

-- 
Baptiste Batmat MATHUS - http://batmat.net
Save a tree,
Eat a beaver!


Re: Are Maven profiles like Ant targets?

2008-12-18 Thread Martin Höller
On Wednesday 17 December 2008 Trevor Harmon wrote:
 On Dec 17, 2008, at 12:18 PM, Martin Höller wrote:
  Ok. My approach would then be to create one profile which is only
  executed
  before releasing or when running in the contiuous-integration
  server. This
  profile would configure the antrun plugin to execute install4j, run
  integration tests, and do some other time-consuming work.

 Yes, that's what I've been doing, but you said I was doing it wrong.

In your original mail you tried to use profiles like you would use tasks in 
ant. That's not the maven way and that's what I meant when I was saying you 
are doing it wrong. I never said using profiles is wrong.

  You say it: it runs all of the _configurations_, but it's still only
  _one_
  goal that runs. In this case the 'run' goal of the antrun plugin. The
  antrun plugin is kind of special as it runs ant task within maven,
  which
  doesn't have the concept of tasks.

 The exec plugin is like that too, and I find both to be very integral
 to the development process. Perhaps these plugins need a new feature
 that allows the user to specify which configuration is used.

Yes, maybe. However, adding such a feature is quite equivalent to using 
profiles to select a configuration. And this is how it all started ;-)

- martin


signature.asc
Description: This is a digitally signed message part.


Re: Are Maven profiles like Ant targets?

2008-12-17 Thread Martin Höller
On Tuesday 16 December 2008 Trevor Harmon wrote:
 On Dec 16, 2008, at 10:42 AM, Martin Höller wrote:
  You are doing it wrong. Maven has no targets like ant has. Maven has
  lifecylces [0] which is built of phases (e.g. 'compile', package',
  'install'). Plugins are attached to phases and are executed whenever
  a phase is executed.

 Well, without profiles, I don't know how to do it right. For example,
 I use the AntRun plugin to invoke install4j, which builds installers
 for my artifact. Binding this to the deploy phase probably makes the
 most sense, but if I do that, the deploy goal of the deploy plugin
 also runs. There's no way to tell Maven to just run the install4j stuff.

The problem is, that you are still thinking in ant tasks. Maven doesn't 
provide those tasks, it just knows about a lifecyle and its few phases.

I don't  know anything about install4j but from what you wrote it seems the 
work it does should be done in the package phase. So try to configure your 
antrun plugin to execute the install4j task in the package phase. This way 
install4j will be executed whenever it needs to, i.e. when the package 
phase or one of its successors is going to be excuted.

 If, however, I split off the install4j stuff into an install4j
 profile and bind it to the package phase, then I can do:

mvn -Pinstall4j package

Why would you have to use a profile for this? For attaching the antrun 
plugin to the package phase you don't have to use any profile.

 And suddenly Maven does exactly what I want: It runs install4j and
 nothing else.

If you really want maven to do only _one_ specific thing (which is most of 
the time not the common way) you can execute a single plugin goal by 
specifying just this goal, e.g. mvn deploy:deploy-file or mvn 
antrun:run.

hth,
- martin


signature.asc
Description: This is a digitally signed message part.


Re: Are Maven profiles like Ant targets?

2008-12-17 Thread Martin Höller
On Tuesday 16 December 2008 Trevor Harmon wrote:
 Let me use a different plugin as an example. Let's say I'm developing
 a desktop application, and it runs in two different modes depending on
 the command-line options. I don't want to keep typing in the same long
 string of options all the time, so I pickle them into two separate Ant
 targets, mode1 and mode2. Then I can run them like this:

 ant mode1
 ant mode2

I would say that is what profiles are for: to configure plugin's in 
different ways.

But that is not even similar to ant's tasks. It's switching the build 
configuration, not executing another task.

And BTW: Maven's primary goal is to help building and packaging software, 
not starting the developed piece of software, so IMHO the exec-plugin is 
not a good example here.

hth,
- martin


signature.asc
Description: This is a digitally signed message part.


Re: Are Maven profiles like Ant targets?

2008-12-17 Thread Trevor Harmon

On Dec 17, 2008, at 9:14 AM, Todd Thiessen wrote:


This prints hello and goodbye as part of the clean phase.

...

Doesn't this fit your needs?


No, it doesn't fit my needs because it always prints both hello and  
goodbye. I want to print either hello or goodbye.


For example, in the scenario I mentioned earlier, I want to launch a  
desktop application with one particular command-line configuration.  
With your solution, I'd be launching the app multiple times. That's  
certainly not what I want.


I've attached a rewrite of your code that uses profiles to select  
which configuration is run. For instance:


mvn -Phello clean
mvn -Pgoodbye clean

Or I can do both at once:

mvn -Phello,goodbye clean

Is there a way to accomplish this without profiles?

Trevor

?xml version=1.0 encoding=UTF-8?
project xmlns=http://maven.apache.org/POM/4.0.0;
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance;
xsi:schemaLocation=http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd;

modelVersion4.0.0/modelVersion
groupIdcom.vocaro/groupId
artifactIdantrun/artifactId
version1.0/version
packagingpom/packaging

profiles
profile
idhello/id
build
plugins
plugin
groupIdorg.codehaus.mojo/groupId
artifactIdexec-maven-plugin/artifactId
executions
execution
idprint-hello/id
phaseclean/phase
goals
goalexec/goal
/goals
configuration
executableecho/executable
arguments
argumenthello/argument
/arguments
/configuration
/execution
/executions
/plugin
/plugins
/build
/profile
profile
idgoodbye/id
build
plugins
plugin
groupIdorg.codehaus.mojo/groupId
artifactIdexec-maven-plugin/artifactId
executions
execution
idprint-goodbye/id
phaseclean/phase
goals
goalexec/goal
/goals
configuration
executableecho/executable
arguments
argumentgoodbye/argument
/arguments
/configuration
/execution
/executions
/plugin
/plugins
/build
/profile
/profiles

/project




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

Re: Are Maven profiles like Ant targets?

2008-12-17 Thread Trevor Harmon

On Dec 17, 2008, at 3:33 AM, Martin Höller wrote:


  mvn -Pinstall4j package


Why would you have to use a profile for this?


Because it takes five minutes to run. I don't want to wait five  
minutes every time I package, install, or deploy my code. The  
install4j stuff only needs to happen when we're ready to ship the  
final installer to the customer. Without profiles, I don't know how to  
exercise control over when this time-consuming process kicks off.


If you really want maven to do only _one_ specific thing (which is  
most of

the time not the common way) you can execute a single plugin goal by
specifying just this goal, e.g. mvn deploy:deploy-file or mvn
antrun:run.


No, specifying a single goal does not run a single goal, it runs ALL  
of the configurations for that goal. I've attached a sample POM to  
demonstrate. Try this:


  mvn antrun:run package

You will see both of the antrun:run configurations run.

In that same POM, I've also shown how to run just one of the  
configurations using profiles. For example:


  mvn -Phello package
  mvn -Pgoodbye package

Is there a way to achieve that without profiles?

Trevor

?xml version=1.0 encoding=UTF-8?
project xmlns=http://maven.apache.org/POM/4.0.0;
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance;
xsi:schemaLocation=http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd;

modelVersion4.0.0/modelVersion
groupIdcom.vocaro/groupId
artifactIdantrun/artifactId
version1.0/version
packagingpom/packaging

build
plugins
plugin
artifactIdmaven-antrun-plugin/artifactId
executions
execution
idsay-hello/id
phasepackage/phase
configuration
tasks
echohello/echo
/tasks
/configuration
goals
goalrun/goal
/goals
/execution
/executions
/plugin
plugin
artifactIdmaven-antrun-plugin/artifactId
executions
execution
idsay-goodbye/id
phasepackage/phase
configuration
tasks
echogoodbye/echo
/tasks
/configuration
goals
goalrun/goal
/goals
/execution
/executions
/plugin
/plugins
/build

profiles
profile
idhello/id
build
plugins
plugin
artifactIdmaven-antrun-plugin/artifactId
executions
execution
idsay-hello/id
phasepackage/phase
configuration
tasks
echohello (profile)/echo
/tasks
/configuration
goals
goalrun/goal
/goals
/execution
/executions
/plugin
/plugins
/build
/profile
profile
idgoodbye/id
build
plugins
plugin
artifactIdmaven-antrun-plugin/artifactId
executions
execution
idsay-goodbye/id
phasepackage/phase
configuration
tasks
echogoodbye (profile)/echo
/tasks
/configuration
goals
goalrun/goal
/goals
/execution
/executions
/plugin
/plugins
/build
/profile
/profiles

/project




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

Re: Are Maven profiles like Ant targets?

2008-12-17 Thread Martin Höller
On Wednesday 17 December 2008 Trevor Harmon wrote:
 On Dec 17, 2008, at 3:33 AM, Martin Höller wrote:
mvn -Pinstall4j package
 
  Why would you have to use a profile for this?

 Because it takes five minutes to run.

Ok. My approach would then be to create one profile which is only executed 
before releasing or when running in the contiuous-integration server. This 
profile would configure the antrun plugin to execute install4j, run 
integration tests, and do some other time-consuming work.

  If you really want maven to do only _one_ specific thing (which is
  most of
  the time not the common way) you can execute a single plugin goal by
  specifying just this goal, e.g. mvn deploy:deploy-file or mvn
  antrun:run.

 No, specifying a single goal does not run a single goal, it runs ALL
 of the configurations for that goal.

You say it: it runs all of the _configurations_, but it's still only _one_ 
goal that runs. In this case the 'run' goal of the antrun plugin. The 
antrun plugin is kind of special as it runs ant task within maven, which 
doesn't have the concept of tasks. All other plugins usually do just one 
thing.

I think Geoffrey hit the nail on the head: we are not trying to say you 
should't use profiles. It's just that profiles in maven and tasks in ant 
are not the same.

hth,
- martin


signature.asc
Description: This is a digitally signed message part.


Re: Are Maven profiles like Ant targets?

2008-12-17 Thread Martin Höller
On Wednesday 17 December 2008 Trevor Harmon wrote:
 On Dec 17, 2008, at 3:54 AM, Martin Höller wrote:
  And BTW: Maven's primary goal is to help building and packaging
  software,
  not starting the developed piece of software, so IMHO the exec-
  plugin is
  not a good example here.

 Well I have to disagree with you there. Testing is also not about
 building and packaging software, yet Maven provides lots of support
 for testing because it's such an integral part of the development
 process.

What i meant with building and packaging included testing, so I think we 
could agree here rather than disagree.

 Launching a desktop application that's being developed is 
 part of testing too.

At least it's not automated testing, but we are getting off-topic here.

Anyway, I didn't say don't use profiles. Actually I told you that I would 
use profiles in this special case.

 Also, I don't want to maintain separate scripts in a separate language
 just to launch an application. How would I make sure that the source
 code has been compiled? How would I locate all the dependent JARs?
 These problems are handled by the exec plugin, so I see no reason not
 to use it just because profiles are bad.

Profiles are not bad, they are just not equals to ant tasks.

 I simply want to keep everything contained within Maven, like I was
 able to do with Ant. For example, in Ant I was able to define targets
 like run-test1 and run-test2 that had dependencies on compile
 and jar. That way, whenever I ran either test, Ant would make sure
 that the JAR was up to date with the latest code. I don't know of any
 way to duplicate this functionality without using profiles.

I still think the problem is that you are trying the solve your problems the 
ant way, but with maven as your tool.

hth,
- martin


signature.asc
Description: This is a digitally signed message part.


RE: Are Maven profiles like Ant targets?

2008-12-17 Thread Todd Thiessen
Hmmm. Did you try putting something like this in your POM?
  ...
  plugin
groupIdorg.codehaus.mojo/groupId
artifactIdexec-maven-plugin/artifactId
executions
  execution
idprint-hello/id
phaseclean/phase
goals
  goalexec/goal
/goals
configuration
  executableecho/executable
  arguments
argumenthello/argument
  /arguments
/configuration
  /execution
  execution
idprint-goodbye/id
phaseclean/phase
goals
  goalexec/goal
/goals
configuration
  executableecho/executable
  arguments
argumentgoodbye/argument
  /arguments
/configuration
  /execution
/executions
  /plugin
  ...

This prints hello and goodbye as part of the clean phase.  All I had to
do was issue the following mvn command:

mvn clean

and it printed both hello and goodbye by executing two commands at the
command line. You can of course bind something like this to any phase
you like.

Doesn't this fit your needs?

---
Todd Thiessen
 

 -Original Message-
 From: Trevor Harmon [mailto:tre...@vocaro.com] 
 Sent: Tuesday, December 16, 2008 6:02 PM
 To: Maven Users List
 Subject: Re: Are Maven profiles like Ant targets?
 
 On Dec 16, 2008, at 5:24 PM, Todd Thiessen wrote:
 
  I believe there is. Plugin can have different executions. There is 
  some documentation about that here:
 
  
 http://maven.apache.org/guides/introduction/introduction-to-the-lifecy
  cl
  e.html#Plugins
 
 But that doesn't work for the exec plugin. I'd be grateful if 
 someone could prove me wrong.
 
  and I believe the definitive guide has some examples too.
 
 No, in the book they always pass the exec arguments on the 
 command line. See:
 
 http://books.sonatype.com/maven-book/reference/customizing.htm
 l#section-custom-exec
 
  But you still would have to bind it to a phase, which you 
 don't want 
  to do.
 
 I'm not trying to avoid anything. If binding to a phase would 
 solve the problems, then I'd do it. But simply binding a 
 plugin to a phase is not enough, for reasons I have shown.
 
  So I agree with you that Maven is definitely heavy weight 
 if all you 
  wish to do is execute an exe with different parameters each time.
  It doesn't do this nicely. You probably just want a simple 
 script for 
  that.
 
 Or I could just use profiles.
 
 Trevor
 
 
 -
 To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
 For additional commands, e-mail: users-h...@maven.apache.org
 
 

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



Re: Are Maven profiles like Ant targets?

2008-12-17 Thread Trevor Harmon

On Dec 17, 2008, at 12:18 PM, Martin Höller wrote:

Ok. My approach would then be to create one profile which is only  
executed
before releasing or when running in the contiuous-integration  
server. This

profile would configure the antrun plugin to execute install4j, run
integration tests, and do some other time-consuming work.


Yes, that's what I've been doing, but you said I was doing it wrong. I  
just wanted to make sure that profiles were the only way to do it in  
Maven, or if there was some other technique I didn't know about.


You say it: it runs all of the _configurations_, but it's still only  
_one_

goal that runs. In this case the 'run' goal of the antrun plugin. The
antrun plugin is kind of special as it runs ant task within maven,  
which

doesn't have the concept of tasks.


The exec plugin is like that too, and I find both to be very integral  
to the development process. Perhaps these plugins need a new feature  
that allows the user to specify which configuration is used. Something  
like:


  mvn exec:java:config1
  mvn exec:java:config2
  mvn antrun:run:config1
  mvn antrun:run:config2

Trevor


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



Re: Are Maven profiles like Ant targets?

2008-12-17 Thread Geoffrey Wiseman
On Wed, Dec 17, 2008 at 12:17 PM, Trevor Harmon tre...@vocaro.com wrote:

 Yes, I was trying to simplify things with that subject line but I guess I
 just made them more confusing. Perhaps a better question would be, Are
 Maven profiles the only way to accomplish what I was able to accomplish with
 Ant targets?

 I hadn't thought about using modules for this; I will look into it.


Although I will note that it wouldn't be uncommon to include or exclude
modules using profiles, which might take you back to where you are now.  ;)

-- 
Geoffrey Wiseman
http://www.geoffreywiseman.ca/


Re: Are Maven profiles like Ant targets?

2008-12-17 Thread Trevor Harmon

On Dec 17, 2008, at 3:54 AM, Martin Höller wrote:

And BTW: Maven's primary goal is to help building and packaging  
software,
not starting the developed piece of software, so IMHO the exec- 
plugin is

not a good example here.


Well I have to disagree with you there. Testing is also not about  
building and packaging software, yet Maven provides lots of support  
for testing because it's such an integral part of the development  
process. Launching a desktop application that's being developed is  
part of testing too.


Also, I don't want to maintain separate scripts in a separate language  
just to launch an application. How would I make sure that the source  
code has been compiled? How would I locate all the dependent JARs?  
These problems are handled by the exec plugin, so I see no reason not  
to use it just because profiles are bad.


I simply want to keep everything contained within Maven, like I was  
able to do with Ant. For example, in Ant I was able to define targets  
like run-test1 and run-test2 that had dependencies on compile  
and jar. That way, whenever I ran either test, Ant would make sure  
that the JAR was up to date with the latest code. I don't know of any  
way to duplicate this functionality without using profiles.


Trevor


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



Re: Are Maven profiles like Ant targets?

2008-12-17 Thread Trevor Harmon

On Dec 17, 2008, at 11:45 AM, Geoffrey Wiseman wrote:

All I'm really trying to say (and I suspect what others are trying  
to say)
is that the answer to your original question, Are profiles intended  
to play

the same role as Ant targets? is No.  They aren't.


Yes, I was trying to simplify things with that subject line but I  
guess I just made them more confusing. Perhaps a better question would  
be, Are Maven profiles the only way to accomplish what I was able to  
accomplish with Ant targets?


I hadn't thought about using modules for this; I will look into it.

Trevor


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



Re: Are Maven profiles like Ant targets?

2008-12-17 Thread Geoffrey Wiseman
On Wed, Dec 17, 2008 at 11:17 AM, Trevor Harmon tre...@vocaro.com wrote:

 No, it doesn't fit my needs because it always prints both hello and
 goodbye. I want to print either hello or goodbye.

 For example, in the scenario I mentioned earlier, I want to launch a
 desktop application with one particular command-line configuration. With
 your solution, I'd be launching the app multiple times. That's certainly not
 what I want.

 I've attached a rewrite of your code that uses profiles to select which
 configuration is run. For instance:

 mvn -Phello clean
 mvn -Pgoodbye clean

 Or I can do both at once:

 mvn -Phello,goodbye clean

 Is there a way to accomplish this without profiles?


In some of the examples you used previously (installer, docbook), I'd
probably be inclined to make each of these modules if I were trying to
follow The Maven Way.  Then again, you can certainly do what you're
currently doing, if it works for you.  Finally, you could use a tool that's
intended to accomplish relatively arbitrary tasks, like Ant.

All of those will work, and it's up to you decide what makes sense for you.

All I'm really trying to say (and I suspect what others are trying to say)
is that the answer to your original question, Are profiles intended to play
the same role as Ant targets? is No.  They aren't.  Doesn't mean you
can't use 'em that way, but if you're trying to understand the Maven
approach to accomplishing what you're going for, I'd say that using profiles
this way is not really the intent.

  - Geoffrey
-- 
Geoffrey Wiseman
http://www.geoffreywiseman.ca/


Re: Are Maven profiles like Ant targets?

2008-12-16 Thread Geoffrey Wiseman
On Tue, Dec 16, 2008 at 10:27 AM, Trevor Harmon tre...@vocaro.com wrote:

 I'm coming from the Ant world, where targets are fundamental. Need to
 generate the JavaDocs and a JAR? Write targets called javadoc and jar
 then do:

  ant javadoc
  ant jar

 In Maven, these particular tasks have built-in plugins, so there's no need
 to write a target. Instead you just invoke the plugin goal:

  mvn javadoc:javadoc
  mvn jar:jar

 But there are many scenarios in which no plugin is available. For instance,
 I use install4j to build an installer, and I use DocBook to translate XML
 into PDF. Accomplishing these tasks with the AntRun plugin is easy enough,
 but it's not clear how to actually invoke them. The Ant concept of a target
 does not exist in Maven.

 Maven does have profiles, however. I'm able to put the install4j stuff into
 a profile called install4j and the DocBook stuff into a profile called
 docbook. Then I can do:

  mvn -Pinstall4j
  mvn -Pdocbook

 This works, but from an end-user standpoint it's a little confusing. For
 some things you invoke a plugin goal but for other things you invoke a
 profile. It's inconsistent. Also, the Build Profiles chapter of the Maven
 book mentions nothing about this use case. It only talks about profiles for
 the purpose of build portability.

 So... am I doing this right? Are profiles intended to play the role of Ant
 targets? Or is there some other mechanism for that?


I wouldn't say that profiles are analagous to Ant targets, no; you might be
able to make them react that way, but that's not really the intent.
The closest analog to an Ant target is a maven lifecycle phase, like
install; there's a pre-defined lifecycle that Maven follows, and you can
bind plugins of your choosing to that lifecycle.  This works well in many
'build' scenarios, but it's also true that Maven is tailored around those
kind of environments, and isn't as well suited for the world of execute
some arbitrary work for me as Ant would be.

That said, it's not hard to imagine using Maven to build an installer or
some Docbook documentation; each of these might be a module on a larger
multi-module project.

  - Geoffrey
-- 
Geoffrey Wiseman
http://www.geoffreywiseman.ca/


Re: Are Maven profiles like Ant targets?

2008-12-16 Thread Martin Höller
On Tuesday 16 December 2008 Trevor Harmon wrote:
[...]
 So... am I doing this right? Are profiles intended to play the role of
 Ant targets? Or is there some other mechanism for that?

You are doing it wrong. Maven has no targets like ant has. Maven has
lifecylces [0] which is built of phases (e.g. 'compile', package',
'install'). Plugins are attached to phases and are executed whenever
a phase is executed.

Profiles are used to configure plugins in different ways.

Start reading the documentation at [1] and especially the books
Better builds with Maven and Maven - The Definitve Guide. Both
are available online for free. Search this archive or google it.

hth,
- martin

[0] 
http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
[1] http://maven.apache.org/guides/index.html


signature.asc
Description: This is a digitally signed message part.


RE: Are Maven profiles like Ant targets?

2008-12-16 Thread Todd Thiessen
You probably want to use a plugin.  For instance you could use the
DocBook plugin.

http://maven-plugins.sourceforge.net/maven-sdocbook-plugin/index.html

Once you have this plugin you can simply run the command:

mvn sdocbook

You will also want to get a better understanding of Maven's build
lifecycle and undertand how lifecycles, phases and goals are related.
It is more complex than ant targets but is also far more powerful.

http://books.sonatype.com/maven-book/reference/lifecycle.html

Ultimately, you will want to hide the fact that your particular project
is using  DocBook by binding these goals to a certain phase of the build
lifecycle. ie: you will never have to run the mvn sdocbook command
explicitly (although you still could if you needed to). What part of the
lifecycle will be up to you but creating PDFs would likely best be
sutied to the site lifecycle.

Good luck.

---
Todd Thiessen
 

 -Original Message-
 From: Trevor Harmon [mailto:tre...@vocaro.com] 
 Sent: Tuesday, December 16, 2008 10:28 AM
 To: Maven Users List
 Subject: Are Maven profiles like Ant targets?
 
 I'm coming from the Ant world, where targets are fundamental. 
 Need to generate the JavaDocs and a JAR? Write targets called 
 javadoc and jar then do:
 
ant javadoc
ant jar
 
 In Maven, these particular tasks have built-in plugins, so 
 there's no need to write a target. Instead you just invoke 
 the plugin goal:
 
mvn javadoc:javadoc
mvn jar:jar
 
 But there are many scenarios in which no plugin is available. 
 For instance, I use install4j to build an installer, and I 
 use DocBook to translate XML into PDF. Accomplishing these 
 tasks with the AntRun plugin is easy enough, but it's not 
 clear how to actually invoke them.  
 The Ant concept of a target does not exist in Maven.
 
 Maven does have profiles, however. I'm able to put the 
 install4j stuff into a profile called install4j and the 
 DocBook stuff into a profile called docbook. Then I can do:
 
mvn -Pinstall4j
mvn -Pdocbook
 
 This works, but from an end-user standpoint it's a little confusing.  
 For some things you invoke a plugin goal but for other things 
 you invoke a profile. It's inconsistent. Also, the Build 
 Profiles chapter of the Maven book mentions nothing about 
 this use case. It only talks about profiles for the purpose 
 of build portability.
 
 So... am I doing this right? Are profiles intended to play 
 the role of Ant targets? Or is there some other mechanism for that?
 
 Trevor
 
 
 -
 To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
 For additional commands, e-mail: users-h...@maven.apache.org
 
 

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



Are Maven profiles like Ant targets?

2008-12-16 Thread Trevor Harmon
I'm coming from the Ant world, where targets are fundamental. Need to  
generate the JavaDocs and a JAR? Write targets called javadoc and  
jar then do:


  ant javadoc
  ant jar

In Maven, these particular tasks have built-in plugins, so there's no  
need to write a target. Instead you just invoke the plugin goal:


  mvn javadoc:javadoc
  mvn jar:jar

But there are many scenarios in which no plugin is available. For  
instance, I use install4j to build an installer, and I use DocBook to  
translate XML into PDF. Accomplishing these tasks with the AntRun  
plugin is easy enough, but it's not clear how to actually invoke them.  
The Ant concept of a target does not exist in Maven.


Maven does have profiles, however. I'm able to put the install4j stuff  
into a profile called install4j and the DocBook stuff into a profile  
called docbook. Then I can do:


  mvn -Pinstall4j
  mvn -Pdocbook

This works, but from an end-user standpoint it's a little confusing.  
For some things you invoke a plugin goal but for other things you  
invoke a profile. It's inconsistent. Also, the Build Profiles chapter  
of the Maven book mentions nothing about this use case. It only talks  
about profiles for the purpose of build portability.


So... am I doing this right? Are profiles intended to play the role of  
Ant targets? Or is there some other mechanism for that?


Trevor


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



Re: Are Maven profiles like Ant targets?

2008-12-16 Thread Trevor Harmon

On Dec 16, 2008, at 10:43 AM, Todd Thiessen wrote:


You probably want to use a plugin.  For instance you could use the
DocBook plugin.

http://maven-plugins.sourceforge.net/maven-sdocbook-plugin/index.html


The sdocbook plugin does not work with Maven 2.

I also tried the more recent docbook plugin:

http://mojo.codehaus.org/docbook-maven-plugin/

But it's in a very alpha stage and lacks basic features (e.g. PDF  
generation).


That's why I'm using the AntRun plugin; it gives me access to Ant's  
Xslt task for transforming DocBook.



You will also want to get a better understanding of Maven's build
lifecycle and undertand how lifecycles, phases and goals are related.
It is more complex than ant targets but is also far more powerful.

http://books.sonatype.com/maven-book/reference/lifecycle.html


I'm familiar with the lifecycles, but it's strange you should say they  
are more powerful than Ant targets because they seem less powerful, at  
least when using the AntRun plugin. For example, my DocBook AntRun  
stuff is used for generating developer documentation, so binding it to  
any of the default lifecycle phases doesn't make sense. The site phase  
of the site lifecycle is probably the best place to put it, but then  
it gets tossed in with everything else in that phase. There's no way  
to run the DocBook stuff by itself; I have to run it along with  
everything else in the site phase.


So in that sense, lifecycles are less powerful than Ant targets  
because they are more coarsely grained. I don't have the same control  
over what gets run. If, however, I put the DocBook stuff into a  
separate profile then suddenly I have that control. I don't know how  
else to get it without profiles.


Trevor


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



Re: Are Maven profiles like Ant targets?

2008-12-16 Thread Trevor Harmon

On Dec 16, 2008, at 10:42 AM, Martin Höller wrote:


You are doing it wrong. Maven has no targets like ant has. Maven has
lifecylces [0] which is built of phases (e.g. 'compile', package',
'install'). Plugins are attached to phases and are executed whenever
a phase is executed.


Well, without profiles, I don't know how to do it right. For example,  
I use the AntRun plugin to invoke install4j, which builds installers  
for my artifact. Binding this to the deploy phase probably makes the  
most sense, but if I do that, the deploy goal of the deploy plugin  
also runs. There's no way to tell Maven to just run the install4j stuff.


If, however, I split off the install4j stuff into an install4j  
profile and bind it to the package phase, then I can do:


  mvn -Pinstall4j package

And suddenly Maven does exactly what I want: It runs install4j and  
nothing else. Without profiles, how can I accomplish this?


Trevor


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



RE: Are Maven profiles like Ant targets?

2008-12-16 Thread Todd Thiessen
They are more powerful in the sense that you can still call any goal
independantly, but still have the flexibility to bind it to a phase
which is part of a well defined life cycle.  You get the best of both
worlds this way.

Perhaps the doxia plugin would work?

http://maven.apache.org/doxia/book/index.html

Not sure what you are doing in your profile that solves your issue
though. If you give some further info on this, perhaps some of the more
experieced Maven users can provide you with a pure Maven solution.

If you wish to run something independently, you don't need ant or Maven
for this. Run run the executable.

---
Todd Thiessen
 

 -Original Message-
 From: Trevor Harmon [mailto:tre...@vocaro.com] 
 Sent: Tuesday, December 16, 2008 2:34 PM
 To: Maven Users List
 Subject: Re: Are Maven profiles like Ant targets?
 
 On Dec 16, 2008, at 10:43 AM, Todd Thiessen wrote:
 
  You probably want to use a plugin.  For instance you could use the 
  DocBook plugin.
 
  
 http://maven-plugins.sourceforge.net/maven-sdocbook-plugin/index.html
 
 The sdocbook plugin does not work with Maven 2.
 
 I also tried the more recent docbook plugin:
 
 http://mojo.codehaus.org/docbook-maven-plugin/
 
 But it's in a very alpha stage and lacks basic features (e.g. 
 PDF generation).
 
 That's why I'm using the AntRun plugin; it gives me access to 
 Ant's Xslt task for transforming DocBook.
 
  You will also want to get a better understanding of Maven's build 
  lifecycle and undertand how lifecycles, phases and goals 
 are related.
  It is more complex than ant targets but is also far more powerful.
 
  http://books.sonatype.com/maven-book/reference/lifecycle.html
 
 I'm familiar with the lifecycles, but it's strange you should 
 say they are more powerful than Ant targets because they seem 
 less powerful, at least when using the AntRun plugin. For 
 example, my DocBook AntRun stuff is used for generating 
 developer documentation, so binding it to any of the default 
 lifecycle phases doesn't make sense. The site phase of the 
 site lifecycle is probably the best place to put it, but then 
 it gets tossed in with everything else in that phase. There's 
 no way to run the DocBook stuff by itself; I have to run it 
 along with everything else in the site phase.
 
 So in that sense, lifecycles are less powerful than Ant 
 targets because they are more coarsely grained. I don't have 
 the same control over what gets run. If, however, I put the 
 DocBook stuff into a separate profile then suddenly I have 
 that control. I don't know how else to get it without profiles.
 
 Trevor
 
 
 -
 To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
 For additional commands, e-mail: users-h...@maven.apache.org
 
 

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



Re: Are Maven profiles like Ant targets?

2008-12-16 Thread Trevor Harmon

On Dec 16, 2008, at 2:54 PM, Todd Thiessen wrote:


They are more powerful in the sense that you can still call any goal
independantly


But if I have two tasks implemented with AntRun, there's no way to  
call them independently because there's only one goal: run. I guess  
most of my problems boil down to the limitations of the AntRun plugin.



Perhaps the doxia plugin would work?

http://maven.apache.org/doxia/book/index.html


That plugin is fine if you want to use DocBook as a source for Doxia,  
but it's not designed for stand-alone documentation created using  
DocBook and the DocBook XSL stylesheets. The Xslt task in Ant works  
great for that, though.



Not sure what you are doing in your profile that solves your issue
though. If you give some further info on this, perhaps some of the  
more

experieced Maven users can provide you with a pure Maven solution.


Let me use a different plugin as an example. Let's say I'm developing  
a desktop application, and it runs in two different modes depending on  
the command-line options. I don't want to keep typing in the same long  
string of options all the time, so I pickle them into two separate Ant  
targets, mode1 and mode2. Then I can run them like this:


ant mode1
ant mode2

How would I accomplish this in Maven? There's the exec plugin, but it  
has only one goal (exec:java). There's no way to run the application  
in two different ways with just that one goal. Not without profiles,  
that is. With profiles, I can create two profiles, mode1 and  
mode2, and define an exec plugin in each one. Then I can run them  
like this:


mvn -Pmode1 exec:java
mvn -Pmode2 exec:java

So there's an example where profiles have nothing to do with build  
portability and are playing the same role as Ant targets.


If you wish to run something independently, you don't need ant or  
Maven

for this. Run run the executable.


Isn't that like saying Ant or Maven aren't necessary for compiling  
Java code because you can just run the javac executable? Doesn't make  
sense...


Trevor


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



RE: Are Maven profiles like Ant targets?

2008-12-16 Thread Todd Thiessen


---
Todd Thiessen
 

 -Original Message-
 From: Trevor Harmon [mailto:tre...@vocaro.com] 
 Sent: Tuesday, December 16, 2008 3:59 PM
 To: Maven Users List
 Subject: Re: Are Maven profiles like Ant targets?
 
 On Dec 16, 2008, at 2:54 PM, Todd Thiessen wrote:
 
  They are more powerful in the sense that you can still call 
 any goal 
  independantly
 
 But if I have two tasks implemented with AntRun, there's no 
 way to call them independently because there's only one goal: 
 run. I guess most of my problems boil down to the limitations 
 of the AntRun plugin.
 
  Perhaps the doxia plugin would work?
 
  http://maven.apache.org/doxia/book/index.html
 
 That plugin is fine if you want to use DocBook as a source 
 for Doxia, but it's not designed for stand-alone 
 documentation created using DocBook and the DocBook XSL 
 stylesheets. The Xslt task in Ant works great for that, though.
 
  Not sure what you are doing in your profile that solves your issue 
  though. If you give some further info on this, perhaps some of the 
  more experieced Maven users can provide you with a pure Maven 
  solution.
 
 Let me use a different plugin as an example. Let's say I'm 
 developing a desktop application, and it runs in two 
 different modes depending on the command-line options. I 
 don't want to keep typing in the same long string of options 
 all the time, so I pickle them into two separate Ant targets, 
 mode1 and mode2. Then I can run them like this:
 
 ant mode1
 ant mode2
 
 How would I accomplish this in Maven? There's the exec 
 plugin, but it has only one goal (exec:java). There's no way 
 to run the application in two different ways with just that 
 one goal.

I believe that there is. I know you can configure a goal with different
executions. There is a decent explanation here:


 Not without profiles, that is. With profiles, I can 
 create two profiles, mode1 and mode2, and define an exec 
 plugin in each one. Then I can run them like this:
 
 mvn -Pmode1 exec:java
 mvn -Pmode2 exec:java
 
 So there's an example where profiles have nothing to do with 
 build portability and are playing the same role as Ant targets.
 
  If you wish to run something independently, you don't need ant or 
  Maven for this. Run run the executable.
 
 Isn't that like saying Ant or Maven aren't necessary for 
 compiling Java code because you can just run the javac 
 executable? Doesn't make sense...
 
 Trevor
 
 
 -
 To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
 For additional commands, e-mail: users-h...@maven.apache.org
 
 

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



RE: Are Maven profiles like Ant targets?

2008-12-16 Thread Todd Thiessen
Bah. Ignore last. Hit send by mistake.

---
Todd Thiessen
  
 Let me use a different plugin as an example. Let's say I'm 
 developing a desktop application, and it runs in two 
 different modes depending on the command-line options. I 
 don't want to keep typing in the same long string of options 
 all the time, so I pickle them into two separate Ant targets, 
 mode1 and mode2. Then I can run them like this:
 
 ant mode1
 ant mode2
 
 How would I accomplish this in Maven? There's the exec 
 plugin, but it has only one goal (exec:java). There's no way 
 to run the application in two different ways with just that 
 one goal.

I believe there is. Plugin can have different executions. There is some
documentation about that here:

http://maven.apache.org/guides/introduction/introduction-to-the-lifecycl
e.html#Plugins

and I believe the definitive guide has some examples too.  You should be
able to execute the same exe with as many different parameters as you
like.

But you still would have to bind it to a phase, which you don't want to
do.  So I agree with you that Maven is definitely heavy weight if all
you wish to do is execute an exe with different parameters each time.
It doesn't do this nicely. You probably just want a simple script for
that.

  If you wish to run something independently, you don't need ant or 
  Maven for this. Run run the executable.
 
 Isn't that like saying Ant or Maven aren't necessary for 
 compiling Java code because you can just run the javac 
 executable? Doesn't make sense...

Not at all.  If all I wanted to do is compile java code, then javac
would be the tool of choice.  But developers generally want to do a
whole lot more in conjuntion with compiling java code.  If all you want
to do is run some exe, then using ant or maven is somewhat overkill.  A
script does this just fine.

But if the reason why you are running this exe is somehow linked to
building your overall project, then binding it to a certain phase starts
to make sense. It all depends on what you want.

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



Re: Are Maven profiles like Ant targets?

2008-12-16 Thread Ed Hillmann
On Wed, Dec 17, 2008 at 6:58 AM, Trevor Harmon tre...@vocaro.com wrote:
 That plugin is fine if you want to use DocBook as a source for Doxia, but
 it's not designed for stand-alone documentation created using DocBook and
 the DocBook XSL stylesheets. The Xslt task in Ant works great for that,
 though.


I've had good luck with the docbkx plugin

http://code.google.com/p/docbkx-tools/

I'm using it to generate html from DocBook files in Maven 2.

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



Re: Are Maven profiles like Ant targets?

2008-12-16 Thread Trevor Harmon

On Dec 16, 2008, at 5:24 PM, Todd Thiessen wrote:

I believe there is. Plugin can have different executions. There is  
some

documentation about that here:

http://maven.apache.org/guides/introduction/introduction-to-the-lifecycl
e.html#Plugins


But that doesn't work for the exec plugin. I'd be grateful if someone  
could prove me wrong.



and I believe the definitive guide has some examples too.


No, in the book they always pass the exec arguments on the command  
line. See:


http://books.sonatype.com/maven-book/reference/customizing.html#section-custom-exec

But you still would have to bind it to a phase, which you don't want  
to do.


I'm not trying to avoid anything. If binding to a phase would solve  
the problems, then I'd do it. But simply binding a plugin to a phase  
is not enough, for reasons I have shown.



So I agree with you that Maven is definitely heavy weight if all
you wish to do is execute an exe with different parameters each time.
It doesn't do this nicely. You probably just want a simple script for
that.


Or I could just use profiles.

Trevor


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