Re: Progress on support for large projects

2009-05-17 Thread Barrie Treloar
On Sat, May 16, 2009 at 5:17 AM, Joerg Hohwiller jo...@j-hohwiller.de wrote:
 Off topic.

 Actually I believe this isn't true anymore.

 See http://jira.codehaus.org/browse/MECLIPSE-344
[del]
 mvn eclipse:eclipse will make sure my module pA references the eclipse
 project for module cA (and not the jar of cA in the repo)

 Thanks for the hint!
 But only works if eclipse-plugin knows where my workspace is.
 The location may be different for each developer so I can NOT
 truly automate. Anyhow I will start using this.
 At least better solution than what I had before.

With 2.6 
(http://maven.apache.org/plugins/maven-eclipse-plugin-2.6/eclipse-mojo.html#workspace)
if the workspace variable is not defined then m-e-p will walk up the
directory hierarchy attempting to locate your workspace. As a general
rule people checkout their projects underneath an eclipse workspace so
it will find it automatically.  Otherwise you will need to specify it
manually.

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



Re: Progress on support for large projects

2009-05-16 Thread Joerg Hohwiller
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hi Brian,

 Do you need simple IT-projects that I shall attach to MNG-4161 and related?

 
 Sample ITs for sure, and some level of detail in a proposal like these:
 http://docs.codehaus.org/display/MAVENUSER/User+Proposals
 

here is my proposal:

http://docs.codehaus.org/display/MAVENUSER/EasyVersionMaintenance

Let me know if somethings missing or wrong.

BTW: is there a chance to have such feature running in a usable
version of maven (NOT a official release) in a couple of month?
If we are talking about something that will go into 3.x and is
NOT usable before 2010, I rather put my energy in a simple front-end
that handles this feature and then delegates to maven.

Take care
  Jörg
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkoPH6UACgkQmPuec2Dcv/8JrgCfQXNZXlA/c/NcA+aJywZ7s8bt
LJMAnjyKgoyEfhPk8k299FjJvLS7l8j3
=xAY4
-END PGP SIGNATURE-

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



Re: Progress on support for large projects

2009-05-16 Thread Joerg Hohwiller
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hi Ralph,


 Okay. So thats what I guessed when I said that the MavenProject/Model is
 just a stupid POJO and various plugins manipulate it with side effects.
 Sounds a little hacky to me but thats the way it is. So my serialization
 idea is nuts though.

 Anyhow I think that if you have some information in memory, you should
 NOT have to write it to the disc so that someone else can copy (read
 and write)
 it again. I thought that you store the transformed XML in that new string
 attribute (was it alternativeRepresentation) so the Installer/Deployer
 could write this string if available instead of copying the pom.xml as
 is.
 
 I think you are referring to one of the other patches that was
 submitted, not what I committed to the MNG-624 branch.


 A big problem could be the encoding issue if you store XML in a string
 and then want to save it with some Writer, you need to know the encoding
 from the XML-header or you run into trouble.
 
 My fix didn't store the XML in a string, it modified the DOM.
 
After getting more of the big picture, I think your idea is good to
write a new pom.xml to ${project.build.directory} and copy that on
install/deploy. This would also solve the needs behind something like
MINSTALL-50 (e.g. by some plugin that does a post-transformation on the new 
pom).

Regards
  Jörg
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkoPJrQACgkQmPuec2Dcv/+ZMwCeNp/rE8KTH0sNeVuDHQ1zeOuD
mtYAn0B6p8XlqT7oan9na/POHJ4LZ4qW
=JvQY
-END PGP SIGNATURE-

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



Re: Progress on support for large projects

2009-05-16 Thread Ralph Goers


On May 16, 2009, at 1:48 PM, Joerg Hohwiller wrote:


-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hi Ralph,



Okay. So thats what I guessed when I said that the MavenProject/ 
Model is
just a stupid POJO and various plugins manipulate it with side  
effects.
Sounds a little hacky to me but thats the way it is. So my  
serialization

idea is nuts though.

Anyhow I think that if you have some information in memory, you  
should

NOT have to write it to the disc so that someone else can copy (read
and write)
it again. I thought that you store the transformed XML in that new  
string
attribute (was it alternativeRepresentation) so the Installer/ 
Deployer
could write this string if available instead of copying the  
pom.xml as

is.


I think you are referring to one of the other patches that was
submitted, not what I committed to the MNG-624 branch.



A big problem could be the encoding issue if you store XML in a  
string
and then want to save it with some Writer, you need to know the  
encoding

from the XML-header or you run into trouble.


My fix didn't store the XML in a string, it modified the DOM.


After getting more of the big picture, I think your idea is good to
write a new pom.xml to ${project.build.directory} and copy that on
install/deploy. This would also solve the needs behind something like
MINSTALL-50 (e.g. by some plugin that does a post-transformation on  
the new pom).


Yup. That is exactly what it does, except the fix currently doesn't  
use ${project.build.directory} but just uses trunk. This needs to be  
fixed. And as Brian mentioned it doesn't look at the -f option. If  
those two issues are resolved then this fix would just need to be  
integrated into the current 2.1 or 2.2 branch.  You are welcome to  
look at it and propose a way to fix those issues.


Ralph

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



Re: Progress on support for large projects

2009-05-16 Thread Brian Fox
Also be aware that 2.1/2.2 already do some pom transformations, so this
would have to extend instead of replicate what's already there.

On Sat, May 16, 2009 at 5:14 PM, Ralph Goers ralph.go...@dslextreme.comwrote:


 On May 16, 2009, at 1:48 PM, Joerg Hohwiller wrote:

  -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA1

 Hi Ralph,


 Okay. So thats what I guessed when I said that the MavenProject/Model is
 just a stupid POJO and various plugins manipulate it with side effects.
 Sounds a little hacky to me but thats the way it is. So my serialization
 idea is nuts though.

 Anyhow I think that if you have some information in memory, you should
 NOT have to write it to the disc so that someone else can copy (read
 and write)
 it again. I thought that you store the transformed XML in that new
 string
 attribute (was it alternativeRepresentation) so the Installer/Deployer
 could write this string if available instead of copying the pom.xml as
 is.


 I think you are referring to one of the other patches that was
 submitted, not what I committed to the MNG-624 branch.



 A big problem could be the encoding issue if you store XML in a string
 and then want to save it with some Writer, you need to know the encoding
 from the XML-header or you run into trouble.


 My fix didn't store the XML in a string, it modified the DOM.

  After getting more of the big picture, I think your idea is good to
 write a new pom.xml to ${project.build.directory} and copy that on
 install/deploy. This would also solve the needs behind something like
 MINSTALL-50 (e.g. by some plugin that does a post-transformation on the
 new pom).

  Yup. That is exactly what it does, except the fix currently doesn't use
 ${project.build.directory} but just uses trunk. This needs to be fixed.
 And as Brian mentioned it doesn't look at the -f option. If those two issues
 are resolved then this fix would just need to be integrated into the current
 2.1 or 2.2 branch.  You are welcome to look at it and propose a way to fix
 those issues.

 Ralph


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




Re: Progress on support for large projects

2009-05-15 Thread Christian Schulte
Ralph Goers schrieb:
 They just shouldn't change things significantly without good  
 arguments.
 
 Which are only the ones you agree with?

I am really just trying to warn you about doing something dangerous.
Mixing release versions with snapshot versions. The release plugin takes
care of this - validation rules you want to bypass for whatever reason
you may have.

-- 
Christian


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



Re: Progress on support for large projects

2009-05-15 Thread Joerg Hohwiller
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hi there,


 OK. So you would NOT mind if maven adds some new features that
 are compatible to older versions of maven.
 Thats all I am fighting for.

 
 No fighting required, just make a patch. If it's truly backwards compatible,
 then there wouldn't be much reason for it to be declined.
 
 I'm interested in the use cases because during training I run into this a
 lot. Generally if you can move your process to one that works with Maven
 then it's not an issue. If you can't, well then it is. I've got ideas for
 how to make the release process better, but not enough time to tackle it
 now. Just updating the tools to support ASF policy is keeping me busy
 enough.
 

I searched JIRA:
It was already requested in MNG-2576 so it seems the idea and usecase
is common and therefor good. The issue is closed/fixed but I could NOT
get it working...

Regards
  Jörg
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkoNub8ACgkQmPuec2Dcv//RVQCgiqgQEvovdbDo+LHWBxbzOebn
jUYAn0d4lIFFM1dTNa7A3dWeC1Q+OsgD
=9QN4
-END PGP SIGNATURE-

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



Re: Progress on support for large projects

2009-05-15 Thread Joerg Hohwiller
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hi,


 By inheriting the version, groupId, etc. from the parent - yes. The
 release plugin still handles the pom transformations and the tagging
 (SCM URLs, snapshot to release version, release to next snapshot
 version, etc.)

But there is nothing to change in the POM if the version is a variable.
Maven will (as suggested in this thread - or also in my usecase via
xslt-plugin) replace the variable when installing. All I need to change
is one variable (e.g. in settings.xml). I do not need a releas-plugin
for that but others may want to.

 
  I am also doing this in some other project that way and
 it works fine. But in my personal open-source project I have some
 core-libs that are used throughout the project and many modules that
 are piled up with lots of dependencies. I have some modules that
 are quite steady and do not change so I dont want to release a new
 version just because something else changed.
 
 I would try splitting those steady modules from the rest of the
 structure since they seem to not share a common development/release
 cycle. I would even consider moving these to another svn repository.
 Without a real example to analyze, hard to tell.

Once again: the release-plugin guys think in a specific way and there
are others that have a different oppinion. For me the architecture
of the system is the main criteria for structuring my pom-tree.
Imagine that everybody makes it the way you describe because of
release-plugin. The other day another cool plugin arises that forces
you to structure your poms and scm by some other criteria.
What if you want both plugins?

I think it is a bad idea that a plugin gives a philosophy about
how users should structure their project.

Regards
  Jörg
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkoNu1kACgkQmPuec2Dcv/8tqwCfTSDFbiyqVSbrKnwtSxqo7BK6
pJYAnjcjzGIwGrEvJ7PGhP8nZnsvT0+F
=HnyW
-END PGP SIGNATURE-

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



Re: Progress on support for large projects

2009-05-15 Thread Brian Fox
On Fri, May 15, 2009 at 2:58 PM, Joerg Hohwiller jo...@j-hohwiller.dewrote:

 -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA1

 Hi,


  By inheriting the version, groupId, etc. from the parent - yes. The
  release plugin still handles the pom transformations and the tagging
  (SCM URLs, snapshot to release version, release to next snapshot
  version, etc.)

 But there is nothing to change in the POM if the version is a variable.
 Maven will (as suggested in this thread - or also in my usecase via
 xslt-plugin) replace the variable when installing. All I need to change
 is one variable (e.g. in settings.xml). I do not need a releas-plugin
 for that but others may want to.

 
   I am also doing this in some other project that way and
  it works fine. But in my personal open-source project I have some
  core-libs that are used throughout the project and many modules that
  are piled up with lots of dependencies. I have some modules that
  are quite steady and do not change so I dont want to release a new
  version just because something else changed.
 
  I would try splitting those steady modules from the rest of the
  structure since they seem to not share a common development/release
  cycle. I would even consider moving these to another svn repository.
  Without a real example to analyze, hard to tell.

 Once again: the release-plugin guys think in a specific way and there
 are others that have a different oppinion. For me the architecture
 of the system is the main criteria for structuring my pom-tree.
 Imagine that everybody makes it the way you describe because of
 release-plugin. The other day another cool plugin arises that forces
 you to structure your poms and scm by some other criteria.
 What if you want both plugins?


I wouldn't say it's the release plugin that dictates the layout, its what
makes sense in the scm. Generally you take a tree of things and tag it and
release it.



 I think it is a bad idea that a plugin gives a philosophy about
 how users should structure their project.

 Regards
  Jörg
 -BEGIN PGP SIGNATURE-
 Version: GnuPG v1.4.9 (GNU/Linux)
 Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

 iEYEARECAAYFAkoNu1kACgkQmPuec2Dcv/8tqwCfTSDFbiyqVSbrKnwtSxqo7BK6
 pJYAnjcjzGIwGrEvJ7PGhP8nZnsvT0+F
 =HnyW
 -END PGP SIGNATURE-

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




Re: Progress on support for large projects

2009-05-15 Thread Joerg Hohwiller
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hi Stephen,

 
 If A(1.0) has root(1.2-SNAPSHOT) as a parent it should never have been
 released as the pom for A(1.0) is based on content from root(1.2-SNAPSHOT)
 which is subject to change... which means that a released pom does not have
 a definitive content... bad karma

I agree and cant speak for Ralph, but I do NOT change versions (or anything
else that is relevant for deploying) of container-modules at all.
Why should I release a new version of my parent POMs if just some leave changed
or even if some internal site-report-setting changed. People that want to
use my deployed artifacts do NOT care about such changes. But in my case
every developer always checks out the entire head (or tag/branch) of SCM.
So there are different aspects of a deployed POM. If you ask me, all stuff
like reporting, scm, issueManagement, distributionManagement, etc.
is nuts for deployed POMs. But others may have a different view of the world.

But this might be the point where we do not get together with relase-plugin.
We simply have to accept that maven gives us flexibility to do things different
ways and release-plugin maybe can NOT address all of these ways and thats
just OK.

 
 -Stephen
 

Regards
  Jörg
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkoNxdIACgkQmPuec2Dcv/8SEgCgl/9Hnv5vfFAaRpz3noNdZuW1
x/IAn0AOXx3MSnC9xWvWFZKrZURU7OcR
=aIQF
-END PGP SIGNATURE-

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



Re: Progress on support for large projects

2009-05-15 Thread Joerg Hohwiller
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

 
 Off topic.
 
 Actually I believe this isn't true anymore.
 
 See http://jira.codehaus.org/browse/MECLIPSE-344
 all dependent artefacts that are available in your eclipse-workspace
 will be attached as project references even if they are not in the
 reactor.
 It was fixed in 2.5
 
 Can you try it on your project structure and confirm?
 
 I know it works for me.
 
 I have this structure
 
 common projects
 - module cA
 ...
 - module cZ
 
 My project
 - module pA
 ...
 - module pZ
 (where some of these projects depend upon projects from commons)
 
 mvn eclipse:eclipse will make sure my module pA references the eclipse
 project for module cA (and not the jar of cA in the repo)

Thanks for the hint!
But only works if eclipse-plugin knows where my workspace is.
The location may be different for each developer so I can NOT
truly automate. Anyhow I will start using this.
At least better solution than what I had before.

Thanks
  Jörg
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkoNxrQACgkQmPuec2Dcv/8VrQCdGu/eWpZnifkPYdW/u+6RqsKx
+eMAnRv5/EHXo0895onKGsmExxxtoC70
=gj/Z
-END PGP SIGNATURE-

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



Re: Progress on support for large projects

2009-05-15 Thread Joerg Hohwiller
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hi,

 I think you are referring to one of the other patches that was
 submitted, not what I committed to the MNG-624 branch.

MNG-624 or maven-2.1.x-MNG-624 ?



 A big problem could be the encoding issue if you store XML in a string
 and then want to save it with some Writer, you need to know the encoding
 from the XML-header or you run into trouble.
 
 My fix didn't store the XML in a string, it modified the DOM.

OK. But the existing parsing is done by XPP right?

Do we want parsing the POMs twice with different parsers?

Is there some general strategy decision about POM-transformation
design by the core developers of maven?

Do Brett and Jason care about this?

Sorry for the stupid question, but your patch/branch seems to
be the second solution so this means to me that the first
has failed already. I now see that is was Eric Brown who
wasted his time already and he seemed somewhat disappointed.
As the problem of doing a POM-transformation
which is NOT only relevant for MNG-624 is quite general.
So I just want to avoid that the second approach will fail again.
I would not mind to invest some of my very little time as well
in this but only if there is a clear chance that we are going
towards a solution that fits well into the architecture of maven
and will therefore be accepted to be integrated in 2.1.x.

 
 Ralph

Regards
  Jörg
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkoNzB8ACgkQmPuec2Dcv/8d0wCfcKw58DuETsqdU8vZfHPJEZ66
vXIAn3QzreDl/1scgqpAPlDMu62OP4Ku
=xUpi
-END PGP SIGNATURE-

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



Re: Progress on support for large projects

2009-05-15 Thread Brian Fox
On Fri, May 15, 2009 at 4:10 PM, Joerg Hohwiller jo...@j-hohwiller.dewrote:

 -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA1

 Hi,

  I think you are referring to one of the other patches that was
  submitted, not what I committed to the MNG-624 branch.

 MNG-624 or maven-2.1.x-MNG-624 ?

 
 
  A big problem could be the encoding issue if you store XML in a string
  and then want to save it with some Writer, you need to know the encoding
  from the XML-header or you run into trouble.
 
  My fix didn't store the XML in a string, it modified the DOM.

 OK. But the existing parsing is done by XPP right?

 Do we want parsing the POMs twice with different parsers?

 Is there some general strategy decision about POM-transformation
 design by the core developers of maven?

 Do Brett and Jason care about this?

 Sorry for the stupid question, but your patch/branch seems to
 be the second solution so this means to me that the first
 has failed already. I now see that is was Eric Brown who
 wasted his time already and he seemed somewhat disappointed.
 As the problem of doing a POM-transformation
 which is NOT only relevant for MNG-624 is quite general.
 So I just want to avoid that the second approach will fail again.
 I would not mind to invest some of my very little time as well
 in this but only if there is a clear chance that we are going
 towards a solution that fits well into the architecture of maven
 and will therefore be accepted to be integrated in 2.1.x.


Your better bet will be to try and get this documented so it can be
implemented in 3.x.


 
  Ralph

 Regards
  Jörg
 -BEGIN PGP SIGNATURE-
 Version: GnuPG v1.4.9 (GNU/Linux)
 Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

 iEYEARECAAYFAkoNzB8ACgkQmPuec2Dcv/8d0wCfcKw58DuETsqdU8vZfHPJEZ66
 vXIAn3QzreDl/1scgqpAPlDMu62OP4Ku
 =xUpi
 -END PGP SIGNATURE-

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




Re: Progress on support for large projects

2009-05-15 Thread Joerg Hohwiller
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hi Brian,

 Your better bet will be to try and get this documented so it can be
 implemented in 3.x.

I would surely NOT mind. What do you expect?
A new xdoc? Or a diff to the actual source of
http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

Content somewhat like the level of detail in MNG-4161
but with nice examples?

Do you need simple IT-projects that I shall attach to MNG-4161 and related?

Best regards
  Jörg
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkoN0p4ACgkQmPuec2Dcv/8TnwCfRZXQ8Wz1OOMwq4B8MXKanWyo
4qUAn0vYofuQCDUjS+PjOQ46VvgfpUUN
=GiG2
-END PGP SIGNATURE-

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



Re: Progress on support for large projects

2009-05-15 Thread Joerg Hohwiller
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hi again,


 Your better bet will be to try and get this documented so it can be
 implemented in 3.x.

no change to see some improvement about version maintenance in 2.x?
See the list of issues I just posted and also look at the votes.

Thanks
  Jörg
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkoN0zkACgkQmPuec2Dcv/+QagCgiQd4XEKgBWh4c98TkflW3Bek
2GcAnRdoBJSi3wWoLHEA6jJB3N8pvSAr
=l02j
-END PGP SIGNATURE-

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



Re: Progress on support for large projects

2009-05-15 Thread Brian Fox


 Do you need simple IT-projects that I shall attach to MNG-4161 and related?


Sample ITs for sure, and some level of detail in a proposal like these:
http://docs.codehaus.org/display/MAVENUSER/User+Proposals


Re: Progress on support for large projects

2009-05-15 Thread Ralph Goers


On May 15, 2009, at 1:10 PM, Joerg Hohwiller wrote:


-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hi,


I think you are referring to one of the other patches that was
submitted, not what I committed to the MNG-624 branch.


MNG-624 or maven-2.1.x-MNG-624 ?
I think it was maven-2.1.x-MNG-624. Its been a long time since I  
worked on this.






A big problem could be the encoding issue if you store XML in a  
string
and then want to save it with some Writer, you need to know the  
encoding

from the XML-header or you run into trouble.


My fix didn't store the XML in a string, it modified the DOM.


OK. But the existing parsing is done by XPP right?

I believe so.



Do we want parsing the POMs twice with different parsers?





Is there some general strategy decision about POM-transformation
design by the core developers of maven?
Maven 2.x is a mess with this. It is one of the things I believe they  
worked really hard to change in Maven 3. Again, I haven't reviewed the  
new code so I don't know how successful they were.



Do Brett and Jason care about this?
Everybody cares about this. The way Maven 2.x was implemented is very  
brittle. Almost every change made to the project builder ends up  
having nasty side effects.



Sorry for the stupid question, but your patch/branch seems to
be the second solution so this means to me that the first
has failed already. I now see that is was Eric Brown who
wasted his time already and he seemed somewhat disappointed.
As the problem of doing a POM-transformation
which is NOT only relevant for MNG-624 is quite general.
So I just want to avoid that the second approach will fail again.
I would not mind to invest some of my very little time as well
in this but only if there is a clear chance that we are going
towards a solution that fits well into the architecture of maven
and will therefore be accepted to be integrated in 2.1.x.


I seemed to be the only committer interested in fixing these issues. I  
did not like Eric's patch because it added logic the the artifact  
handler that it had no business knowing about.  As I recall I  
documented my reasons in one of the Jira issues.


You have to understand that although the problem might seem trivial,  
fixes for problems like this can't break existing builds. That makes  
even the simplest fix challenging.


Ralph


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



Re: Progress on support for large projects

2009-05-15 Thread Brian Fox


 You have to understand that although the problem might seem trivial, fixes
 for problems like this can't break existing builds. That makes even the
 simplest fix challenging.


Not only that, it needs to cooperate with other functionality... just like
we found with the previous patch. It would work in some cases but it
couldn't function if the build.outputDirectory was changed. (or -f was used
for a different pom name).


