On Wed, 2004-01-07 at 02:28, Steve Garcia wrote:
> Does anybody know of any articles I can find on the Internet detailing the
> advantages and drawbacks of using an artifact repository (instead of
> sticking artifacts in an SCM) for software development?
> 
> I want to read more about this style of development - 

For Java at least I don't think this was really practiced much before
Maven came along. But for Perl there is CPAN and I believe now an
equivalent for Python. Long ago when I did Perl stuff I always use CPAN
which is definitely where some of the ideas in Maven come from. Even for
Perl modules I made I put them in the local library. I have always found
it stranged putting generated entities into an SCM. I don't like
generated docs in an SCM and I don't like binaries in an SCM (save of
course images and what not).

For local projects that haven't a great number of dependencies which are
external then it probably isn't really a big deal to keep your artifacts
in an SCM.

The benefit of using the repository is that at some point you are going
to want to update some of the components you use: using a repository and
POMs you rely on the knowledge of the project maintainers to track the
dependencies for you. If you decide to upgrade to foo-1.2 from foo-1.1
and it's dependencies change then you can either figure out all the
changes yourself or rely on the people that know about the project,
namely the developers of that project. This of course assumes that we
have all the POMs in the repository which we are moving toward. We don't
have it yet but the design for it is there.

So you can do this maintenance over and over again if you like but it
boils down to the same notion, the most important notion in Maven is
that the project information is stored once by the people who know about
the project. As the repository is populated with POMs transitive
dependencies will be possible and all sorts of cool things will then be
possible. Again I'll come back to the upgrading of components: it's not
impossible that there will be tools that could easily test various
graphs of dependencies to see which ones work with your tests. Maybe you
need a certain feature in an updated component which causes conflicts
elsewhere and Maven could certainly help find a resolution that works.
You could of course do this all yourself but why bother.

I think the real power of Maven is really far from fruition and
transitive dependencies will be a big part of that.

I also hope that in time you will be able to take a POM and reliably
build an entire project with all its dependencies from source so that if
you really wanted to your could build everything from scratch with one
simple command. If you could do that I don't really see much point in
store binary artifacts in an SCM. Of course we need mechanisms like a
much augmented release plugin incorporating the new Maven SCM project
but we will eventually get there.

> I have some colleagues
> who are not convinced that it is a good idea to put artifacts somewhere else
> besides a SCM system.  While there is general agreement that a repository is
> a good thing (preventing duplicate copies of the same jar) my colleagues
> argue that backing the repository with a SCM provides more security (can't
> accidently put a patch into a third party jar) and allows anyone to, at any
> past point in time, to get a complete, unadulterated snapshot of a project
> and build it.  
> 
> I think there are good arguments both ways (even though I support the Maven
> artifact model.)  
> 
> Thanks, Steve
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
-- 
jvz.

Jason van Zyl
[EMAIL PROTECTED]
http://tambora.zenplex.org

In short, man creates for himself a new religion of a rational
and technical order to justify his work and to be justified in it.
  
  -- Jacques Ellul, The Technological Society


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

Reply via email to