Hi Chuck,
Chuck Hill wrote:
>
>
> I don't see what a dependency management mechanism gets me over this.
> What work does it save me?
1) You don't have to worry about transitive dependencies.
If you want to use Spring Security in one of your projects, you only
have to declare the Spring Security dependency. The dependency
management tool will search and download all the transitive dependencies
for you.
2) It makes easy to change between dependency versions.
You can easily change the Spring Security dependency version from 2.0.1
to 2.0.3. All the transitive dependencies will be updated by the
dependency management tool.
3) You can search for dependencies in one place.
www.mvnrepository.com. You can use Maven repositories even if you are
using Ivy as the dependency management tool.
If you are using Maven + an Eclipse integration (m2eclipse or q4e) you
can search for dependencies inside Eclipse.
If you use a dependency management tool + enterprise repository manager
you have more advantages:
4) Easy to keep developers updated.
Suppose developer A works on project X and developer B works on project
Y. The project X depends on Y. Developer B can easily deploy an updated
package of Y to the enterprise repository and developer A can get this
update without trouble.
If you also use a continuous integration server, developers have only to
commit changes and build their projects. The dependency management tool
can check for new available versions of your dependencies (I don't know
if Ivy has this feature).
5) Fast to download dependencies.
When you need a dependency, the enterprise repository download it once.
All developers download things from the enterprise repository. It acts
like a proxy.
I know you have alternatives for this.
6) Saves time of people you may not be aware of.
IMHO, if we develop open source projects, we have to worry about how
other people will use our software. How difficult it is for people we
haven't meet to build the project successfully. How difficult is for
them to understand and make changes in our software. The dependency
management provides clear information about each dependency used by our
software.
> How much does it cost in terms of my time
> fiddling with it?
Neither two days nor two years. You will need some time to learn how to
use a tool that provides this kind of feature (Maven or Ivy). I think
you can start using Ivy very fast. But I have no experiences with that
tool. So, I can't say what problems you will figure out.
Something I can say is: if you want real dependency management for your
team, you must use an Enterprise Repository Manager. Using Maven/Ivy
without a repository manager solves your problem. The repository manager
solves the entire team dependency management problem.
We are using Archiva[1] here for that purpose. But you can take a look
at Nexus[2] and Artifactory[3]. All those tools are compatible with Ivy
too.
>
>>
>> Can you give a more concrete example of complex Maven build?
>
> The one for dbUnit, the last time I looked. Wandering though that,
> trying to figure out which magic names I needed to use was no easier
> than with Ant.
>
I have no experience with dbUnit. I did a quick search on web and found
this plug-in [4]. The examples are really verbose. But you can use Ant
inside Maven if you prefer. Take a look on this thread [5]. Or maybe you
can write a better plug-in to integrate Maven and dbUnit. :)
Anyway, you don't stop using WebObjects because of WOLips classpath
problems, right? You contribute to make WOLips better. Maven is not
complete for sure. But comparing advantages and drawbacks, I prefer to
stay with Maven (like I prefer to stay with WebObjects and WOLips).
[1]http://archiva.apache.org/
[2]http://nexus.sonatype.org/
[3]http://www.jfrog.org/sites/artifactory/latest/index.html
[4]http://mojo.codehaus.org/dbunit-maven-plugin/
[5]http://www.nabble.com/RE%3A-Does-anyone-know-how-to-use-the-maven-DBUnit-plugin--p5075937.html
Cheers,
Henrique
This archive was generated by hypermail 2.0.0 : Thu Jul 10 2008 - 21:00:23 EDT