Re: Progress on support for large projects

2009-05-14 Thread Christian Schulte
Ralph Goers schrieb:
 On May 13, 2009, at 5:09 PM, Christian Schulte wrote:
 
 Ralph Goers schrieb:
 So the tree really looks like:

 +tags
   +root-1.0 (trunk revision 1)
 +A(1.0)
 +B(1.0)
   +root-1.1 (trunk revision 2)
 +A(1.0)
 +B(1.1)
   +root-1.2 (trunk revision 3)
 +A(1.0)
 +B(1.2)
 /trunk at revision 4
   +root(1.2-SNAPSHOT)
 +A(1.0)
 +B(1.3-SNAPSHOT)

 This assumes that A has not been modified since its initial release
 and B is currently under development and has not been released.

 What stops a developer from making changes to A(1.0) on trunk,
 rebuilding locally - that is - overwriting release artifacts with
 something different in the local repository, and then later on even
 commit those changes forgetting to increase the version to a  
 snapshot ?
 Discipline ?

 
 Actually, this isn't at all the way we do releases. This was my  
 response to David's hypothetical scenario which didn't make any sense  
 to me. All I did was clean it up.
 
 What we actually do looks more like:
 
 +tags
+library-1.0.0 (on branch-library-1.0) pom version is 1.0.0
  +A(1.0.0)
  +B(1.0.0)
  +C(1.0.0)
+library-1.0.1 (on branch-library-1.0) pom version is 1.0.1
  +A(1.0.0)
  +B(1.0.1)
  +C(1.0.0)
+library-1.1.0 (on branch-library-1.1) pom version is 1.1.0
  +A(1.0.0)
  +B(1.1.0)
  +C(1.1.0)
 +branches
+branch-library-1.0 (pom is still 1.0.1 - no work in progress on  
 branch)
  +A(1.0.0)
  +B(1.0.0)
  +C(1.0.0)
+branch-library-1.1 (pom is 1.1.0-SNAPSHOT) (work in progress)
  +A(1.0.0)
  +B(1.1.0)
  +C(1.1.1-SNAPSHOT)
 /trunk (library-1.2-SNAPSHOT) (Work in progress)
+A(1.1.0-SNAPSHOT) (new work)
+B(1.1.0)
+C(1.2.0-SNAPSHOT) (work from branch-library-1.1 has been merged)
 
 The point here is not to debate the right or wrong way to manage  
 projects. It is what it is and it accomplishes our goals. The issue is  
 that the release plugin (at least the last time I reviewed it)  
 mandates that there is only one right way to do a release. As the  
 debate on Legal discuss last week shows this isn't necessarily the  
 case. I would suggest that the release plugin almost needs a lifecycle  
 of its own where the actual work is accomplished through plugins. If  
 things have changed significantly let me know and I'd be happy to look  
 at it again.
 
 Ralph
   

Some developers of the release-manager can better answer this. The
release manager uses its own phases internally, I think.

http://svn.apache.org/viewvc/maven/release/tags/maven-release-2.0-beta-9/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/

Hooking something in there may already be possible easily but I don't
know for sure.

My question may have sounded rhetorically but I really meant that. You
could of course manage commit rights with subversion so that whenever
someone mistakenly would try to commit to that release version on trunk,
subversion could simply disallow that. So a developer would at least
have to ask someone for permission to do so. I just don't get the point
for what all this additional effort is good for. Really only to not
release artifacts whose code did not change ? As I see it, that only
introduces additional complexity without any advantage. Indeed it
introduces some disadvantages every developer must be made aware of and
you cannot use quite well working maven tooling that way. Not because
this tooling behaves wrong, IMHO. The same applies to automatically
discovering the parent pom. That's constantly changing artifacts without
anyone noticing it, somehow. At least in all local repositories. It does
not matter if there are any code changes. Changing poms is the same as
changing code, IMHO. I would just say that it takes less than a week
until every developer has its own releases in the local repository and
noticing that is really not that easy. For me such setup would not work
at all since the CI server not only builds artifacts whenever someone
committed something, but forcibly runs builds every few days or so. So
for me that would just mean that the CI server would constantly deploy
differing release artifacts. Even worse, those release artifacts contain
a reference to a snapshot parent pom which introduces additional
problems. Non-reproducible.

Don't get me wrong. I still think you have really good reasons for doing
 things the way they are done. I just don't get it. I don't even see a
single advantage but a lot of disadvantages. I am not saying that there
may not be any advantages.

-- 
Christian

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



Re: Progress on support for large projects

2009-05-14 Thread Joerg Hohwiller
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hi Chistian,

 
 What stops a developer from making changes to A(1.0) on trunk,
 rebuilding locally - that is - overwriting release artifacts with
 something different in the local repository, and then later on even
 commit those changes forgetting to increase the version to a snapshot ?
 Discipline ?
 

Simply at a pre-commit hook that only allows to commit pom.xml in
some tree that has a non-snapshot version.

Regards
  Jörg
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkoMj8AACgkQmPuec2Dcv/+KugCgiacqSwnZayMjGJa8ZxT05Gtt
zJ8Ani67Nf5LSK8u9dww8XpDaFcSepN9
=kKR3
-END PGP SIGNATURE-

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



Re: Progress on support for large projects

2009-05-14 Thread Joerg Hohwiller
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hi Christian,

 
 My question may have sounded rhetorically but I really meant that. You
 could of course manage commit rights with subversion so that whenever
 someone mistakenly would try to commit to that release version on trunk,
 subversion could simply disallow that. So a developer would at least
 have to ask someone for permission to do so. I just don't get the point
 for what all this additional effort is good for. Really only to not
 release artifacts whose code did not change ? As I see it, that only
 introduces additional complexity without any advantage. 

