HOME NEWS FORUM ABOUT
   Register now on jayasoft.org    Login  
Products
Login
Username:

Password:


Lost Password?

Register now!


  Get Firefox!

Jayasoft Community Site Forum Index
   Ivy
 local repository vs ibiblio

 

 Bottom   Previous Topic   Next Topic
12>
    • Rate this Thread
      Excellent
      Good
      Average
      Bad
      Terrible
Poster Thread
    • jgangemi
local repository vs ibiblio
#1
Quite a regular
Joined: 2005/4/27
From
Posts: 61
Level : 6
HP : 0 / 142
MP : 20 / 1990
EXP : 69
Group:
Registered Users
my problem w/ ibiblio is that while it has a lot of artifacts, it's missing a bunch as well (ie: testNG).

i'd prefer not to create a local repository for these files as it's just one more thing for me to maintain and keep up-to-date.

what is everyone else doing to deal w/ this scenario?
Posted on: 2005/4/29 21:02
Top Report
Re: local repository vs ibiblio
#2
Webmaster
Joined: 2004/11/4
From France
Posts: 30
Level : 4
HP : 0 / 80
MP : 10 / 1240
EXP : 22
Group:
Registered Users
Webmasters
As you just said, ibiblio doesn't handle all the jars that we can need. The only solution to that is to create you own repository with the missing libs.
Just use a chain resolver that handles your local repository and ibilio for the projects that can be found there. Using such a solution, you have just to maintain a minimum of libs and ivy files into your local repo.

-- Matthieu
Posted on: 2005/4/29 22:55
Top Report
Re: local repository vs ibiblio
#3
Not too shy to talk
Joined: 2005/3/28
From Seattle, WA
Posts: 23
Level : 3
HP : 0 / 63
MP : 7 / 898
EXP : 52
Group:
Registered Users
At our company, while we were still using a maven build, we had very good luck with maven proxy.

http://maven-proxy.codehaus.org/

We set this up on a local machine, and had our build point at it. It would fetch and cache jars from ibiblio, mimicing the directory structure on-demand. Thus, only the first person requesting a jar would have to deal with the ibiblio slowness. All subsequent requests would then be retriieving the jar over a LAN, which was quite snappy.

For artifacts not available on ibiblio (of which there are legion), we would just download them ourselves and put them in the appropriate place in the maven proxy cache. Worked like a charm.

This worked perfectly well with ivy, as you would imagine.

However, we've now moved to checking in all of our artifacts into our Subversion repository. I've written an Ivy resolver for subversion, and it works well. Once Xavier sets up the ivy tools site at sourceforge, we can get that checked in and available for anyone else that's interested.
Posted on: 2005/4/29 22:56
Top Report
    • jgangemi
Re: local repository vs ibiblio
#4
Quite a regular
Joined: 2005/4/27
From
Posts: 61
Level : 6
HP : 0 / 142
MP : 20 / 1990
EXP : 69
Group:
Registered Users
i will have to take a look at the maven proxy - thx for the link. i do agree that my only refuge at this point is to setup my own repository.

may i ask why you've decided to check in all of your artifacts into version control (i assume you mean 3rd party and "yours").

i used to do that at a previous job for 3rd party jars (the build was structured so dependant jars were built first), but found that drastically slowed down "fresh" checkouts, and was just a general PITA when adding new libraries b/c i'd have to go back and create a classpath reference.

you eliminate the checkout problem b/c of the subversion resolver, but i'm curious what the gain is. i used to think it would be wise b/c when i'd tag a build, i'd always be able to check out the exact same jars that were used the first time around. this may still hold true for jars that you generate if you aren't changing the version number all the time, but doesn't seem to make much sense for 3rd party libs (as they seem to change version #s on each release). given that my ivy.xml files will all be tagged, i'll still be using the correct version of the lib at compile time.

