Thanks for the heads up, Emmanuel.  I'm not sure we will benefit from this
feature because we might merge all subprojects into one big fat project with
'provided' dependencies.  Of course we need some discussion.

Trustin

On 10/14/06, Emmanuel Lecharny <[EMAIL PROTECTED]> wrote:

Hi Mina folks,

as I was attending ApacheCon at Austin, I have had many interesting
discussions with some Maven peeps. It's really good to have those guys -
Martin Van Den Bemt, Jason Van Zyll, all theose 'van' something :) -
around.

They showed me a very cool feature of Maven called Dependency Management.
The idea is to a void using jars version into leaf projects, but instead
gather all the used number into the top level project. Ok, let's have a
sample :

we have Mina, and we have many sub-projects like Mina-core,
Mina-filter-compression, etc, all of those guys having a pom.xml depending
on the top-level pom.xml. We are using nlog4j-1.2.25 in almost all the
jars,
commons-xxxx in many of those sub-projects, etc. So what we should do is
to
declare those dependencies in all the pom.xml, but remove the version
number
in all of them, and add a list of dependencies in the top level project
with
the vesion, like that :
<dependencyManagement>
  <dependencies>
    <dependency>
     <groupId>antlr</groupId>
     <artifactId>antlr</artifactId>
     <version>2.7.2</version>
   </dependency>
   <dependency>
     <groupId>backport-util-concurrent</groupId>
     <artifactId>backport-util-concurrent</artifactId>
     <version>2.1</version>
   </dependency>
...

</dependencyManagmenent>

and in, let's say, mina-filter-compression pom.xml, we will have that :

...
<dependencies>

   <dependency>
     <groupId>org.apache.mina</groupId>
     <artifactId>mina-core</artifactId>
     <version>${pom.version}</version>
   </dependency>

   <dependency>
     <groupId>org.slf4j</groupId>
     <artifactId>slf4j-simple</artifactId>
     <!--version>1.0</version-->                 !!!! Note that I
commented
the version here
     <scope>provided</scope>
   </dependency>

What is this good for? It helps us saving time when we have to bump up a
new
version of a jar. For instance, nlog4j is used in almsot all sub-poject,
so
when we go to 1.2.19 to 1.2.25, it takes a hell of time changing 40
subprojects pom.xml. And it's error prone. Instead of doing that, with
dependency managment, we just have to change one single file.

So, question : what do you think about adopting this technic in Mina ?
(the
top level pom.xml will be the MINA ones). It can also be used to bump up
MINA version when a new release is created.

Just tell me, I can do the modification.

Emmanuel Lécharny

--
Cordialement,
Emmanuel Lécharny




--
what we call human nature is actually human habit
--
http://gleamynode.net/
--
PGP key fingerprints:
* E167 E6AF E73A CBCE EE41  4A29 544D DE48 FE95 4E7E
* B693 628E 6047 4F8F CFA4  455E 1C62 A7DC 0255 ECA6

Reply via email to