I gonna auto-answer some of my questions, but it induces more other questions :)

I'm playing with Maven an try to set my dream environment :

- I want two repos : one for jars, one for plugins : is it possible ?

Definitively. There is a <repositories> element and a <pluginRepositories> one. Great !

- I want those repos be at the same level than the top level pom.xml : jars and plugins respectively :

.
..
/jars
/plugins
/project1
/project2
pom.xml

and my pom.xml will contain :

<snip/>


Is it correct ?

Part of my new pom.xml :
 <repositories>
   <repository>
    <id>central</id>
    <name>Apache Directory Repository</name>
    <url>jars</url>
    <layout>default</layout>
   </repository>
 </repositories>

Well, now have a problem : how do I set up the url to point on jars. If I go up to a subproject (like project1), then I can't build my project, because there is no 'jars' directory in it. So the url should be something like $basedir/jars, where $basedir is the pom.xml path where $basedir is declared. is it possible?

- Now, I don't want Maven to look after jars or plugins in the outer world. Modifying settings.xml does not fit me, because that means other users have to set it on their computer, and tis is a global element. I want to disable external repos from the top level pom.xml. Is it possible ?

Don't know yet. My RTFM session was not completely satisfying : the "better build with maven" is a great doco, but very general. And browsing the web site lead me to something I strongly desagree with : "It is not recommended that you store your JARs in CVS. ... With Maven these standard utilities can be stored in your local repository and shared by any number of builds.

This has the following advantages:
*1) It uses less storage"
*Who cares ??? For less than 200$, I can buy 300Go disks. ApacheDS repository is only 55 Mb big. This is NOTHING.
*2) It makes checking out a project quicker
*Who cares? I do check out ADS completely very often (around once a week), and I really think I'm very untypical. You generally checkout a project a few times in its whole life, and even if it takes 10 minutes, big deal.
*3) No need for versioning
*This is all but an advantage. This is the way to break a configuration managment. As you don't version, you have no way to guarantee that a jar you are downloading is the one which has been use for the current version of the product you are building. It is said on Maven web site that you don't need to store in CVS immutable files, because if the file change, its name change accordingly (junit-3.8.1.jar -> junit-4.1.0.jar, for instance). Badly wrong. Not that far away, many jar's name weren't changed. You had to look at the manifest to know which version it was, if the developper has put this number in it :(. IBM Websphere is still using this naming scheme (poor poor deployers ...). And I have seen sooo many times a developper modifying a jar to add the last forgotten patch without modifying the jar's name (and of course, this patch break something in your code, and of course he was subtle enough to re-generate the sha1 files so that its last minute and at nigth modification went through all the Q&A processes ...)

Ok, ok, personnal opinion expressed...

More RTFM to come ! I may finally adopt maven and use it frantically :)

Emmanuel


Reply via email to