i've been battling w/ this topic ever since i started work on this new project, and i may decide to go back and check stuff into version control (although i'd need a cvs ivy resolver).
Posted on: 2005/4/29 23:19
Top Report
Re: local repository vs ibiblio
#5
Not too shy to talk
Joined: 2005/3/28
From Seattle, WA
Posts: 23
Level : 3
HP : 0 / 63
MP : 7 / 898
EXP : 52
Group:
Registered Users
The artifacts are checked in to a completely different part of the subversion repository than our projects, so tagging our projects has no effect on the artifacts. As you said, the ivy descriptor for our project ensures we get the same set of jars every time, regardless of where the jars come from.

The reason we've checked them in is because it centralizes the bits needed for building our various projects. By giving someone access to the source repository, we've essentially given them access to the artifact repository as well. There's no additional steps needed to make sure they have permissions to some local machine share so that they can add or upgrade dependencies as needed. We have contractors working overseas, and we have to give them access to all the servers needed to build and work with our product. Limiting their access as much as possible makes our IT department happy. And it reduces the possible points of failure for our build: if the source repository is available, then you can be assured that the build should work the same for everyone.

The question is then, why use ivy at all? If we're checking in the jars into the source repository, why not just check them into the project itself?

Our source repository hosts multiple projects, each with multiple branches. These projects each have their own dependencies, and these dependencies change over time and with each branch. So the desire to manage those dependencies in an intelligent way is not lessened just because we choose to retrieve the dependencies from the same repository as the source code.

Plus, using ivy helps maintain control of exactly what dependencies we need and why. Our main project, a webapp, currently deploys with 40-50 3rdparty jars, and that number is only increaing. Using ivy, we never have to guess why, for example, we're deploying commons-codec.
Posted on: 2005/4/29 23:44
Top Report
    • xavier
Re: local repository vs ibiblio
#6
Webmaster
Joined: 2004/11/3
From
Posts: 241
Level : 14
HP : 0 / 337
MP : 80 / 5200
EXP : 51
Group:
Registered Users
Webmasters
Thanks for those explanations, scott !

I'm not really a big fan of putting jars under source control management, that's why ivy has no built-in scm based resolver. But i now understand the advantage it can have mainly for administration. I still consider it's better to set up a shared directory when it is possible, but as you point it we are often sure that a scm is available to everybody working on a project, this is not the case for a shared directory or web site. Good point, it will make me further think about a CVS resolver.

Xavier
Posted on: 2005/4/30 9:49
Top Report
    • jgangemi
Re:local repository vs ibiblio
#7
Quite a regular
Joined: 2005/4/27
From
Posts: 61
Level : 6
HP : 0 / 142
MP : 20 / 1990
EXP : 69
Group:
Registered Users
i second that, thanks for the great explaination.

i am planning on checking in my local ivyrep files into version control, so i guess i either need to look into writing a cvs resolver (when will the subversion one be ready so i can just mimic that one?) or publish the ivy files to the local maven repository i'm going to set up.
Posted on: 2005/4/30 17:04
Top Report
Re:local repository vs ibiblio
#8
Not too shy to talk
Joined: 2005/3/28
From Seattle, WA
Posts: 23
Level : 3
HP : 0 / 63
MP : 7 / 898
EXP : 52
Group:
Registered Users
It sounds like Xavier may be planning on writing a CVS resolver, now that I've "shown him the light". :) As for the Subversion resolver, I'm just waiting for Xavier to setup the Ivy Tools project on Sourceforge/java.net/codehaus/some other project hosting site. If you're itching to code, jgangemi, I can email you a snapshot of what I have right now.

Creating a Subversion resolver was simplified greatly by writing a URLConnection adapter for it. While all you really need to do is implement DependencyResolver, there's a huge amount of functionality you'll get for free by extending AbstractURLResolver. All of the Ivy resolvers extend that. The trick, though, is that (as its name suggests) it is coupled tightly with the java URL mechanism. So if you can represent your dependency source (in this case, a CVS repository) as a URLConnection, you're most of the way there.

If I had a recommendation for making the API easier to extend, I would want AbstractURLResolver to be less dependent on the URL class, and work more closely with the java.io classes (e.g., InputStream/OutputStream). There's just too much logic in AbstractURLResolver to not extend that class. If there were some intermediary class, like an AbstractStreamResolver, for example, I would've had more flexibility in how the SVN resolver could've been implemented.
Posted on: 2005/4/30 17:33
Top Report
    • xavier