I totally disagree. If your project is large and maybe offers
components that will be used by others, you can get into
version conflicts and will cause a lot of overhead in the repos.
Anyways if you say it is just additional complexity and you should
always release everything, then why do you have individual versions
per module at all? Simply use one variable in every module and your
process is so simple that there is no need for release-plugin anymore
at all. I am also doing this in some other project that way and
it works fine. But in my personal open-source project I have some
core-libs that are used throughout the project and many modules that
are piled up with lots of dependencies. I have some modules that
are quite steady and do not change so I dont want to release a new
version just because something else changed.

 Indeed it
 introduces some disadvantages every developer must be made aware of and
 you cannot use quite well working maven tooling that way. Not because
 this tooling behaves wrong, IMHO. The same applies to automatically
 discovering the parent pom. That's constantly changing artifacts without
 anyone noticing it, somehow. At least in all local repositories. It does
 not matter if there are any code changes. Changing poms is the same as
 changing code, IMHO. I would just say that it takes less than a week
 until every developer has its own releases in the local repository and
 noticing that is really not that easy. For me such setup would not work
 at all since the CI server not only builds artifacts whenever someone
 committed something, but forcibly runs builds every few days or so. So
 for me that would just mean that the CI server would constantly deploy
 differing release artifacts. Even worse, those release artifacts contain
 a reference to a snapshot parent pom which introduces additional
 problems. Non-reproducible.

Why? In SCM there should never be a non-snapshot module with snapshot
dependencies. Further a non-snapshot module should not be modified except
for pom.xml

 
 Don't get me wrong. I still think you have really good reasons for doing
  things the way they are done. I just don't get it. I don't even see a
 single advantage but a lot of disadvantages. I am not saying that there
 may not be any advantages.
 

OK. So you would NOT mind if maven adds some new features that
are compatible to older versions of maven.
Thats all I am fighting for.

Regards
  Jörg
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkoMkq4ACgkQmPuec2Dcv/9CxgCfXlKe4c7C0QtVPKY1kW4iUzQH
IZ0AoJA//ENI/jHk000ELe3oN73g5nyW
=zvjI
-END PGP SIGNATURE-

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



Re: Progress on support for large projects

2009-05-14 Thread Brian Fox


 OK. So you would NOT mind if maven adds some new features that
 are compatible to older versions of maven.
 Thats all I am fighting for.


No fighting required, just make a patch. If it's truly backwards compatible,
then there wouldn't be much reason for it to be declined.

I'm interested in the use cases because during training I run into this a
lot. Generally if you can move your process to one that works with Maven
then it's not an issue. If you can't, well then it is. I've got ideas for
how to make the release process better, but not enough time to tackle it
now. Just updating the tools to support ASF policy is keeping me busy
enough.


Re: Progress on support for large projects

2009-05-14 Thread Barrie Treloar
 Ask someone why you have to invoke eclipse:eclipse on toplevel everytime.
 If the dependency of some-module has changed, you can NOT invoke 
 eclipse:eclipse
 just on some-module since the plugin then wants to resolve the dependencies
 from the repository and adds JAR-Dependencies to the IDE project.

Off topic.

Actually I believe this isn't true anymore.

See http://jira.codehaus.org/browse/MECLIPSE-344
all dependent artefacts that are available in your eclipse-workspace
will be attached as project references even if they are not in the
reactor.
It was fixed in 2.5

Can you try it on your project structure and confirm?

I know it works for me.

I have this structure

common projects
- module cA
...
- module cZ

My project
- module pA
...
- module pZ
(where some of these projects depend upon projects from commons)

mvn eclipse:eclipse will make sure my module pA references the eclipse
project for module cA (and not the jar of cA in the repo)

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



Re: Progress on support for large projects

2009-05-14 Thread Christian Schulte
Joerg Hohwiller schrieb:
 Hi Christian,
 
 My question may have sounded rhetorically but I really meant that. You
 could of course manage commit rights with subversion so that whenever
 someone mistakenly would try to commit to that release version on trunk,
 subversion could simply disallow that. So a developer would at least
 have to ask someone for permission to do so. I just don't get the point
 for what all this additional effort is good for. Really only to not
 release artifacts whose code did not change ? As I see it, that only
 introduces additional complexity without any advantage. 
 
 I totally disagree. If your project is large and maybe offers
 components that will be used by others, you can get into
 version conflicts and will cause a lot of overhead in the repos.
 Anyways if you say it is just additional complexity and you should
 always release everything, then why do you have individual versions
 per module at all? 

If the parent is released every time just a single module is, _then_ I
suggest releasing all modules with that parent together.

Simply use one variable in every module and your
 process is so simple that there is no need for release-plugin anymore
 at all.

By inheriting the version, groupId, etc. from the parent - yes. The
release plugin still handles the pom transformations and the tagging
(SCM URLs, snapshot to release version, release to next snapshot
version, etc.)

 I am also doing this in some other project that way and
 it works fine. But in my personal open-source project I have some
 core-libs that are used throughout the project and many modules that
 are piled up with lots of dependencies. I have some modules that
 are quite steady and do not change so I dont want to release a new
 version just because something else changed.

I would try splitting those steady modules from the rest of the
structure since they seem to not share a common development/release
cycle. I would even consider moving these to another svn repository.
Without a real example to analyze, hard to tell.

 
 Indeed it
 introduces some disadvantages every developer must be made aware of and
 you cannot use quite well working maven tooling that way. Not because
 this tooling behaves wrong, IMHO. The same applies to automatically
 discovering the parent pom. That's constantly changing artifacts without
 anyone noticing it, somehow. At least in all local repositories. It does
 not matter if there are any code changes. Changing poms is the same as
 changing code, IMHO. I would just say that it takes less than a week
 until every developer has its own releases in the local repository and
 noticing that is really not that easy. For me such setup would not work
 at all since the CI server not only builds artifacts whenever someone
 committed something, but forcibly runs builds every few days or so. So
 for me that would just mean that the CI server would constantly deploy
 differing release artifacts. Even worse, those release artifacts contain
 a reference to a snapshot parent pom which introduces additional
 problems. Non-reproducible.
 
 Why? In SCM there should never be a non-snapshot module with snapshot
 dependencies. Further a non-snapshot module should not be modified except
 for pom.xml

/trunk at revision 4
+root(1.2-SNAPSHOT)
  +A(1.0)
  +B(1.3-SNAPSHOT)

If the pom of A(1.0) inherits from root(1.2-SNAPSHOT) and
root(1.2-SNAPSHOT) declares a dependency management with snapshot
versions and A(1.0) declares a dependency without an explicit version,
than A(1.0) may start depending on a snapshot. If you do 'mvn deploy' at
root(1.2-SNAPSHOT) then A(1.0) will be deployed to the release
repository, everything else to the snapshot repository.

 OK. So you would NOT mind if maven adds some new features that
 are compatible to older versions of maven.

They just shouldn't change things significantly without good arguments.

-- 
Christian


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



Re: Progress on support for large projects

2009-05-14 Thread Ralph Goers


On May 14, 2009, at 9:18 PM, Christian Schulte wrote:


Why? In SCM there should never be a non-snapshot module with snapshot
dependencies. Further a non-snapshot module should not be modified  
except

for pom.xml


/trunk at revision 4
+root(1.2-SNAPSHOT)
 +A(1.0)
 +B(1.3-SNAPSHOT)

If the pom of A(1.0) inherits from root(1.2-SNAPSHOT) and
root(1.2-SNAPSHOT) declares a dependency management with snapshot
versions and A(1.0) declares a dependency without an explicit version,
than A(1.0) may start depending on a snapshot. If you do 'mvn  
deploy' at

root(1.2-SNAPSHOT) then A(1.0) will be deployed to the release
repository, everything else to the snapshot repository.


Which is exactly why the deploy plugin should never redeploy something  
that is already in a release repository. It is ALWAYS wrong, even in a  
scenario where you rely on the release plugin to do its magic.  
Actually, in the case above since the parent pom is a SNAPSHOT the  
deploy should just ignore any modules that aren't snapshots.






OK. So you would NOT mind if maven adds some new features that
are compatible to older versions of maven.


They just shouldn't change things significantly without good  
arguments.


Which are only the ones you agree with?


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



Re: Progress on support for large projects

2009-05-14 Thread Stephen Connolly
2009/5/15 Christian Schulte c...@schulte.it

 Joerg Hohwiller schrieb:
  Why? In SCM there should never be a non-snapshot module with snapshot
  dependencies. Further a non-snapshot module should not be modified except
  for pom.xml

 /trunk at revision 4
 +root(1.2-SNAPSHOT)
  +A(1.0)
  +B(1.3-SNAPSHOT)

 If the pom of A(1.0) inherits from root(1.2-SNAPSHOT) and
 root(1.2-SNAPSHOT) declares a dependency management with snapshot
 versions and A(1.0) declares a dependency without an explicit version,
 than A(1.0) may start depending on a snapshot. If you do 'mvn deploy' at
 root(1.2-SNAPSHOT) then A(1.0) will be deployed to the release
 repository, everything else to the snapshot repository.


If A(1.0) has root(1.2-SNAPSHOT) as a parent it should never have been
released as the pom for A(1.0) is based on content from root(1.2-SNAPSHOT)
which is subject to change... which means that a released pom does not have
a definitive content... bad karma

-Stephen


Re: Progress on support for large projects

2009-05-13 Thread Christian Schulte
Ralph Goers schrieb:
 On May 12, 2009, at 9:30 PM, Christian Schulte wrote:
 
 Ralph Goers schrieb:
 Imagine that you could get a pom.xml for all of Apache Commons that
 contained the dependency management for it. Every time a commons
 project released a new Commons bill of materials would go with it.

 a) You want all the projects to be part of the build to be sure that
 they all work together. Even though some projects didn't change,
 running the unit tests will help identify any compatibility problems.
 If an artifact did not change, those tests will always yield the same
 results as during the release of that artifact. By did not change I
 assume that not only the source code did not change, also the pom and
 everything else also did not change. Maven did not change, not a  
 single
 Maven plugin changed, no dependency, etc.
 
 This assumption is incorrect. All the projects in the library use  
 other parts of the library, just as commons projects use other commons  
 projects. Because a project does not specify the version of the  
 project it depends on but obtains it from the bom pom the dependency  
 will change with the new release.

Ok. No code changes but the artifact and you don't want to release
without actual code changes.

-- 
Christian


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



Re: Progress on support for large projects

2009-05-13 Thread Milos Kleint
On Tue, May 12, 2009 at 11:01 PM, Joerg Hohwiller jo...@j-hohwiller.dewrote:

 -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA1

 Hi Milos,
 
  relying on the reactor and giving up on being able to build the one
 project
  separately is very bad (read: completely breaks) any IDE integration.

 I totally disagree. I am successfully using maven-eclipse-plugin (mvn
 eclipse:eclipse) and this works perfectly with Eclipse except if you
 do a lot of filtering. The suggested approach would have no influence on
 my IDE, omitted versions would become inter-project-dependencies in eclipse
 and everything is fine.


