On May 16, 2008, at 2:17 AM, Jarek Gawor wrote:
Jason,
Can you explain why?
Seems like I have to give this speech several times each year. I have
already sent numerous emails on the subject and spent a lot of time
trying to get rid of these properties, which I'm sad to see slowly
creeping back into the build.
The main problem is that using pom properties to manage versions of
dependencies adds additional complexity to the build and makes it
harder to actually see what versions of dependencies are being used
when inspecting poms (because the version property can not live close
to the dependency definition, when trying to understand the versions
used, a lot of bouncing around in the pom is required).
A secondary problem is that once folks see there is a property for the
version, they often keep re-specifying the version of dependencies
instead of letting maven use its dependencyManagement configuration to
resolve versions. For example, take a look at how the ${dojoVersion}
(and ${dojoLegacyVersion} properties are being used by server/trunk
#656813. You will find that each time one of the dojo artifacts is
referenced its version is also specified, when the version should only
be configured once in a dependenyManagement section.
This was one of the few properties which I had left in there before
due to the build needing to know the version to unpack and include
bits of the release archives into our dojo war files.
BUT, its not really needed, as we can figure out what the directory
name is dynamically, making this property unnecessary.
Some of the other properties I had also left there, like the
derbyVersion, since there is a bug in Maven making certain usage of
dependencyManagement information unusable. But overall I firmly
believe that we should use Maven's dependencyManagement mechanism to
manage all versions, and not dance around that by using properties, as
was the norm with Maven 1.
Our top-level pom is already overly complicated with all of the
dependencies used by various plugins. It has become almost
unmanageable. Every once in a while I inspect it to look for
problems, and often I find that folks have duplicated dependencies, or
forgot to remove old dependencies, leaving the pom to grow out of
control with junk. Adding properties for the versions of each
dependency will only compound that problem and make this file even
more unmanageable.
--jason
Jarek
On Thu, May 15, 2008 at 2:46 PM, <[EMAIL PROTECTED]> wrote:
Author: jdillon
Date: Thu May 15 11:46:43 2008
New Revision: 656788
URL: http://svn.apache.org/viewvc?rev=656788&view=rev
Log:
STOP using properties to define versions for dependencies!!!!
Modified:
geronimo/server/trunk/pom.xml
Modified: geronimo/server/trunk/pom.xml
URL:
http://svn.apache.org/viewvc/geronimo/server/trunk/pom.xml?rev=656788&r1=656787&r2=656788&view=diff
=
=
=
=
=
=
=
=
=
=====================================================================
--- geronimo/server/trunk/pom.xml (original)
+++ geronimo/server/trunk/pom.xml Thu May 15 11:46:43 2008
@@ -67,8 +67,10 @@
<geronimoSchemaVersion>1.2</geronimoSchemaVersion>
<!--
- Having a single well named version properties makes
automatic updating for the weekly build much easier.
+ FIXME: STOP using properties for dependency versions
unless you absolutly need them,
+ ie. you have a hundred dependencies that all use
the same version.
-->
+
<openejbVersion>3.1-SNAPSHOT</openejbVersion>
<yokoVersion>1.0-SNAPSHOT</yokoVersion>
<derbyVersion>10.2.2.0</derbyVersion>
@@ -83,10 +85,6 @@
<plutoVersion>1.1.6-G643117</plutoVersion>
<openjpaVersion>1.0.2</openjpaVersion>
<xbeanVersion>3.3</xbeanVersion>
- <gmavenVersion>1.0-rc-1</gmavenVersion>
- <minaVersion>1.1.6</minaVersion>
- <slf4jVersion>1.5.0</slf4jVersion>
- <groovyVersion>1.5.6</groovyVersion>
<wadiVersion>2.0-SNAPSHOT</wadiVersion>
<!-- Deployers -->
@@ -484,25 +482,25 @@
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
- <version>${slf4jVersion}</version>
+ <version>1.5.0</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
- <version>${slf4jVersion}</version>
+ <version>1.5.0</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
- <version>${slf4jVersion}</version>
+ <version>1.5.0</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl104-over-slf4j</artifactId>
- <version>${slf4jVersion}</version>
+ <version>1.5.0</version>
</dependency>
<dependency>
@@ -1378,25 +1376,25 @@
<dependency>
<groupId>org.codehaus.groovy.maven</groupId>
<artifactId>gmaven-mojo</artifactId>
- <version>${gmavenVersion}</version>
+ <version>1.0-rc-1</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy.maven.runtime</groupId>
<artifactId>gmaven-runtime-default</artifactId>
- <version>${gmavenVersion}</version>
+ <version>1.0-rc-1</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy.maven.support</groupId>
<artifactId>slf4j-gossip</artifactId>
- <version>${gmavenVersion}</version>
+ <version>1.0-rc-1</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all-minimal</artifactId>
- <version>${groovyVersion}</version>
+ <version>1.5.6</version>
</dependency>
<dependency>
@@ -1481,13 +1479,13 @@
<dependency>
<groupId>org.apache.mina</groupId>
<artifactId>mina-core</artifactId>
- <version>${minaVersion}</version>
+ <version>1.1.6</version>
</dependency>
<dependency>
<groupId>org.apache.mina</groupId>
<artifactId>mina-filter-ssl</artifactId>
- <version>${minaVersion}</version>
+ <version>1.1.6</version>
</dependency>
<!-- Admin Console support -->