Re:local repository vs ibiblio
#9
Webmaster
Joined: 2004/11/3
From
Posts: 241
Level : 14
HP : 0 / 337
MP : 80 / 5200
EXP : 51
Group:
Registered Users
Webmasters
I agree with you, scott, it would really be better if most of the logic found in AbstractURLResolver could be found elsewhere. At the beginning, it was quite a simple class, but it evolved a lot with Ivy versions, and now it's difficult to write a resolver which does not extend AbstractURLResolver, and should thus conform to url. I'll see what can be done in this area to make resolver writing simpler and less dependent on url.

Concerning the opening of a sourceforge project, I tried to create one on thursday, and unfortunately it was rejected. Here is the description I provided:
Quote:

Ivy is a free (BSD) java based dependency manager provided and hosted by jayasoft, the company in which I work.

This project will be a center for all little (or not so little) tools and plugins contributed by Ivy community that cannot be integrated in Ivy itself.

At the beginning, it will contain a SVN plugin for Ivy, and soon it should contain an eclipse plugin for Ivy.

Later, any plugin or tool the community send us could find its place here providing that it is open source and that the sender don't want to host it himself (but generally they send only tools they don't want to bother with hosting themselves).

Most projects will certainly be written in Java, even if it is not mandatory.


The rejection detail do not give much detail, it's a generic one saying that they lacks information to accept the project. Anyway, some have suggested to use java.net instead (codehaus will not accept such a project, they maybe could accept Ivy itself but not IvyCommunity). So I'll see if I can better open a java.net project, with hope that it won't be rejected. But I'm afraid it will still take some time to have this project setup. Sorry all for the delay.

Finally, concerning the CVS resolver, I have to check with my company staff if I write one soon or not. Waiting for this, a solution can be to checkin your files in CVS, and checkout somewhere in your filesystem. You can then use a filesystem resolver using the checked out files. If you add a cvs update call to your build file before calling resolve, it should be ok, and quite easy to change when CVS resolver will be available.

Xavier
Posted on: 2005/5/1 9:24
Top Report
Re:local repository vs ibiblio
#10
Not too shy to talk
Joined: 2005/3/28
From Seattle, WA
Posts: 23
Level : 3
HP : 0 / 63
MP : 7 / 898
EXP : 52
Group:
Registered Users
Re: Sourceforge. That's too bad. Perhaps, though, you need to punch up the description a bit. I gave it a shot with this:

Quote:

Ivy is a free (BSD) dependency manager written in Java. It has an extensible API, and can be used standalone from any application. But given its utility as part of the build process, it is most commonly used with Ant, using its provided set of rich Ant tasks.

http://www.jayasoft.fr/org/modules/ivy/

Ivy Tools (our proposed project) will host a set of open-source extensions and plugins for the Ivy dependency manager. Ivy Tools will be to Ivy what Ant Contrib is to Ant. Ivy Tools will provide access to features that aren't core to Ivy's codebase, but can use and extend Ivy for additional functionality.

Ivy Tools currently in the works include:

* SCM Dependency Resolver, allow the use of SCM's (like CVS or Subversion) as a repository for dependencies accessible by Ivy
* Ivy Eclipse Classpath, let you use Ivy files as a library container
* Ivy IDEA Module, will synchronize an Intellij IDEA project with Ivy dependencies


I'll let you know if it gets through. If it does, I'll happily make you, Xavier, the project admin.
Posted on: 2005/5/1 19:02
Top Report
 Top   Previous Topic   Next Topic
12>

 


You cannot start new topics.
You can view topics.
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You can vote in polls.
You cannot attach files to posts.
You cannot post without approval.



 
Copyright © 2004-2005 by jayasoft  |  Design by 7dana.com | A web site by jayasoft.fr 

Java is a trademark or registered trademark of Sun Microsystems, Inc. in the United States and other countries.
This site is independent of Sun Microsystems, Inc.