mvn eclipse:eclipse does perform a build (partially) and might even produce
1 eclipse project for multiple maven projects (correct me if I'm wrong)

In NetBeans (IDE I use and develop maven integration for) no build is
performed and we rely entirely on maven metadata when it comes to project
representation. Doing a build is out of questions, opening of projects would
be too slow. And it's a perfectly sound to assume that one wants to open
just a single maven project from apache geronimo codebase without actually
building the 200+ multiproject.
Even with brutal performance hacks the 200 projects take about 10 minutes to
open, while the single project is just a snap.

I'm not sure what the auto-reactor feature in eclipse does, but in general
and especially for large projects it's hard to figure automatically what the
reactor is.. is it just the geronomo plugins pom, or we need all of
geronimo, or just geronimo aspectj plugin parent? if you are the geronimo
dev you might know, but will everyone figure that out?

Milos



 I tried m2eclipse and iam about 20 times and always gave up, because
 they were simply NOT able to run my project. E.g. I have source/target
 set to 1.5 for compiler-plugin but require 1.6 for development. m2eclipse
 thinks that it needs to replace 1.6 with 1.5 wenn I do m2 enable of my
 project.

 However if all the bugs of these plugins would be fixed, and the
 auto-reactor feature was working, everything could be fine as well
 together with the suggested feature. One day there will be eclipse 4.x
 and support multi-projects so the entire project (and its reactor)
 can be managed as a whole.
 I heard this already works for idea.

 
  Milos
 

 Regards
  Jörg
 -BEGIN PGP SIGNATURE-
 Version: GnuPG v1.4.9 (GNU/Linux)
 Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

 iEYEARECAAYFAkoJ47EACgkQmPuec2Dcv//5iACfc1jnc4F33uoOKQ/JFKO8IUuP
 x5sAn2m0GO5n32Uz+r0C1Fa23x1PjXxx
 =zmBx
 -END PGP SIGNATURE-

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




Re: Progress on support for large projects

2009-05-13 Thread David Jencks


On May 12, 2009, at 7:02 PM, Ralph Goers wrote:



On May 12, 2009, at 6:20 PM, David Jencks wrote:



On May 12, 2009, at 3:43 PM, Ralph Goers wrote:



On May 12, 2009, at 2:43 PM, Brian Fox wrote:





As I already said, I talked about release-plugin and my view of  
the world
and it seems NOT to fit together. My POM-tree follows strict  
logical
aspects that is motivated by the architecture of the project and  
NOT by

the philosophy of some plugin.



I'm trying to understand your structure and motivations behind  
it, so if you
would care to elaborate, we can be sure to consider these aspects  
down the

road.


Well, you've seen mine. Imagine Apache commons where you wanted to  
run a build from the root of commons. Not everything changes with  
each release so it is silly to deploy new jar versions that  
haven't changed. So you create a bill of materials (bom) pom  
that has the versions of all the subprojects and anything wanting  
to use a commons project can just import that and then specify  
dependencies on the various commons subprojects without specifying  
a version. But to build this all the subprojects need to have the  
bom pom as their parent or grandparent. Thus, any time you change  
the bom pom version every subproject has to change even if nothing  
changed in it. PITA.


Granted, my library isn't as big as commons, put it still  
currently contains 22 pom.xml files that have to be modified each  
time the bom pom changes.


I'm fairly mystified how what you and Jorg appear to want could  
work with any of the scm systems I know about, that tag an entire  
file system subtree at once.  Maybe I don't understand what you  
guys are talking about at all. here's what I think you want:


file system structure showing projects
+root
+A
+B
+C
...
+D


Probably Jorg has further nesting, but I don't think that actually  
affects the argument.


Projects A, C, E, G,... need to be released right now, whereas  
projects B, D, F... are just fine and don't need releases.


IIUC you guys are supposing a parent pom for all these projects in  
root and want to be able to run a release on root and have the  
effect be to release just A, C, E, G and the root pom.


No. The root represents the library. The release is of the library,  
not the individual subprojects. I just don't want new versions  
created for subprojects that didn't change.



So if you run a release on root the entire tree will get tagged  
including B, D, F etc that you didn't want tagged.


Actually, I do want them tagged. The bill of materials represents  
a release of the whole library. It is just that some of the  
artifacts in the library didn't change. But they should all be part  
of the release tag.



So I think what you want to do is have a quick way to run releases  
on A,C,E,G,... and have each of those tagged individually and not  
tag the whole tree at once.


No. See above.



My impression is that what you are fighting is the scm system, not  
maven.


No. The SCM isn't a problem. However, mvn deploy will try to deploy  
artifacts that haven't changed since the last release. That is bad.  
Nexus should be able to silently ignore those or the deployer should  
somehow be able to detect that the artifact shouldn't be deployed.


I'm even more mystified and understand how you want to use scm even  
less.  One of the basic principles I have for scm is that stuff  
shouldn't be duplicated, in the sense that if some artifact is  
released at version 1.2.3.4 say, the scm location for that release can  
be found in only one, unique, place in the scm tree, such as an svn tag.


Now if I understand what you are proposing, its to have
+root(1.2-SNAPSHOT)
  +A(1.1-SNAPSHOT)
  +B(1.3-SNAPSHOT)

Only B has changed since the last release, which was of root (1.1),  
A(1.1) and B(1.2); these are the version in the release tag.


So you tag this after arranging the new release versions.  You new tag  
has root(1.2), A(1.1) and B(1.3), and trunk has root(1.3-SNAPSHOT),  
A(1.1-SNAPSHOT) and B(1.4-SNAPSHOT)


The problem I have with this is that A(1.1) is present in two  
different tags, violating the uniqueness principle I hold to.


Have I yet again misunderstood the actions you want to take during  
release or do you think the uniqueness principle is not worth  
following?  If I've misunderstood again, could you provide a more  
concrete example with versions and contents of tags to help me  
understand?


thanks
david jencks




Ralph


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




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



Re: Progress on support for large projects

2009-05-13 Thread Ralph Goers


On May 13, 2009, at 12:53 AM, David Jencks wrote:



I'm even more mystified and understand how you want to use scm even  
less.  One of the basic principles I have for scm is that stuff  
shouldn't be duplicated, in the sense that if some artifact is  
released at version 1.2.3.4 say, the scm location for that release  
can be found in only one, unique, place in the scm tree, such as an  
svn tag.


Now if I understand what you are proposing, its to have
+root(1.2-SNAPSHOT)
 +A(1.1-SNAPSHOT)
 +B(1.3-SNAPSHOT)

Only B has changed since the last release, which was of root (1.1),  
A(1.1) and B(1.2); these are the version in the release tag.


If B is the only thing that has changed then you would have:
+root(1.2-SNAPSHOT)
  +A(1.0)
  +B(1.3-SNAPSHOT)

In this case two artifacts would be deployed during the release:
1. The library bom pom (which, in this case, is the pom in root) for  
version 1.2.

2. The artifact for B 1.3

A 1.0 is part of the tag, is built and tested during the build, but is  
not redeployed to the repository. After the release the scm will  
contain:

+root(1.2)
  +A(1.0)
  +B(1.3)



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



Re: Progress on support for large projects

2009-05-13 Thread David Jencks


On May 13, 2009, at 7:02 AM, Ralph Goers wrote:



On May 13, 2009, at 12:53 AM, David Jencks wrote:



I'm even more mystified and understand how you want to use scm even  
less.  One of the basic principles I have for scm is that stuff  
shouldn't be duplicated, in the sense that if some artifact is  
released at version 1.2.3.4 say, the scm location for that release  
can be found in only one, unique, place in the scm tree, such as an  
svn tag.


Now if I understand what you are proposing, its to have
+root(1.2-SNAPSHOT)
+A(1.1-SNAPSHOT)
+B(1.3-SNAPSHOT)

Only B has changed since the last release, which was of root (1.1),  
A(1.1) and B(1.2); these are the version in the release tag.


If B is the only thing that has changed then you would have:
+root(1.2-SNAPSHOT)
 +A(1.0)
 +B(1.3-SNAPSHOT)

In this case two artifacts would be deployed during the release:
1. The library bom pom (which, in this case, is the pom in root) for  
version 1.2.

2. The artifact for B 1.3

A 1.0 is part of the tag, is built and tested during the build, but  
is not redeployed to the repository. After the release the scm will  
contain:

+root(1.2)
 +A(1.0)
 +B(1.3)



Sorry I wasn't more specific last night at 2:00 am :-).  I need more  
scm context to understand.  I'm assuming something like svn with


+tags
  +root-1.0 (1.0)
+A(1.0)
\B(1.0)
  +root-1.1 (1.1)
+A(1.0)
\B(1.1)
  \root-1.2 (1.1)
+A(1.0)
\B(1.2)
\trunk
  \root(1.2-SNAPSHOT)
+A( 1.0? 1.0-SNAPSHOT?? 1.1-SNAPSHOT???)
\B(1.3-SNAPSHOT)

I have several assumptions about releasing stuff...

- development will continue after the release
- therefore the version in trunk must be incremented so it's clear  
that snapshots are later than the release

- tags should not contain anything with a snapshot version
- releasing will create a tag of what's been released
- tagging for release creates a copy of an entire svn subtree, not a  
copy with stuff removed.


I see several problems with the svn tree I sketched above:
- there are 3 or 4 copies of A claiming to be version 1.0
- there is no plausible version for trunk/root/A
- in tags, the version of root doesn't match the end of the directory  
name. (there are 2 version 1.1 roots)


I must not be understanding something basic about what you are  
proposing I'm probably beating a long-dead horse but could you  
please be even more specific about what scm operations you want to  
have as part of a release and what the scm repo looks like afterwards?


thanks
david jencks





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




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



Re: Progress on support for large projects

2009-05-13 Thread Joerg Hohwiller
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hi David,

 [cut.]
 
 Sorry I wasn't more specific last night at 2:00 am :-).  I need more scm
 context to understand.  I'm assuming something like svn with
 
 +tags
   +root-1.0 (1.0)
 +A(1.0)
 \B(1.0)
   +root-1.1 (1.1)
 +A(1.0)
 \B(1.1)
   \root-1.2 (1.1)
 +A(1.0)
 \B(1.2)
 \trunk
   \root(1.2-SNAPSHOT)
 +A( 1.0? 1.0-SNAPSHOT?? 1.1-SNAPSHOT???)
 \B(1.3-SNAPSHOT)
 
 I have several assumptions about releasing stuff...
 
 - development will continue after the release
 - therefore the version in trunk must be incremented so it's clear
 that snapshots are later than the release
 - tags should not contain anything with a snapshot version
 - releasing will create a tag of what's been released
 - tagging for release creates a copy of an entire svn subtree, not a
 copy with stuff removed.
 
 I see several problems with the svn tree I sketched above:
 - there are 3 or 4 copies of A claiming to be version 1.0
 - there is no plausible version for trunk/root/A
 - in tags, the version of root doesn't match the end of the directory
 name. (there are 2 version 1.1 roots)
 
 I must not be understanding something basic about what you are
 proposing I'm probably beating a long-dead horse but could you
 please be even more specific about what scm operations you want to have
 as part of a release and what the scm repo looks like afterwards?

Like Ralph, I have no problem with my scm (which is indeed svn).
I also want to maintain versions of modules and have the problems
that when I change a version I typically have to change this
in all other POMs pointing to the module that changed version.
Besiders there can be excuses where a dependency version remains
unchanged, so no automatism that release-plugin could guess.
And I want to keep modules unchanged in the tree. In my case they would
NOT have to be rebuild but that does NOT matter to me.
Maintaining these redundant versions is hell if you do it by hand.
I have some hacky tools but it could be so easy if you could just
omit the version in the dependencies of my local pom.xml's.

To answer the SCM-structure question:
There maybe some good conventions but SVN gives you a lot of flexibility
in whatever you do. I personally always have a flat list of all my modules
in tags and then have the according module copied (tagged) there named by
its version. I never think that release-plugin has to deal with all
possible ways that users can do their release-management. It has to go
some way and there will always be people that want it different so I
think the release-plugin is NOT the magic answer to all of our problems.

 
 thanks
 david jencks

Regards
  Jörg
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkoLGWUACgkQmPuec2Dcv/9MggCbBGoMTwZOct1/WiOBUjPmUoxa
SQYAn2+uQ6MPAWWSSuUPyX9oK0wtr9hV
=YdFZ
-END PGP SIGNATURE-

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



Re: Progress on support for large projects

2009-05-13 Thread Joerg Hohwiller
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hi Milos,

 
 mvn eclipse:eclipse does perform a build (partially) and might even produce
 1 eclipse project for multiple maven projects (correct me if I'm wrong)

No it does not. But I hope it will one finest day.
And it will definitely do NOT compile or invoke tests.
All it does is invoking phases for code-generation.

 
 In NetBeans (IDE I use and develop maven integration for) no build is
 performed and we rely entirely on maven metadata when it comes to project
 representation. Doing a build is out of questions, opening of projects would
 be too slow. And it's a perfectly sound to assume that one wants to open
 just a single maven project from apache geronimo codebase without actually
 building the 200+ multiproject.

I am absolutely with you that you do NOT want to build entire geronimo
if just one module changes. What I was thinking about is that
if mvn somegoal is invoked in module some-module maven scans the pom.xml
of some-module. Currently it resolves all parents up to toplevel starting from
some-module. What it does NOT do is to go down from toplevel and scan (NOT
build!) recursively the entire project tree so all modules are available
to maven's internals (that what I named the reactor) but that does NOT mean,
that the goal is invoked on all of the modules but still only on some-module.
But now the invoked plugins could resolve what other-module in the tree is
about. I was suggesting to have this feature disabled by default but have
a command-line option to enable this.
Ask someone why you have to invoke eclipse:eclipse on toplevel everytime.
If the dependency of some-module has changed, you can NOT invoke eclipse:eclipse
just on some-module since the plugin then wants to resolve the dependencies
from the repository and adds JAR-Dependencies to the IDE project.
Further ask someone why you can not build some-module if it depends on
other-module but thats not already installed. It can be on the local disc
and the knowledge how to build some-module is available to maven but it
is simply too stupid to do it. You have to go and invoke install on other-module
yourself and then on some-module afterwards. Now try to explain this to somebody
new to maven. Next there might be some tests that fail in other-module so you
cant install it but still want to build some-module.

 Even with brutal performance hacks the 200 projects take about 10 minutes to
 open, while the single project is just a snap.

Surely.

 
 I'm not sure what the auto-reactor feature in eclipse does, 

Maybe my post was missleading, but I was talking about a vision
not about what already works.

 but in general
 and especially for large projects it's hard to figure automatically what the
 reactor is.. is it just the geronomo plugins pom, or we need all of
 geronimo, or just geronimo aspectj plugin parent? if you are the geronimo
 dev you might know, but will everyone figure that out?

Well let me say so. I am suggesting a new feature to maven that is 100% downward
compatible. Nobody has to use it if he does NOT like it. But it would solve the
problems of many users and make maven even better.

 
 Milos

Regards
  Jörg
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkoLHgoACgkQmPuec2Dcv/+L0gCZAfkMoCLgf8608h4vKxmGka7C
F0MAnRoehAtfciJHGFSFdyQLDI/cWCyi
=CpO/
-END PGP SIGNATURE-

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



Re: Progress on support for large projects

2009-05-13 Thread Joerg Hohwiller
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hi Ralph,

 
 I've been promised by Jason that the work on Maven 3 is going to fix
 some of these issues. I simply haven't had the time to look at the work
 on Maven 3 and even if I had, it has been changing at a fairly rapid
 pace for months.
 
 While, in principal, Maven's processing is pretty simple - it just
 collects artifacts and runs plugins - the reality is that there are lots
 of side effects and timing issues.

OK.

 
 The fix needed to address 2 things; determining the parent pom version
 and resolving variables so that when the pom is deployed to the
 repository the pom isn't ambiguous. That does not include resolving
 variables in dependencies because those are actually OK to not be locked
 down in the repo.  Unfortunately, once the pom is processed it is
 impossible to use the Maven Model object to create a new pom. It
 contains lots of information that wasn't in the original pom that
 shouldn't be in the pom deployed to a repository.  The fix I did took
 care of this effectively. Writing it to an alternate directory and then
 telling maven where it was meant that the artifact deployer didn't need
 any changes at all.

Okay. So thats what I guessed when I said that the MavenProject/Model is
just a stupid POJO and various plugins manipulate it with side effects.
Sounds a little hacky to me but thats the way it is. So my serialization
idea is nuts though.

Anyhow I think that if you have some information in memory, you should
NOT have to write it to the disc so that someone else can copy (read and write)
it again. I thought that you store the transformed XML in that new string
attribute (was it alternativeRepresentation) so the Installer/Deployer
could write this string if available instead of copying the pom.xml as is.

A big problem could be the encoding issue if you store XML in a string
and then want to save it with some Writer, you need to know the encoding
from the XML-header or you run into trouble.

 
 Ralph

Regards
  Jörg
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkoLIHwACgkQmPuec2Dcv//OawCfTCpa29oxzE68SoadDl2pYOC2
uAsAn1/+M2rOHg+UlrklPJRabJD7oK6s
=YnIP
-END PGP SIGNATURE-

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



Re: Progress on support for large projects

2009-05-13 Thread Ralph Goers


On May 13, 2009, at 10:41 AM, David Jencks wrote:


Sorry I wasn't more specific last night at 2:00 am :-).  I need more  
scm context to understand.  I'm assuming something like svn with


+tags
 +root-1.0 (1.0)
   +A(1.0)
   \B(1.0)
 +root-1.1 (1.1)
   +A(1.0)
   \B(1.1)
 \root-1.2 (1.1)
   +A(1.0)
   \B(1.2)
\trunk
 \root(1.2-SNAPSHOT)
   +A( 1.0? 1.0-SNAPSHOT?? 1.1-SNAPSHOT???)
   \B(1.3-SNAPSHOT)

I have several assumptions about releasing stuff...


Your assumptions are not completely correct.
a) In our case a release is aways off a branch. This isn't  
particularly relevant to the discussion but it does make production  
maintenance easier so I'll ignore it.
b) tagging doesn't create a copy of anything. It just is a label that  
is a shortcut to a revision on a branch. Multiple tags that point to  
the same revision are not a problem and don't incur much overhead.


