Re: Maven Optimism

From: Henrique Prange (hprang..mail.com)
Date: Thu Jul 10 2008 - 20:57:22 EDT

  • Next message: Jim Kinsey (JIRA): "[OS-JIRA] Created: (WOL-853) [Entity Modeler] Column names are incorrectly populated when using single-table inheritance"

    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