On 29-Sep-08, at 11:54 AM, Daniel Kulp wrote:
On Monday 29 September 2008 10:59:48 am Jason van Zyl wrote:
There is no rsync access to central. But the crawling is doing the
equivalent amount of damage.
I was suggesting creating a new public mirror that would be listable
on
http://maven.apache.org/guides/mini/guide-mirror-settings.html
as a public mirror. Thus, it could be "pushed" from central like
the other
mirrors. From there, people could rsync from that repo instead of
central or ibiblio or such.
There is no upside to using rsync over a repository manager.
I disagree.....
For one, with rsync, if the network goes down, and an artifact that a
developer wants that hasn't yet been used is requested, nexus is
useless.
If your rsync just finished and the network hasn't gone down, and an
artifact is released your developer makes a request for an artifact
then your rsync'd repository is useless. There are potential holes in
both cases but given the assumption your network is relatively healthy
a repository manager is a more robust solution. Provided your CI
mechanism is working against the repository manager it is going to be
primed the vast majority of the time. The days of the repository being
down for more then 10 minutes are over. So provided you have built in
the recent past you have what you need.
He's still stuck. With an rsync everything is available. This
HAS bitten
us. We have several developers that work from home offices and
thus have
their own repo manager setup or similar (or maybe don't use one).
They
develop stuff, commit some changes. The nightly builds then run
but due to
network hickups, fail as the artifacts couldn't be retrieved since
those
builds are the first to ask for them. Managers come running and
screaming
saying "maven sucks" cause the build fail. Anything that keeps the
managers
from running to me screaming maven sucks is a good thing. They
don't care
about repo managers, rsyncs, etc.... They just want their builds
to not
fail for stupid reasons.
This is where repository managers vastly outstrip direct use. You
can't do any routing to protect yourself, so bad metadata will hose
your developers. I think your chances of problems with you developers
are higher without a repository manager.
Second, being a command line person, I like being able to login to
the server
and do something like "find . -name "*.pom" | xargs grep
"somestring"" and
such to find various things. (I know, the repo managers have search
things,
but gui's suck)
You can do that with a repository manager that uses a file-based
system like Nexus. The repository looks just like you expect unless
you have your own store implementation. Nexus also has a rest API so
you can have curl script to make a REST call to do a search, get a
POM, an artifact, a configuration, the status. Anything that is
available via the UI in Nexus is available via the CLI. The UI is just
a REST client.
Third, httpd can run and serve static files on some very lightweight
hardware
that cannot even begin to consider running java. As such, it's
much faster
than Nexus or others.
Jetty using memory mapped buffers are really not that different. We
are not currently doing that in Nexus but once we do it won't be that
different. But the mediation that a repository manager provides means
you can fix all sorts of crap you cannot drinking from the fire hose.
Finally, this is the most important thing to me, each "mirrored"
repository
can be kept on a unique URL. http://proxy/central, http://proxy/java.net
,
http://proxy/apache-incubator, http://proxy/apache-snapshot,
etc.... Thus,
I can be sure that poms that are checked in have the appropriate
<repository>
entries that can resolve artifacts from their proper location in the
absense
of any repo manager. (Yes, Archiva can do this via the virtual
repositories. Archiva is the only repo manager I would consider
using
because of this.)
Nexus does this for certain, and I'm sure Artifactory does as well.
But repositories in POMs are a bad practice and it's far easier to
control everything from the repository manager. Repositories in POM
make the artifacts non-portable which we've seen make a Maven
environment pretty much unworkable. In an environment where you want
partitioning and you promote artifacts based on quality (whether it's
promoted to a different logical or physical repository) then you can
have a build that is now targeted for a QA environment pointing back
to a dev environment. Nexus can actually reroute any repository
request in a POM but I consider it a Maven anti-pattern. The
repository management side is now starting to parallel the changes
that have happened in the build management side. I think it's a
natural evolution in the use of Maven.
That said, there are a lot of advantages to using a repo manager as
well. I
admit that. But using a repo manager currently does not meet ALL
requirements.
I think the hole where your network is down and you have rsync'd is
really the only one that's missing and I doubt this would happen very
often if you have our CI server hitting the repository manager.
Dan
On 29-Sep-08, at 10:51 AM, Daniel Kulp wrote:
One thing I keep thinking about doing is creating a public mirror
that is
synced from central (it's a public mirror, thus, they would allow
that), but
provide rsync acess on some sort of paid agreement. Maybe $5/month
or
possibly just a ontime $100 setup fee or similar. Basically,
enough to
cover the bandwidth/hosting charges plus deter "everyone and their
mother"
from just rsyncing away. Is that something that people would have
interest
in?
If I only had the time to get it setup... :-(
Dan
--
Daniel Kulp
[EMAIL PROTECTED]
http://www.dankulp.com/blog
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
Thanks,
Jason
----------------------------------------------------------
Jason van Zyl
Founder, Apache Maven
jason at sonatype dot com
----------------------------------------------------------
believe nothing, no matter where you read it,
or who has said it,
not even if i have said it,
unless it agrees with your own reason
and your own common sense.
-- Buddha
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]