So the tree really looks like:

+tags
  +root-1.0 (trunk revision 1)
+A(1.0)
+B(1.0)
  +root-1.1 (trunk revision 2)
+A(1.0)
+B(1.1)
  +root-1.2 (trunk revision 3)
+A(1.0)
+B(1.2)
/trunk at revision 4
  +root(1.2-SNAPSHOT)
+A(1.0)
+B(1.3-SNAPSHOT)

This assumes that A has not been modified since its initial release  
and B is currently under development and has not been released.





- development will continue after the release
- therefore the version in trunk must be incremented so it's clear  
that snapshots are later than the release

- tags should not contain anything with a snapshot version
- releasing will create a tag of what's been released
- tagging for release creates a copy of an entire svn subtree, not a  
copy with stuff removed.

See above. While the tag applies to the whole subtree, no copy is made.



I see several problems with the svn tree I sketched above:
- there are 3 or 4 copies of A claiming to be version 1.0
No. There are multiple tags that all point to the same subversion  
revision. This is not a problem.


- there is no plausible version for trunk/root/A
? If A has not been changed its version is still 1.0. If it has then  
it is 1.1-SNAPSHOT.


- in tags, the version of root doesn't match the end of the  
directory name. (there are 2 version 1.1 roots)
Why would you allow a branch that matches a tag? If I was going to  
allow a branch to be created named root-1.2 then I would require that  
all tags be named root-1.2.n. If I did that then I would have


+tags
  +root-1.0.0 (trunk revision 1)
+A(1.0.0)
+B(1.0.0)
  +root-1.1.0 (trunk revision 2)
+A(1.0.0)
+B(1.1.0)
  +root-1.2.0 (root-1.2 revision 3)
+A(1.0.0)
+B(1.2.0)
/root-1.0 (branched from trunk at revision 1)
  +A(1.0.0)
  +B(1.0.0)
/root-1.1 (branched from trunk at revision 2)
  +A(1.0.0)
  +B(1.1.0)
/root-1.2 (branched from trunk at revision 3)
  +A(1.0.0)
  +B(1.2.0)
/trunk at revision 4
  +root(1.2-SNAPSHOT)
+A(1.0)
+B(1.3-SNAPSHOT)



I must not be understanding something basic about what you are  
proposing I'm probably beating a long-dead horse but could you  
please be even more specific about what scm operations you want to  
have as part of a release and what the scm repo looks like afterwards?
I'm not proposing anything. I'm just explaining what this particular  
project has been doing for the last 5 years and why Maven 2 is a PITA  
in this regard. Maven 1 was actually easier for this particular project.


Ralph


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



Re: Progress on support for large projects

2009-05-13 Thread Ralph Goers


On May 13, 2009, at 12:33 PM, Joerg Hohwiller wrote:


Okay. So thats what I guessed when I said that the MavenProject/ 
Model is
just a stupid POJO and various plugins manipulate it with side  
effects.
Sounds a little hacky to me but thats the way it is. So my  
serialization

idea is nuts though.

Anyhow I think that if you have some information in memory, you should
NOT have to write it to the disc so that someone else can copy (read  
and write)
it again. I thought that you store the transformed XML in that new  
string

attribute (was it alternativeRepresentation) so the Installer/Deployer
could write this string if available instead of copying the pom.xml  
as is.


I think you are referring to one of the other patches that was  
submitted, not what I committed to the MNG-624 branch.



A big problem could be the encoding issue if you store XML in a string
and then want to save it with some Writer, you need to know the  
encoding

from the XML-header or you run into trouble.


My fix didn't store the XML in a string, it modified the DOM.

Ralph

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



Re: Progress on support for large projects

2009-05-13 Thread David Jencks


On May 13, 2009, at 12:55 PM, Ralph Goers wrote:



On May 13, 2009, at 10:41 AM, David Jencks wrote:


Sorry I wasn't more specific last night at 2:00 am :-).  I need  
more scm context to understand.  I'm assuming something like svn with


+tags
+root-1.0 (1.0)
  +A(1.0)
  \B(1.0)
+root-1.1 (1.1)
  +A(1.0)
  \B(1.1)
\root-1.2 (1.1)
  +A(1.0)
  \B(1.2)
\trunk
\root(1.2-SNAPSHOT)
  +A( 1.0? 1.0-SNAPSHOT?? 1.1-SNAPSHOT???)
  \B(1.3-SNAPSHOT)

I have several assumptions about releasing stuff...


Your assumptions are not completely correct.
a) In our case a release is aways off a branch. This isn't  
particularly relevant to the discussion but it does make production  
maintenance easier so I'll ignore it.

b) tagging doesn't create a copy of anything.
Maybe on the svn server that's true, but I'd never know it from the  
client view I get by svn co, svn up, etc.


It just is a label that is a shortcut to a revision on a branch.  
Multiple tags that point to the same revision are not a problem and  
don't incur much overhead.


I really don't care how much trouble releasing stuff causes infra disc  
purchase procedures :-)



So the tree really looks like:

+tags
 +root-1.0 (trunk revision 1)
   +A(1.0)
   +B(1.0)
 +root-1.1 (trunk revision 2)
   +A(1.0)
   +B(1.1)
 +root-1.2 (trunk revision 3)
   +A(1.0)
   +B(1.2)
/trunk at revision 4
 +root(1.2-SNAPSHOT)
   +A(1.0)
   +B(1.3-SNAPSHOT)

This assumes that A has not been modified since its initial release  
and B is currently under development and has not been released.


So, we seem to have different views on acceptable ways to use svn.  If  
I was involved in such a project I would kick and scream until
- each release came from a single clearly identifiable scm location  
(violated by multiple tags for A(1.0), and the presence of A(1.0) in  
trunk)
- trunk contained only SNAPSHOT version (except possibly while someone  
is actually doing a release -- behavior of the release plugin I'm not  
thrilled with) (violated by A(1.0) in trunk).

or I gave up and forked it.

I could be completely misguided in this, but it's my current viewpoint.







- development will continue after the release
- therefore the version in trunk must be incremented so it's  
clear that snapshots are later than the release

- tags should not contain anything with a snapshot version
- releasing will create a tag of what's been released
- tagging for release creates a copy of an entire svn subtree, not  
a copy with stuff removed.
See above. While the tag applies to the whole subtree, no copy is  
made.


From the point of view of what you get on a client machine, I don't  
understand this.







I see several problems with the svn tree I sketched above:
- there are 3 or 4 copies of A claiming to be version 1.0
No. There are multiple tags that all point to the same subversion  
revision. This is not a problem.


Apparently we disagree on this.




- there is no plausible version for trunk/root/A
? If A has not been changed its version is still 1.0. If it has then  
it is 1.1-SNAPSHOT.

Again we disagree on whether this is acceptable.





- in tags, the version of root doesn't match the end of the  
directory name. (there are 2 version 1.1 roots)
Why would you allow a branch that matches a tag? If I was going to  
allow a branch to be created named root-1.2 then I would require  
that all tags be named root-1.2.n. If I did that then I would have


+tags
 +root-1.0.0 (trunk revision 1)
   +A(1.0.0)
   +B(1.0.0)
 +root-1.1.0 (trunk revision 2)
   +A(1.0.0)
   +B(1.1.0)
 +root-1.2.0 (root-1.2 revision 3)
   +A(1.0.0)
   +B(1.2.0)
/root-1.0 (branched from trunk at revision 1)
 +A(1.0.0)
 +B(1.0.0)
/root-1.1 (branched from trunk at revision 2)
 +A(1.0.0)
 +B(1.1.0)
/root-1.2 (branched from trunk at revision 3)
 +A(1.0.0)
 +B(1.2.0)
/trunk at revision 4
 +root(1.2-SNAPSHOT)
   +A(1.0)
   +B(1.3-SNAPSHOT)



I must not be understanding something basic about what you are  
proposing I'm probably beating a long-dead horse but could you  
please be even more specific about what scm operations you want to  
have as part of a release and what the scm repo looks like  
afterwards?
I'm not proposing anything. I'm just explaining what this particular  
project has been doing for the last 5 years and why Maven 2 is a  
PITA in this regard. Maven 1 was actually easier for this particular  
project.


This process may work fine for the project in question and you in  
other circumstances, but would keep me from contributing no matter  
what build tool was in use.


Here, the release plugin seems to me to strongly promote good scm  
practices.  The only think I'd like to see is, given a setup like


trunk (has no pom)
  +parent-pom
  +P1
  +P2

  +P1000

an easy way to release all the, say,  odd numbered projects at once  
rather than running the release plugin on each one independently.


Anyway, I really appreciate your taking the time to explain your point  
of view to me.  While I 

Re: Progress on support for large projects

2009-05-13 Thread Christian Schulte
Ralph Goers schrieb:
 So the tree really looks like:
 
 +tags
+root-1.0 (trunk revision 1)
  +A(1.0)
  +B(1.0)
+root-1.1 (trunk revision 2)
  +A(1.0)
  +B(1.1)
+root-1.2 (trunk revision 3)
  +A(1.0)
  +B(1.2)
 /trunk at revision 4
+root(1.2-SNAPSHOT)
  +A(1.0)
  +B(1.3-SNAPSHOT)
 
 This assumes that A has not been modified since its initial release  
 and B is currently under development and has not been released.
 

What stops a developer from making changes to A(1.0) on trunk,
rebuilding locally - that is - overwriting release artifacts with
something different in the local repository, and then later on even
commit those changes forgetting to increase the version to a snapshot ?
Discipline ?

-- 
Christian

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



Re: Progress on support for large projects

2009-05-13 Thread Ralph Goers


On May 13, 2009, at 5:09 PM, Christian Schulte wrote:


Ralph Goers schrieb:

So the tree really looks like:

+tags
  +root-1.0 (trunk revision 1)
+A(1.0)
+B(1.0)
  +root-1.1 (trunk revision 2)
+A(1.0)
+B(1.1)
  +root-1.2 (trunk revision 3)
+A(1.0)
+B(1.2)
/trunk at revision 4
  +root(1.2-SNAPSHOT)
+A(1.0)
+B(1.3-SNAPSHOT)

This assumes that A has not been modified since its initial release
and B is currently under development and has not been released.



What stops a developer from making changes to A(1.0) on trunk,
rebuilding locally - that is - overwriting release artifacts with
something different in the local repository, and then later on even
commit those changes forgetting to increase the version to a  
snapshot ?

Discipline ?



Actually, this isn't at all the way we do releases. This was my  
response to David's hypothetical scenario which didn't make any sense  
to me. All I did was clean it up.


What we actually do looks more like:

+tags
  +library-1.0.0 (on branch-library-1.0) pom version is 1.0.0
+A(1.0.0)
+B(1.0.0)
+C(1.0.0)
  +library-1.0.1 (on branch-library-1.0) pom version is 1.0.1
+A(1.0.0)
+B(1.0.1)
+C(1.0.0)
  +library-1.1.0 (on branch-library-1.1) pom version is 1.1.0
+A(1.0.0)
+B(1.1.0)
+C(1.1.0)
+branches
  +branch-library-1.0 (pom is still 1.0.1 - no work in progress on  
branch)

+A(1.0.0)
+B(1.0.0)
+C(1.0.0)
  +branch-library-1.1 (pom is 1.1.0-SNAPSHOT) (work in progress)
+A(1.0.0)
+B(1.1.0)
+C(1.1.1-SNAPSHOT)
/trunk (library-1.2-SNAPSHOT) (Work in progress)
  +A(1.1.0-SNAPSHOT) (new work)
  +B(1.1.0)
  +C(1.2.0-SNAPSHOT) (work from branch-library-1.1 has been merged)

The point here is not to debate the right or wrong way to manage  
projects. It is what it is and it accomplishes our goals. The issue is  
that the release plugin (at least the last time I reviewed it)  
mandates that there is only one right way to do a release. As the  
debate on Legal discuss last week shows this isn't necessarily the  
case. I would suggest that the release plugin almost needs a lifecycle  
of its own where the actual work is accomplished through plugins. If  
things have changed significantly let me know and I'd be happy to look  
at it again.


Ralph
 


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



Re: Progress on support for large projects

2009-05-12 Thread Joerg Hohwiller
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hi Brian,

 Are you using the release plugin?
 Nope! I tried it and came to the point that is no good for me.
 I also had a discussion with the developers long time ago
 and filed some feature request. Anyhow I still think this
 is the wrong approach for me.

 
 Can you give more details about what doesn't work or doesn't match your
 process?

