-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi there,
first of all I have to say that the dependency-management of maven2 is really cool! The scope is covering all needs I can think of and the transitive dependency thing is really nice... Anyways here are some ideas about the dependency management I would like to share: 1. I got the idea that a repository could have an "index". I am thinking of an XML file that contains the complete structure of the repro. Then maven could download this "index" whenever it gets updated. (Maybe wagon needs to be updated to be able to determine if the file has not changed and no aditional download has to be performed - e.g. HEAD request if HTTP). Before it wants to download a new POM or artefact it could simply see from the "index", if the project/artefact exists in the repository at all. This could save a lot of HTTP-Requests and therefore performance. Think of a business project that adds a dependency on "com.foo.bar" that will never be found at ibiblio. That project might set up a repository in the intranet and to keep it simple they just put the jars but no POM in there. This will cause that every build the POM will be tried to be downloaded from all repositories including the central at ibiblio. I guess this way ibiblio gets tons of requests per day that are just a stupid waste of performance. I do not want to conceal that an update of the "index" would cause a lot of traffic anyways - but just groupIds,artefactIds and versions would not make a big thing... An alternative would also be to declare a mapping in the local config from groupIds to repositoryIds. Also consider that the "index" would also be usefull in offline mode and especially helpful for tools such as the eclipse-plugin where you can have autocompletion of the latest stuff out there when adding dependencies. Of course this would be an optional feature of a repository and the configuration could have an option in the repository definition to ignore the "index" and still try to download stuff even if not in the "index" (but disabled by default). Further the "index" could be auto-generated and auto-updated so it would cause hardly any maintainance (whenever the feature was implemented at all). 2. Next I think that it would be nice to have more optional attributes for a dependency: A comment where one can document why the project needs the dependency - currently I add this as comment but the dependency-report could include the comment if it was inside the XML. A flag that can opt out the transitivity of the dependency. Then if project A depends on that project B, it would not inherit the dependencies from B that have to flag set. Why this? Think of a project that provides a simple API and a variety of implementations. As example we can think of commons-logging. Now the project could follow the maven ideal and create a sub-project for the API and one for each implementation that depends on the API and the underlying logger that is used. But what if the project does not want to follow this evangelism? Or what if that project does not even know about maven and sombody else just wants to use it in a maven project and writes a POM for it. Further think of a project that depends on SWT. Should it depend on the windows, gtk or motif version? 3. The dependency report could have more information about a dependency: The license (might need to resolve the ancestor POM where the licenese setting is inherited from). This would be very helpful for those "political" tasks - e.g. the GPL stuff... The link of the project that maintains the dependency. Would be cool if the link could point to the dependency site of that project, but maven could not know where to find this info without doing really wired things. Maybe another report could be added that lists all inherited dependencies. 4. Is it possible to define virtual dependencies? I think of a dependency such as Java5 that does not include an artefact but just declares that the project will require a jvm version > 5.0. In this case a plugin used to execute the project could know the dependency and check if the jvm version is right. I guess that one can just write a POM with packaging "pom" and no dependencies to make this work but I havent tried. Would you consider to provide something like this at the central repro? BTW - did you get in trouble with sun and their **** license because the javax.* artefacts are not available at the central repo? Doesn't geronimo provide rewritten javax.* api-jars, that could be provided at ibiblio? I can unserstand why harmony came up, but anyways I doubt that they will ever come to a working result... So far for tonight - i'd better go to bed for now cause my alarm rings in about 5 hours :( Regards Jörg -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2 (GNU/Linux) Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org iD8DBQFEUBKHmPuec2Dcv/8RAklWAJ42SgzPt/YTUXI1+BzGcAWUAWm9JACgkI0Y 3bfAmELexhnArZ4/auzWmNs= =zdA3 -----END PGP SIGNATURE----- --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]