Henri Yandell wrote:
Not a huge issue for things like Lang which have no dependencies, but
for other things like Digester I think it would be a lot better if the
binary tar.gz contained the jars it depends on?

Just my HO, but to me that defeats the purpose of ibiblio/java-repository. It also bloats distros and adds to the effective contract of the distro and responsibility of the RM needlessly (Would doing this effectively require us to store whatever jars were grabbed at release time in cvs/svn?) This is what maven or Ant get-deps tasks are supposed to do for us. Also, if maven (or Ant) users wanted to use the bundled jars, they would still have to kludge the local repo to place the jars if we bundled them. For maven users, at least, this would be more hassle than just letting maven grab the jars.


I may be in the minority here, but I have never liked the "bundle all dependencies for convenience" approach -- either as a user or as a developer. As a user, I am never sure exactly what I am getting "in the bundled version" and as a developer, I want to limit dependencies to versioned release binaries available from definitive locations (now de facto ibiblio for many things -- we need to sort out how exactly apache jars are maintained there). I understand that for complex products like struts or tomcat, it may be impractical *not* to bundle dependencies; but I do not see it as necessary for commons components.

Phil




So when I download digester-1.6, the tar.gz contains jars for logging-1.0.3 and beanutils-1.7. We're not forcing those versions on people, just providing them to save lots of searching around or waiting while iBiblio responds.

It seems pretty easy to do too from a maven.xml point of view:

<?xml version="1.0"?>
<project xmlns:j="jelly:core" xmlns:ant="jelly:ant">
  <!--
  description="Adds dependencies to distributions"
  -->
  <postGoal name="dist:prepare-bin-filesystem">
    <ant:mkdir dir="${maven.dist.bin.archive.dir}/dependencies"/>
    <j:forEach var="dep" items="${pom.dependencies}">
      <j:if test="${dep.getProperty('distributable')=='true'}">
        <copy todir="${maven.dist.bin.archive.dir}/dependencies"
file="${maven.repo.local}/${dep.getGroupId()}/jars/${dep.getArtifact()}"/>
      </j:if>
    </j:forEach>
  </postGoal>
</project>

You'd just add:

<properties>
  <distributable>true</distributable>
</properties>

to a dependency.

Anyone interested?

Hen

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to