E.g. it tried to convince me to release all modules of my entire project
and complained if some module had a non SNAPSHOT version.

 

 [cut.]

 
 The new reactor modes are in 2.1.0 that can do some similar things.
 

 [cut.]
 
 Some of this is already done in 2.1.0

Great to hear that. Please give me some hint (weblink, example or whatever) to
get started with this.

Best regards
  Jörg
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkoJ4coACgkQmPuec2Dcv//ZqACgkQiOIFbclxDb1A/cZr1JjyiX
P4IAn2OiW+XcJizxnzYmmXRzsusBx/7n
=AinT
-END PGP SIGNATURE-

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



Re: Progress on support for large projects

2009-05-12 Thread Joerg Hohwiller
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hi Milos,
 
 relying on the reactor and giving up on being able to build the one project
 separately is very bad (read: completely breaks) any IDE integration.

I totally disagree. I am successfully using maven-eclipse-plugin (mvn
eclipse:eclipse) and this works perfectly with Eclipse except if you
do a lot of filtering. The suggested approach would have no influence on
my IDE, omitted versions would become inter-project-dependencies in eclipse
and everything is fine.

I tried m2eclipse and iam about 20 times and always gave up, because
they were simply NOT able to run my project. E.g. I have source/target
set to 1.5 for compiler-plugin but require 1.6 for development. m2eclipse
thinks that it needs to replace 1.6 with 1.5 wenn I do m2 enable of my project.

However if all the bugs of these plugins would be fixed, and the
auto-reactor feature was working, everything could be fine as well
together with the suggested feature. One day there will be eclipse 4.x
and support multi-projects so the entire project (and its reactor)
can be managed as a whole.
I heard this already works for idea.

 
 Milos
 

Regards
  Jörg
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkoJ47EACgkQmPuec2Dcv//5iACfc1jnc4F33uoOKQ/JFKO8IUuP
x5sAn2m0GO5n32Uz+r0C1Fa23x1PjXxx
=zmBx
-END PGP SIGNATURE-

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



Re: Progress on support for large projects

2009-05-12 Thread Joerg Hohwiller
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hi Ralph,

 Hi there,

 absolutely everybody having large maven projects is
 annoyed by maintaining the versions in all the poms.


 Are you using the release plugin?
 
 This problem probably goes away for anyone able to use the release
 plugin, but only because the release plugin does all the work, not
 because the need for the work goes away. If, for whatever reason, you
 can't use the release plugin, then this is a real pain.

Yep, I am having this pain and I now dozens of others that have
the same problems.





 Additionally the complete solution is quite simple
 and seems to be quite common sense:

 1. Allow to omitt versions in parent as well
 as in dependency that is available in the reactor.


 Omitting the parent is complicated. Ralph started an implementation
 but we
 found some issues with it at ApacheCon. I don't think it's gotten beyond
 that yet.
 
 Actually, the guys I work with started to complain about this again last
 week and want me to fix it. They suggested that rather than tackling
 both accepting a missing parent version and fixing the pom so that the
 pom written to the repository is fully resolved (i.e. the parent version
 is present in the deployed pom) that just accepting the missing parent
 would be enough. I'm not sure, but I'd be willing to look at it.
 
 I'm also not sure how much things have changed since I created the
 branch. I'll have to check.

I have read your comments.
Well thanks so far for all your work and invest.
I hope you have NOT lost your faith ;)

 
 The only real problem with what was on the MNG-624 branch was that it
 requires a place to create the resolved pom.xml. To do that it assumed a
 hardcoded location of target. If a parent pom redefines the build
 directory (it seems really odd to me that this is even allowed) then
 this is wrong. But trying to find the definition of the target variable
 requires looking at every parent, even if it isn't local, which is
 something I was trying to avoid.

I did not yet get the point, why you have to write a new pom.xml to the disc.
My naive illusion was that there is a central component that reads and parses
the POM in maven where you can hook into and perform the transformation.
Then all additional work is to assure, that plugins such as the install plugin
do NOT simply copy the pom.xml to the local repo but include the transformation.
Here we might run into the problem that the POM XML is de-serialized with
a parser (was it XPP or is it StAX) and the internal representation
looses information so it can NOT be serialized again without loosing
indentation, comments, etc. of the original pom.xml.

 
 Anyone is free to look at the branch and improve on it.


 You can use dependency management or properties to deal with omitting the
 dependencies. I personally never assume what will be contained in a
 reactor
 and structure my builds so that any module can always be built in
 isolation.
 Therefore, I can't see why you would want to omit the dependency for
 something in a reactor that may not be in the reactor all the time. The
 release plugin handles this for you when it's time to bump the versions.



 2. Ensure that omitted version as well as variables
 in groupId artifactId and version are replaced
 when a pom is installed in the repository.


 Agree with this.
 
 Yes, the fix in MNG-624 does a really good job of this.

So your patch also resolves variables and NOT only in parent
but also in dependencies-section?
Havent seen that...





 However I totally lost where we are and what is going on.

 http://jira.codehaus.org/browse/MNG-624
 http://jira.codehaus.org/browse/MNG-2971
 http://jira.codehaus.org/browse/MNG-3267
 http://jira.codehaus.org/browse/MNG-2971

 I could not find the one to omitt version in depdency.
 Can anybody remember. Or do I have to open a new one.

 I can not really tell how hard it is to make this
 work, but be sure that we can make millions of users
 happy with this!
 
 Where we are in this is that I have been totally booked writing code for
 other projects - mostly commons VFS and commons configuration. 

I have the same problem. The main reason why I am here is because
I am using maven in all my other OSS-projects and I love it but
sometimes I also hate it and hope that the tiny parts that are
not already perfect will go away some day...

 As Brian
 mentioned, he and I discussed this at the last ApacheCon US and found
 the issue noted above. I simply have not had the time to figure out how
 to solve that.  Even if you can't contribute a patch a really good idea
 would be welcomed.

I will try to give it a little dive - but I have NOT done much other
than some MOJO-coding so far and sometimes get lost with mercury,
plexus, wagon, etc. and I have just little time. Still looking for someone
who likes to pay me for doing OOS development ;)

 
 Ralph

Thanks
  Jörg
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using 

Re: Progress on support for large projects

2009-05-12 Thread Brian Fox


 
  Can you give more details about what doesn't work or doesn't match your
  process?

 E.g. it tried to convince me to release all modules of my entire project
 and complained if some module had a non SNAPSHOT version.


Since it's going to convert a module to a release version, you shouldn't
have to convert them by hand first and thus they would always be snapshots
in scm. It's true that it will want to release the tree from where ever you
run it, but that can be mitigated by constructing trees that match how you
do releases.



 
 
  [cut.]
 
 
  The new reactor modes are in 2.1.0 that can do some similar things.
 
 
  [cut.]
 
  Some of this is already done in 2.1.0

 Great to hear that. Please give me some hint (weblink, example or whatever)
 to
 get started with this.

 Best regards
   Jörg
 -BEGIN PGP SIGNATURE-
 Version: GnuPG v1.4.9 (GNU/Linux)
 Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

 iEYEARECAAYFAkoJ4coACgkQmPuec2Dcv//ZqACgkQiOIFbclxDb1A/cZr1JjyiX
 P4IAn2OiW+XcJizxnzYmmXRzsusBx/7n
 =AinT
 -END PGP SIGNATURE-

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




Re: Progress on support for large projects

2009-05-12 Thread Joerg Hohwiller
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Brian Fox wrote:

 Can you give more details about what doesn't work or doesn't match your
 process?
 E.g. it tried to convince me to release all modules of my entire project
 and complained if some module had a non SNAPSHOT version.

 
 Since it's going to convert a module to a release version, you shouldn't
 have to convert them by hand first and thus they would always be snapshots
 in scm. It's true that it will want to release the tree from where ever you
 run it, but that can be mitigated by constructing trees that match how you
 do releases.

As I already said, I talked about release-plugin and my view of the world
and it seems NOT to fit together. My POM-tree follows strict logical
aspects that is motivated by the architecture of the project and NOT by
the philosophy of some plugin.

Thanks anyways for your advice
  Jörg
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkoJ7N4ACgkQmPuec2Dcv//5uQCfXQVEGdOCjcCNZp+uMiDUvaFk
MV4AnRewsPtcFh9npnlsvuByNSmxmypN
=tQlc
-END PGP SIGNATURE-

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



Re: Progress on support for large projects

2009-05-12 Thread Brian Fox



 As I already said, I talked about release-plugin and my view of the world
 and it seems NOT to fit together. My POM-tree follows strict logical
 aspects that is motivated by the architecture of the project and NOT by
 the philosophy of some plugin.


I'm trying to understand your structure and motivations behind it, so if you
would care to elaborate, we can be sure to consider these aspects down the
road.


Re: Progress on support for large projects

2009-05-12 Thread Christian Edward Gruber

On May 12, 2009, at 5:43 PM, Brian Fox wrote:
My POM-tree follows strict logical aspects that is motivated by the  
architecture of the project and NOT by the philosophy of some plugin.



You do know these folks are trying to help, right?  ;)

Christian.

Christian Edward Gruber
christianedwardgru...@gmail.com
http://www.geekinasuit.com/


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



Re: Progress on support for large projects

2009-05-12 Thread Joerg Hohwiller
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hi again,

 I did not yet get the point, why you have to write a new pom.xml to the disc.
 My naive illusion was that there is a central component that reads and parses
 the POM in maven where you can hook into and perform the transformation.
 Then all additional work is to assure, that plugins such as the install plugin
 do NOT simply copy the pom.xml to the local repo but include the 
 transformation.
 Here we might run into the problem that the POM XML is de-serialized with
 a parser (was it XPP or is it StAX) and the internal representation
 looses information so it can NOT be serialized again without loosing
 indentation, comments, etc. of the original pom.xml.

I read your patch and started to get some parts of the puzzle.

1. The component that reads and parses the POMs is the MavenProjectBuilder.
So it is generally possible to do the transformation there.

2. Installing and deploying is NOT diretly done in the according plugins,
but in ArtifactInstaller/ArtifactDeployer. Wise decision of the maven
designers so we do NOT have to touch all MOJOs that deal with this.
Still I do NOT know if these plugins need some dependency-update to see
such change or if they just depend on the according API and the
implementation (DefaultArtifact*) comes with the artifact-version of maven 
itself.

So maybe my idea is right that for the long run maven developers should
think about being able to have a 1:1 (de)serialization possibility
from pom.xml to MavenProject and vice versa. This way one could
make transformations on the POM and ArtifactInstaller/ArtifactDeployer
will serialize the project to XML instead of copying.

But are there some MOJO-hacks out there that also manipulate
the MavenProject and would cause to modify POMs accidently on
install/deploy? Or is it NOT possible for regular MOJO to
change the MavenProject. As far as I see it is just a plain
POJO but it could be proxied or whatever.

Regards
  Jörg
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkoJ8dIACgkQmPuec2Dcv/9dcACeL7SEqDxSwuBJMUETpfFEEsRt
3VUAnApJkG7mPAYfF1ADSBslgP1k6lGk
=NAWp
-END PGP SIGNATURE-

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



Re: Progress on support for large projects

2009-05-12 Thread Joerg Hohwiller
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hi Brian,

 As I already said, I talked about release-plugin and my view of the world
 and it seems NOT to fit together. My POM-tree follows strict logical
 aspects that is motivated by the architecture of the project and NOT by
 the philosophy of some plugin.

 
 I'm trying to understand your structure and motivations behind it, so if you
 would care to elaborate, we can be sure to consider these aspects down the
 road.
 

Sorry, maybe my words were a little rude (thanks christian btw).
I am also NOT a native speaker...
Thanks for your friendly response though :)

My idea of release-plugin was that if a module in the tree (reactor)
has no snapshot version, it should NOT be released then.
This allows me to open individual snapshots of single modules
without versioning the entire tree (including modules that
have NOT changed at all).

But how would I tell release-plugin to open one module
for development as snapshot and update all other snapshot
modules that depend on it so they point on the proper version.

I started thinking about a swing GUI opened by the plugin
that shows the module tree and allows to change versions
including dependencies on that and shows modules that
point to an older version of a reactor module.

Whenever I thought about it, I came to the point that
the problem is just that you have to change versions
redundant in various POMs. So if you could just omit
the version in case you want to express that you
mean the version from the reactor that is in latest
state on your disc and in your IDE, all problems
were solved.
But as pointed out, when the POM is installed/deployed,
you have to insert the version valid at this time.

It is already possible if you define the versions
all in toplevel pom, set all versions of modules
with packaging pom to 1.0 and never change them
semantically in dependency and build sections
and finally add some XSLT MOJO bound to install phase
that transforms the installed pom replacing the version.
A hack so far, but my hope is that it will work
smooth one day with plain native maven standard.

Thanks again
  Jörg
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkoJ9oAACgkQmPuec2Dcv/8c5gCgmYPuA1K7Wg32nvFpFLlemoWr
oAIAnRmVKP801i71yysAVDen9b+BlK0P
=UIdK
-END PGP SIGNATURE-

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



Re: Progress on support for large projects

2009-05-12 Thread Ralph Goers


On May 12, 2009, at 2:43 PM, Brian Fox wrote:





As I already said, I talked about release-plugin and my view of the  
world

and it seems NOT to fit together. My POM-tree follows strict logical
aspects that is motivated by the architecture of the project and  
NOT by

the philosophy of some plugin.



I'm trying to understand your structure and motivations behind it,  
so if you
would care to elaborate, we can be sure to consider these aspects  
down the

road.


Well, you've seen mine. Imagine Apache commons where you wanted to run  
a build from the root of commons. Not everything changes with each  
release so it is silly to deploy new jar versions that haven't  
changed. So you create a bill of materials (bom) pom that has the  
versions of all the subprojects and anything wanting to use a commons  
project can just import that and then specify dependencies on the  
various commons subprojects without specifying a version. But to build  
this all the subprojects need to have the bom pom as their parent or  
grandparent. Thus, any time you change the bom pom version every  
subproject has to change even if nothing changed in it. PITA.


Granted, my library isn't as big as commons, put it still currently  
contains 22 pom.xml files that have to be modified each time the bom  
pom changes.


Ralph

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



Re: Progress on support for large projects

2009-05-12 Thread Ralph Goers


On May 12, 2009, at 3:01 PM, Joerg Hohwiller wrote:


-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hi again,

I did not yet get the point, why you have to write a new pom.xml to  
the disc.
My naive illusion was that there is a central component that reads  
and parses
the POM in maven where you can hook into and perform the  
transformation.
Then all additional work is to assure, that plugins such as the  
install plugin
do NOT simply copy the pom.xml to the local repo but include the  
transformation.
Here we might run into the problem that the POM XML is de- 
serialized with

a parser (was it XPP or is it StAX) and the internal representation
looses information so it can NOT be serialized again without loosing
indentation, comments, etc. of the original pom.xml.


I read your patch and started to get some parts of the puzzle.

1. The component that reads and parses the POMs is the  
MavenProjectBuilder.

So it is generally possible to do the transformation there.

2. Installing and deploying is NOT diretly done in the according  
plugins,

but in ArtifactInstaller/ArtifactDeployer. Wise decision of the maven
designers so we do NOT have to touch all MOJOs that deal with this.
Still I do NOT know if these plugins need some dependency-update to  
see

such change or if they just depend on the according API and the
implementation (DefaultArtifact*) comes with the artifact-version of  
maven itself.


So maybe my idea is right that for the long run maven developers  
should

think about being able to have a 1:1 (de)serialization possibility
from pom.xml to MavenProject and vice versa. This way one could
make transformations on the POM and ArtifactInstaller/ArtifactDeployer
will serialize the project to XML instead of copying.

But are there some MOJO-hacks out there that also manipulate
the MavenProject and would cause to modify POMs accidently on
install/deploy? Or is it NOT possible for regular MOJO to
change the MavenProject. As far as I see it is just a plain
POJO but it could be proxied or whatever.



I've been promised by Jason that the work on Maven 3 is going to fix  
some of these issues. I simply haven't had the time to look at the  
work on Maven 3 and even if I had, it has been changing at a fairly  
rapid pace for months.


While, in principal, Maven's processing is pretty simple - it just  
collects artifacts and runs plugins - the reality is that there are  
lots of side effects and timing issues.


The fix needed to address 2 things; determining the parent pom version  
and resolving variables so that when the pom is deployed to the  
repository the pom isn't ambiguous. That does not include resolving  
variables in dependencies because those are actually OK to not be  
locked down in the repo.  Unfortunately, once the pom is processed it  
is impossible to use the Maven Model object to create a new pom. It  
contains lots of information that wasn't in the original pom that  
shouldn't be in the pom deployed to a repository.  The fix I did took  
care of this effectively. Writing it to an alternate directory and  
then telling maven where it was meant that the artifact deployer  
didn't need any changes at all.


Ralph

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



Re: Progress on support for large projects

2009-05-12 Thread David Jencks


On May 12, 2009, at 3:43 PM, Ralph Goers wrote:



On May 12, 2009, at 2:43 PM, Brian Fox wrote:





As I already said, I talked about release-plugin and my view of  
the world

and it seems NOT to fit together. My POM-tree follows strict logical
aspects that is motivated by the architecture of the project and  
NOT by

the philosophy of some plugin.



I'm trying to understand your structure and motivations behind it,  
so if you
would care to elaborate, we can be sure to consider these aspects  
down the

road.


Well, you've seen mine. Imagine Apache commons where you wanted to  
run a build from the root of commons. Not everything changes with  
each release so it is silly to deploy new jar versions that haven't  
changed. So you create a bill of materials (bom) pom that has the  
versions of all the subprojects and anything wanting to use a  
commons project can just import that and then specify dependencies  
on the various commons subprojects without specifying a version. But  
to build this all the subprojects need to have the bom pom as their  
parent or grandparent. Thus, any time you change the bom pom version  
every subproject has to change even if nothing changed in it. PITA.


Granted, my library isn't as big as commons, put it still  
currently contains 22 pom.xml files that have to be modified each  
time the bom pom changes.


I'm fairly mystified how what you and Jorg appear to want could work  
with any of the scm systems I know about, that tag an entire file  
system subtree at once.  Maybe I don't understand what you guys are  
talking about at all. here's what I think you want:


file system structure showing projects
+root
  +A
  +B
  +C
...
  +D

Probably Jorg has further nesting, but I don't think that actually  
affects the argument.


Projects A, C, E, G,... need to be released right now, whereas  
projects B, D, F... are just fine and don't need releases.


IIUC you guys are supposing a parent pom for all these projects in  
root and want to be able to run a release on root and have the  
effect be to release just A, C, E, G and the root pom.


So if you run a release on root the entire tree will get tagged  
including B, D, F etc that you didn't want tagged.


So I think what you want to do is have a quick way to run releases on  
A,C,E,G,... and have each of those tagged individually and not tag the  
whole tree at once.


My impression is that what you are fighting is the scm system, not  
maven.


As far as project setup, what I've done in this situation is have a  
parent pom that isn't root but parallel to the projects: all the  
projects use this parent as their parent and obviously dont specify  
its location as ...  I then construct a pom that builds whatever I'm  
interested in working on in root, but don't check it into svn.  I've  
never had to release more than 2 projects at once in such a setup, so  
just releasing modules individually hasn't been a problem for me.  I  
can see that it would be a problem if I had 10 projects to release at  
once.  I'd think this is additional new functionality for e.g. the  
release plugin rather than something that can be created by modifying  
existing functionality.


I was really confused by this kind of situation until I realized that  
the problems with releasing complicated partial subtrees were caused  
by scm, not maven.  After I arranged the source so tagging would  
correspond to the independent versions I wanted the layout became much  
easier for me to understand.


Does this correspond at all to what you guys are talking about?

thanks
david jencks







Ralph

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




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



Re: Progress on support for large projects

2009-05-12 Thread Christian Schulte
Ralph Goers schrieb:
 On May 12, 2009, at 2:43 PM, Brian Fox wrote:
 


 As I already said, I talked about release-plugin and my view of the  
 world
 and it seems NOT to fit together. My POM-tree follows strict logical
 aspects that is motivated by the architecture of the project and  
 NOT by
 the philosophy of some plugin.

 I'm trying to understand your structure and motivations behind it,  
 so if you
 would care to elaborate, we can be sure to consider these aspects  
 down the
 road.
 
 Well, you've seen mine. Imagine Apache commons where you wanted to run  
 a build from the root of commons. Not everything changes with each  
 release so it is silly to deploy new jar versions that haven't  
 changed.

Why not just remove the modules which haven't changed from the parent ?
The updated parent can still be imported afterwards just as you describe
 and the release plugin could be updated to do this automatically as
well. Instead of failing whenever a non-snapshot version is encountered,
it could just remove that non-snapshot module element from the
corresponding parent and not touch that artifact's version anywhere
during release preparation. That's changing aggregation rules with every
release somehow, I admit.

-- 
Christian


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



Re: Progress on support for large projects

2009-05-12 Thread Ralph Goers


On May 12, 2009, at 6:20 PM, David Jencks wrote:



On May 12, 2009, at 3:43 PM, Ralph Goers wrote:



On May 12, 2009, at 2:43 PM, Brian Fox wrote:





As I already said, I talked about release-plugin and my view of  
the world
and it seems NOT to fit together. My POM-tree follows strict  
logical
aspects that is motivated by the architecture of the project and  
NOT by

the philosophy of some plugin.



I'm trying to understand your structure and motivations behind it,  
so if you
would care to elaborate, we can be sure to consider these aspects  
down the

road.


Well, you've seen mine. Imagine Apache commons where you wanted to  
run a build from the root of commons. Not everything changes with  
each release so it is silly to deploy new jar versions that haven't  
changed. So you create a bill of materials (bom) pom that has the  
versions of all the subprojects and anything wanting to use a  
commons project can just import that and then specify dependencies  
on the various commons subprojects without specifying a version.  
But to build this all the subprojects need to have the bom pom as  
their parent or grandparent. Thus, any time you change the bom pom  
version every subproject has to change even if nothing changed in  
it. PITA.


Granted, my library isn't as big as commons, put it still  
currently contains 22 pom.xml files that have to be modified each  
time the bom pom changes.


I'm fairly mystified how what you and Jorg appear to want could work  
with any of the scm systems I know about, that tag an entire file  
system subtree at once.  Maybe I don't understand what you guys are  
talking about at all. here's what I think you want:


file system structure showing projects
+root
 +A
 +B
 +C
...
 +D


Probably Jorg has further nesting, but I don't think that actually  
affects the argument.


Projects A, C, E, G,... need to be released right now, whereas  
projects B, D, F... are just fine and don't need releases.


IIUC you guys are supposing a parent pom for all these projects in  
root and want to be able to run a release on root and have the  
effect be to release just A, C, E, G and the root pom.


No. The root represents the library. The release is of the library,  
not the individual subprojects. I just don't want new versions created  
for subprojects that didn't change.



So if you run a release on root the entire tree will get tagged  
including B, D, F etc that you didn't want tagged.


Actually, I do want them tagged. The bill of materials represents a  
release of the whole library. It is just that some of the artifacts in  
the library didn't change. But they should all be part of the release  
tag.



So I think what you want to do is have a quick way to run releases  
on A,C,E,G,... and have each of those tagged individually and not  
tag the whole tree at once.


No. See above.



My impression is that what you are fighting is the scm system, not  
maven.


No. The SCM isn't a problem. However, mvn deploy will try to deploy  
artifacts that haven't changed since the last release. That is bad.  
Nexus should be able to silently ignore those or the deployer should  
somehow be able to detect that the artifact shouldn't be deployed.


Ralph


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



Re: Progress on support for large projects

2009-05-12 Thread Ralph Goers


On May 12, 2009, at 6:17 PM, Christian Schulte wrote:


Ralph Goers schrieb:

On May 12, 2009, at 2:43 PM, Brian Fox wrote:




As I already said, I talked about release-plugin and my view of the
world
and it seems NOT to fit together. My POM-tree follows strict  
logical

aspects that is motivated by the architecture of the project and
NOT by
the philosophy of some plugin.


I'm trying to understand your structure and motivations behind it,
so if you
would care to elaborate, we can be sure to consider these aspects
down the
road.


Well, you've seen mine. Imagine Apache commons where you wanted to  
run

a build from the root of commons. Not everything changes with each
release so it is silly to deploy new jar versions that haven't
changed.


Why not just remove the modules which haven't changed from the  
parent ?
The updated parent can still be imported afterwards just as you  
describe

and the release plugin could be updated to do this automatically as
well. Instead of failing whenever a non-snapshot version is  
encountered,

it could just remove that non-snapshot module element from the
corresponding parent and not touch that artifact's version anywhere
during release preparation. That's changing aggregation rules with  
every

release somehow, I admit.



Imagine that you could get a pom.xml for all of Apache Commons that  
contained the dependency management for it. Every time a commons  
project released a new Commons bill of materials would go with it.


a) You want all the projects to be part of the build to be sure that  
they all work together. Even though some projects didn't change,  
running the unit tests will help identify any compatibility problems.
b) You don't want each release's bill of materials to only contain  
what changed, it should reflect the whole library.


A release consists of converting all subprojects marked as snapshots  
to non-snapshots and leaving the other subprojects alone, tagging  
everything, building everything and then deploying only the artifacts  
that were modified to Nexus, along with the bom pom. Note - it does  
not end with changing everything to snapshots. We only do that when we  
actually change something.


Ralph



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



Re: Progress on support for large projects

2009-05-12 Thread Christian Schulte
Ralph Goers schrieb:
 
 Imagine that you could get a pom.xml for all of Apache Commons that  
 contained the dependency management for it. Every time a commons  
 project released a new Commons bill of materials would go with it.
 
 a) You want all the projects to be part of the build to be sure that  
 they all work together. Even though some projects didn't change,  
 running the unit tests will help identify any compatibility problems.

If an artifact did not change, those tests will always yield the same
results as during the release of that artifact. By did not change I
assume that not only the source code did not change, also the pom and
everything else also did not change. Maven did not change, not a single
Maven plugin changed, no dependency, etc. Constantly rebuilding a tag
without ever changing anything. If you want to ensure that some
artifacts work together, there is no need to rebuild them. Depending on
released artifacts suffices instead of rebuilding those tags over and
over again. If an artifact contains unit tests used to test that things
work together, that sounds like you are doing integration testing
instead of unit testing during the build. Creating an independent
artifact containing the integration tests and running those integration
tests independently helps a lot in such situations. Testing that
building those artifacts all together works is another story. That's
testing the build itself. I would say that's what the maven integration
tests are for.

 b) You don't want each release's bill of materials to only contain  
 what changed, it should reflect the whole library.

It does - except the modules element. If you do not change the release
versions of the artifacts you do not want to release, those just stay
the same with every new release of that bom. The modules element changes
with every release but that does not make any problems for the released
poms since that element is only used to aggregate modules during
building. The tag which gets created during the release cannot be used
to build all artifacts together. If that's what you want, there really
seems no other way to either edit the tagged pom after the release
re-adding all modules you did not release or release all those artifacts
together. That also means that even if no code changed for some of those
artifacts, the pom does which forces you to release with a different
version nevertheless. Even changing just the parent version produces a
new artifact version - that is - the jar file and the pom are tightly
coupled and there is no way to release just the pom without the jar.
Automatically resolving the parent seems quite dangerous if different
parent versions stop leading to different child versions.

 
 A release consists of converting all subprojects marked as snapshots  
 to non-snapshots and leaving the other subprojects alone, tagging  
 everything, building everything and then deploying only the artifacts  
 that were modified to Nexus, along with the bom pom. Note - it does  
 not end with changing everything to snapshots. We only do that when we  
 actually change something.

I think I do get your point. What is still unclear is why you want to
constantly rebuild those tags. Even if its just for running those tests
during the build. Why should those test results ever change if nothing
else has changed ? So I assume there must be some kind of changes
somewhere so that rebuilding the whole library really makes sense. What
then does not make sense is to not use snapshot versions which would
make the release plugin work for you out of the box.

-- 
Christian


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



Re: Progress on support for large projects

2009-05-12 Thread Ralph Goers


On May 12, 2009, at 9:30 PM, Christian Schulte wrote:


Ralph Goers schrieb:


Imagine that you could get a pom.xml for all of Apache Commons that
contained the dependency management for it. Every time a commons
project released a new Commons bill of materials would go with it.

a) You want all the projects to be part of the build to be sure that
they all work together. Even though some projects didn't change,
running the unit tests will help identify any compatibility problems.


If an artifact did not change, those tests will always yield the same
results as during the release of that artifact. By did not change I
assume that not only the source code did not change, also the pom and
everything else also did not change. Maven did not change, not a  
single

Maven plugin changed, no dependency, etc.


This assumption is incorrect. All the projects in the library use  
other parts of the library, just as commons projects use other commons  
projects. Because a project does not specify the version of the  
project it depends on but obtains it from the bom pom the dependency  
will change with the new release. Thus all subprojects must be tested.  
Because of this the rest of your response doesn't really apply.


Ralph


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



Re: Progress on support for large projects

2009-05-12 Thread Stephen Connolly
It sounds like some people should have a look at the
versions-maven-plugin...

ok, so it will still force updating your pom, but it will allow releasing
individual modules using the release plugin and then updating the reactor to
reflect the new release.

-Stephen


Re: Progress on support for large projects

2009-05-10 Thread Joerg Hohwiller
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

 Hi there,

thanks for your answer...

 
 absolutely everybody having large maven projects is
 annoyed by maintaining the versions in all the poms.
 
 
 Are you using the release plugin?

Nope! I tried it and came to the point that is no good for me.
I also had a discussion with the developers long time ago
and filed some feature request. Anyhow I still think this
is the wrong approach for me.

 
 
 Additionally the complete solution is quite simple
 and seems to be quite common sense:
 
 1. Allow to omitt versions in parent as well
 as in dependency that is available in the reactor.
 
 
 Omitting the parent is complicated. Ralph started an implementation but we
 found some issues with it at ApacheCon. I don't think it's gotten beyond
 that yet.

I have read parts of this. I hope there is a chance to see this in the
future.

 
 You can use dependency management or properties to deal with omitting the
 dependencies. I personally never assume what will be contained in a reactor
 and structure my builds so that any module can always be built in isolation.
 Therefore, I can't see why you would want to omit the dependency for
 something in a reactor that may not be in the reactor all the time. The
 release plugin handles this for you when it's time to bump the versions.

I see your point. But I am always building from toplevel.
Anyhow I am also dreaming of a cmd-option in maven 3 that enables
a mode where maven walks up to the loplevel pom (as far as locally
available) and creates the entire reactor while still building
just the module where it was invoked. This could solve the problem you
pointed out as well as many other problems, e.g. to do dependent builds
of local modules.

Anyhow this would just be a feature that does not hurt and
would not cause downward compatibility problems if assured,
that install/deploy will fill in the omitted version.


 
 
 2. Ensure that omitted version as well as variables
 in groupId artifactId and version are replaced
 when a pom is installed in the repository.
 
 
 Agree with this.

Great. So I hope for MNG-2971. Anybody out there
can let me know if this is just waiting for contribution.
I might work on this one if it is just about that feature
in the install-plugin. If there is some more general architectural
change needed in order to make this also work with release-plugin
and many others let me know - I might not see all possible problems.
I think I also read some ideas about POM-Transformation in maven 3...

 
 
 However I totally lost where we are and what is going on.
 
 http://jira.codehaus.org/browse/MNG-624
 http://jira.codehaus.org/browse/MNG-2971
 http://jira.codehaus.org/browse/MNG-3267
 http://jira.codehaus.org/browse/MNG-2971
 
 I could not find the one to omitt version in depdency.
 Can anybody remember. Or do I have to open a new one.
 
 I can not really tell how hard it is to make this
 work, but be sure that we can make millions of users
 happy with this!
 
 Thanks
  Jörg

Regards
  Jörg

-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkoG0h4ACgkQmPuec2Dcv/8zqgCghlevEs/YlVRLaaTIWQl6yi5W
kJYAn00C5R0sjXjIl6Z08EtMCFEFIMHN
=yhX0
-END PGP SIGNATURE-

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



Re: Progress on support for large projects

2009-05-10 Thread Brian Fox
  Are you using the release plugin?

 Nope! I tried it and came to the point that is no good for me.
 I also had a discussion with the developers long time ago
 and filed some feature request. Anyhow I still think this
 is the wrong approach for me.


Can you give more details about what doesn't work or doesn't match your
process?


 
 
  Additionally the complete solution is quite simple
  and seems to be quite common sense:
 
  1. Allow to omitt versions in parent as well
  as in dependency that is available in the reactor.
 
 
  Omitting the parent is complicated. Ralph started an implementation but
 we
  found some issues with it at ApacheCon. I don't think it's gotten beyond
  that yet.

 I have read parts of this. I hope there is a chance to see this in the
 future.

 
  You can use dependency management or properties to deal with omitting
 the
  dependencies. I personally never assume what will be contained in a
 reactor
  and structure my builds so that any module can always be built in
 isolation.
  Therefore, I can't see why you would want to omit the dependency for
  something in a reactor that may not be in the reactor all the time. The
  release plugin handles this for you when it's time to bump the versions.

 I see your point. But I am always building from toplevel.
 Anyhow I am also dreaming of a cmd-option in maven 3 that enables
 a mode where maven walks up to the loplevel pom (as far as locally
 available) and creates the entire reactor while still building
 just the module where it was invoked. This could solve the problem you
 pointed out as well as many other problems, e.g. to do dependent builds
 of local modules.

 Anyhow this would just be a feature that does not hurt and
 would not cause downward compatibility problems if assured,
 that install/deploy will fill in the omitted version.


The new reactor modes are in 2.1.0 that can do some similar things.



 
 
  2. Ensure that omitted version as well as variables
  in groupId artifactId and version are replaced
  when a pom is installed in the repository.
 
 
  Agree with this.

 Great. So I hope for MNG-2971. Anybody out there
 can let me know if this is just waiting for contribution.
 I might work on this one if it is just about that feature
 in the install-plugin. If there is some more general architectural
 change needed in order to make this also work with release-plugin
 and many others let me know - I might not see all possible problems.
 I think I also read some ideas about POM-Transformation in maven 3...


Some of this is already done in 2.1.0


 
 
  However I totally lost where we are and what is going on.
 
  http://jira.codehaus.org/browse/MNG-624
  http://jira.codehaus.org/browse/MNG-2971
  http://jira.codehaus.org/browse/MNG-3267
  http://jira.codehaus.org/browse/MNG-2971
 
  I could not find the one to omitt version in depdency.
  Can anybody remember. Or do I have to open a new one.
 
  I can not really tell how hard it is to make this
  work, but be sure that we can make millions of users
  happy with this!
 
  Thanks
   Jörg

 Regards
   Jörg

 -BEGIN PGP SIGNATURE-
 Version: GnuPG v1.4.9 (GNU/Linux)
 Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

 iEYEARECAAYFAkoG0h4ACgkQmPuec2Dcv/8zqgCghlevEs/YlVRLaaTIWQl6yi5W
 kJYAn00C5R0sjXjIl6Z08EtMCFEFIMHN
 =yhX0
 -END PGP SIGNATURE-

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




Re: Progress on support for large projects

2009-05-10 Thread Ralph Goers


On May 9, 2009, at 7:42 PM, Brian Fox wrote:

On Sat, May 9, 2009 at 5:44 PM, Joerg Hohwiller jo...@j- 
hohwiller.dewrote:



-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hi there,

absolutely everybody having large maven projects is
annoyed by maintaining the versions in all the poms.



Are you using the release plugin?


This problem probably goes away for anyone able to use the release  
plugin, but only because the release plugin does all the work, not  
because the need for the work goes away. If, for whatever reason, you  
can't use the release plugin, then this is a real pain.






Additionally the complete solution is quite simple
and seems to be quite common sense:

1. Allow to omitt versions in parent as well
as in dependency that is available in the reactor.



Omitting the parent is complicated. Ralph started an implementation  
but we
found some issues with it at ApacheCon. I don't think it's gotten  
beyond

that yet.


Actually, the guys I work with started to complain about this again  
last week and want me to fix it. They suggested that rather than  
tackling both accepting a missing parent version and fixing the pom so  
that the pom written to the repository is fully resolved (i.e. the  
parent version is present in the deployed pom) that just accepting the  
missing parent would be enough. I'm not sure, but I'd be willing to  
look at it.


I'm also not sure how much things have changed since I created the  
branch. I'll have to check.


The only real problem with what was on the MNG-624 branch was that it  
requires a place to create the resolved pom.xml. To do that it assumed  
a hardcoded location of target. If a parent pom redefines the build  
directory (it seems really odd to me that this is even allowed) then  
this is wrong. But trying to find the definition of the target  
variable requires looking at every parent, even if it isn't local,  
which is something I was trying to avoid.


Anyone is free to look at the branch and improve on it.



You can use dependency management or properties to deal with  
omitting the
dependencies. I personally never assume what will be contained in a  
reactor
and structure my builds so that any module can always be built in  
isolation.

Therefore, I can't see why you would want to omit the dependency for
something in a reactor that may not be in the reactor all the time.  
The
release plugin handles this for you when it's time to bump the  
versions.





2. Ensure that omitted version as well as variables
in groupId artifactId and version are replaced
when a pom is installed in the repository.



Agree with this.


Yes, the fix in MNG-624 does a really good job of this.






However I totally lost where we are and what is going on.

http://jira.codehaus.org/browse/MNG-624
http://jira.codehaus.org/browse/MNG-2971
http://jira.codehaus.org/browse/MNG-3267
http://jira.codehaus.org/browse/MNG-2971

I could not find the one to omitt version in depdency.
Can anybody remember. Or do I have to open a new one.

I can not really tell how hard it is to make this
work, but be sure that we can make millions of users
happy with this!


Where we are in this is that I have been totally booked writing code  
for other projects - mostly commons VFS and commons configuration. As  
Brian mentioned, he and I discussed this at the last ApacheCon US and  
found the issue noted above. I simply have not had the time to figure  
out how to solve that.  Even if you can't contribute a patch a really  
good idea would be welcomed.


Ralph

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



Re: Progress on support for large projects

2009-05-10 Thread Milos Kleint
On Sun, May 10, 2009 at 3:09 PM, Joerg Hohwiller jo...@j-hohwiller.dewrote:

 -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA1


 
  You can use dependency management or properties to deal with omitting
 the
  dependencies. I personally never assume what will be contained in a
 reactor
  and structure my builds so that any module can always be built in
 isolation.
  Therefore, I can't see why you would want to omit the dependency for
  something in a reactor that may not be in the reactor all the time. The
  release plugin handles this for you when it's time to bump the versions.

 I see your point. But I am always building from toplevel.
 Anyhow I am also dreaming of a cmd-option in maven 3 that enables
 a mode where maven walks up to the loplevel pom (as far as locally
 available) and creates the entire reactor while still building
 just the module where it was invoked. This could solve the problem you
 pointed out as well as many other problems, e.g. to do dependent builds
 of local modules.


relying on the reactor and giving up on being able to build the one project
separately is very bad (read: completely breaks) any IDE integration.

Milos


Re: Progress on support for large projects

2009-05-09 Thread Brian Fox
On Sat, May 9, 2009 at 5:44 PM, Joerg Hohwiller jo...@j-hohwiller.dewrote:

 -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA1

 Hi there,

 absolutely everybody having large maven projects is
 annoyed by maintaining the versions in all the poms.


Are you using the release plugin?



 Additionally the complete solution is quite simple
 and seems to be quite common sense:

 1. Allow to omitt versions in parent as well
 as in dependency that is available in the reactor.


Omitting the parent is complicated. Ralph started an implementation but we
found some issues with it at ApacheCon. I don't think it's gotten beyond
that yet.

You can use dependency management or properties to deal with omitting the
dependencies. I personally never assume what will be contained in a reactor
and structure my builds so that any module can always be built in isolation.
Therefore, I can't see why you would want to omit the dependency for
something in a reactor that may not be in the reactor all the time. The
release plugin handles this for you when it's time to bump the versions.



 2. Ensure that omitted version as well as variables
 in groupId artifactId and version are replaced
 when a pom is installed in the repository.


Agree with this.



 However I totally lost where we are and what is going on.

 http://jira.codehaus.org/browse/MNG-624
 http://jira.codehaus.org/browse/MNG-2971
 http://jira.codehaus.org/browse/MNG-3267
 http://jira.codehaus.org/browse/MNG-2971

 I could not find the one to omitt version in depdency.
 Can anybody remember. Or do I have to open a new one.

 I can not really tell how hard it is to make this
 work, but be sure that we can make millions of users
 happy with this!

 Thanks
  Jörg
 -BEGIN PGP SIGNATURE-
 Version: GnuPG v1.4.9 (GNU/Linux)
 Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

 iEYEARECAAYFAkoF+UIACgkQmPuec2Dcv//gDACfRvtIJ+CrTatgMZiynQ/2/f7+
 7DQAni6uH3UkGSU0WNFKuUCz5OsyrGy3
 =Jn88
 -END PGP SIGNATURE-

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