On 16-Mar-08, at 11:39 AM, Nigel Magnay wrote:

I've never thought it was sane in the first place...


It is. Ultimately a repository manager should requires users to point at one URL, period. All control must reside in the repository manager or it's a configuration nightmare. Even if you automated the propagation of configuration, which can be done with an SCM, or a pub/ sub model it's still a pain in the ass.

The shortest settings.xml that fully delegates to a repository manager is still pretty lengthy but it's possible to do now, but eventually one short URL that every developer points to should suffice.

The mirrorOf is a result of people putting repositories in their POMs which is a horrible practice. The short term benefit of what appears to be self-containment is a huge, fat mess. In a corporate environment it is entire possible to know what repositories you need up-front. Putting repositories in POMs make it impossible to have any sort of automated promotion model and the bane of anyone's effort to have a sane process within their organization.

In short, the baked in repos in our super POM should go away, and be replaced by a simple configuration visible in the maven install. Anyone should be able to change that easily, and/or control it all from settings and ultimately it's one URL and folks delegate to a repository manager. Repositories in POMs, hacks to repath repositories like mirrorOf, and the "*" notation are a complete dead end. It needs to be made explicit and made manageable.

I don't understand why the artifact servers (archiva et al) can't just
respond in the same way that an ordinary proxy server does, without
all this mirrorOf mucking about. Working on two or three independant
projects and my settings.xml is a bloatfest of project-specific repo
names.

I've got about 5 <mirrorOf> sections all pointing to a corporate
archiva server. Unfortunately (again), that's been set up in the
'default/recommended' way, whereby many remote sites are all being
proxied through one archiva repository of /internal, which IMO is
really bad, because it's possible to specify a new artifact in your
pom.xml and find it magically downloads from {remote.repo.one} via
/internal, even though you never specified {remote.repo.one} in your
pom.xml in the first place. Which is all fine until someone remote
tries to build it offsite and.. bang, it all stops working.

If the local repository was more separated out into a different format
that separated out the remote repositories that the artifacts came
from, then you could rsync directly into them anyway, which would
solve half these problems anyway... I.E

.m2/repository/local/...
.m2/repository/snapshots.maven.codehaus.org/maven2/...

etc., etc.

On Sun, Mar 16, 2008 at 5:50 AM, Joakim Erdfelt <[EMAIL PROTECTED]> wrote:
I was motivated by http://jira.codehaus.org/browse/MNG-3407 and some
personal headaches, mostly with dealing with working with OSS on a
laptop within restricted environments, (ie. no, or bad internet
connection, such as a service station, while waiting for your car to be
fixed.)

I have a local directory on my laptop with a central rsync and the
java.net repos, which helps a ton.
But, I've set up a long list of <mirrorOf> entries to catch specific ids
and redirect them to my file:// urls.
Which works, but the list is growing, I don't set up
<mirrorOf>*</mirrorOf> intentionally, because I have separations for the
directories (so that rsync works ok for example).

I was motivated tonite to scan my central rsync mirror for <repository> and <pluginRepository> sections to see what is actually in use, what I found kinda confirmed my suspicions, the free form repository id naming
has blossomed into an interesting variety of choices.

Heh, this email will be good google-bot food for people searching for
maven repository mirrors.

acegi-snapshot : http://acegisecurity.sourceforge.net/repository/snapshots
activemq : http://people.apache.org/~chirino/incubator-activemq-4.0/maven2/
activemq-repo : http://people.apache.org/repo/m2-incubating- repository
agilesque-legacy-repository : http://agilesque.net/dist
AMQ 4.0.2 :
http://people.apache.org/~chirino/incubator-activemq-4.0.2-RC3/maven2
apache.incubating : http://people.apache.org/repo/m2-incubating-repository
apache-incubator : http://people.apache.org/repo/m2-incubating-repository/
apache.incubator : http://people.apache.org/repo/m2-incubating-repository
apache-incubator-repo :
http://people.apache.org/repo/m2-incubating-repository
apache-maven-snapshots : http://cvs.apache.org/maven-snapshot-repository
apache-maven-snapshots :
http://people.apache.org/repo/m2-snapshot-repository/
apache.org : http://people.apache.org/repo/m2-snapshot-repository
apache-plugin-snapshots-repository :
http://people.apache.org/repo/m2-snapshot-repository
apache.snapshot : http://people.apache.org/repo/m2-snapshot- repository
apache-snapshot-repo : http://people.apache.org/maven-snapshot-repository
apache.snapshots : http://cvs.apache.org/maven-snapshot-repository
apache.snapshots : http://cvs.apache.org/repository
apache.snapshots : http://minotaur.apache.org/maven-snapshot-repository
apache-snapshots : http://people.apache.org/maven-snapshot- repository/
apache.snapshots : http://people.apache.org/maven-snapshot-repository
apache-snapshots : http://people.apache.org/repo/m2-snapshot-repository
apache.snapshots : http://people.apache.org/repo/m2-snapshot-repository
atanion : http://www.atanion.com/maven2
atlassian : http://repository.atlassian.com
central : http://ibiblio.org/maven2/
central : http://repo1.maven.org/maven2
central : http://www.ibiblio.org/maven2
codehaus : http://dist.codehaus.org
codehaus : http://dist.codehaus.org/
codehaus : http://repository.codehaus.org
codehaus : http://repository.codehaus.org/
CodeHaus : http://snapshots.maven.codehaus.org/maven2
codehaus-legacy-repository : http://dist.codehaus.org
codehaus-m1-repository : http://dist.codehaus.org
codehaus-m2-repository : http://repository.codehaus.org
Codehaus Maven Plugin Repository : http://dist.codehaus.org
Codehaus Maven Repository : http://dist.codehaus.org
codehaus.org : http://repository.codehaus.org/
codehaus.org : http://snapshots.repository.codehaus.org
codehaus.org : http://snapshots.repository.codehaus.org/
codehaus-plugin-repository : http://snapshots.maven.codehaus.org/maven2/
codehaus-snap : http://snapshots.repository.codehaus.org/
codehaus-snapshot-repo : http://snapshots.repository.codehaus.org/
codehaus-snapshots : http://snapshots.maven.codehaus.org/maven2
codehaus-snapshots : http://snapshots.repository.codehaus.org
codehaus-snapshots : http://snapshots.repository.codehaus.org/
codehaus.snapshots : http://snapshots.repository.codehaus.org
dist.codehaus.org : http://dist.codehaus.org
dtddoc : http://dtddoc.sf.net/maven2
fabric3 : http://www.fabric3.org/snapshots
gleamynode-m1-repository : http://gleamynode.net/dev
gwt-maven-repo : http://gwt-maven.googlecode.com/svn/trunk/mavenrepo
ibiblio : http://ibiblio.org/maven2
java.net : https://maven-repository.dev.java.net/nonav/repository
java.net : https://maven-repository.dev.java.net/repository
java.net repository :
https://maven-repository.dev.java.net/nonav/repository/
jetty6-releases : http://www.mortbay.org/maven2/release
jetty6-snapshots : http://www.mortbay.org/maven2/snapshot
jetty-repository : http://repository.codehaus.org/
jetty-snapshot-repository :
http://jetty4.inetu.net/home/ftp/pub/maven2/snapshot
jetty-snapshot-repository : http://snapshots.repository.codehaus.org/
jibx : http://jibx.sourceforge.net/maven2/
jibx.sf.net : http://jibx.sf.net/maven
jibx.sf.net : http://jibx.sf.net/maven2
m2-snapshot-repository :
http://people.apache.org/repo/m2-snapshot-repository
mapasuta.repo : http://mapasuta.sf.net/maven/repo
maven2 : http://repo1.maven.org/maven2
maven2-repository.dev.java.net : http://download.java.net/maven/1/
maven2-repository.dev.java.net :
https://maven2-repository.dev.java.net/nonav/repository
Maven Codehaus Snapshots : http://snapshots.maven.codehaus.org/ maven2/
maven-hostedqa : http://maven.hostedqa.com
maven-snapshot : http://snapshots.maven.codehaus.org/maven2
Maven Snapshots : http://snapshots.maven.codehaus.org/maven2
Maven Snapshots : http://snapshots.maven.codehaus.org/maven2/
mirror : http://www.ibiblio.org/maven2
mirrormax.mirror : http://apache.mirrormax.net/apache/maven-repository/
module-local : file://${pom.basedir}/repository
module-repo : file:${basedir}/repository
mojo.snapshots : http://snapshots.maven.codehaus.org/maven2
mortbay-repo : http://www.mortbay.org/maven2/snapshot
mortbay-snapshot-repo : http://jetty.mortbay.org/maven2/snapshot
oaw.repository : http://openarchitectureware.org/m2/
objectstyle.org : http://objectstyle.org/maven2/
ObjectWeb Maven Repository : http://maven.objectweb.org/maven2/
openqa : http://maven.openqa.org
OpenQA : http://maven.openqa.org
org.livetribe : http://repo.livetribe.org/maven2-snapshot
playboy.mirror : http://mirrors.playboy.com/apache/maven-repository/
project-repo : file:${basedir}/${topDirectoryLocation}/maven_repo
repository-codehaus : http://repository.codehaus.org
repository.codehaus.org : http://repository.codehaus.org/
safehaus : http://m2.safehaus.org
safehauS-m1-repository : http://maven.safehaus.org/
seekmeup.mirror : http://apache.seekmeup.com/apache/maven-repository/
smartlab : http://www.smartlab.net/releases
snapshot-apache : http://people.apache.org/repo/m2-snapshot- repository
snapshot : http://snapshots.maven.codehaus.org/maven2/
snapshots : http://snapshots.maven.codehaus.org/maven2
snapshots : http://snapshots.maven.codehaus.org/maven2/
snapshots : http://snapshots.repository.codehaus.org
snapshots-plugins : http://snapshots.maven.codehaus.org/maven2
snapshots-plugins : http://snapshots.maven.codehaus.org/maven2/ plugins
snapshots.repository.codehaus.org :
http://snapshots.repository.codehaus.org/
sppatel : http://people.apache.org/~sppatel/maven/repository/
spring-repository :
https://svn.sourceforge.net/svnroot/springframework/repos/repo
spring-repository :
https://svn.sourceforge.net/svnroot/springframework/repos/repo/
spring-snapshot-repository :
https://svn.sourceforge.net/svnroot/springframework/repos/repo-snapshots
spring-snapshot-repository :
https://svn.sourceforge.net/svnroot/springframework/repos/repo-snapshots/
tapestry.javaforge : http://howardlewisship.com/repository
vraptor2 : http://vraptor2.sourceforge.net/m2repo
wicket : http://wicket.sourceforge.net/maven2
xfire : http://dist.codehaus.org

The approach nicolas took in MNG-3407 is strange.  I don't understand
the whole {0} idea.  Wouldn't it make more sense to base mirrorOf on
host or url instead?
That way the mirror section can be wrangled in a more sane way?

example:

<mirrors>
 <mirror>
   <mirrorOf>http://snapshots.repository.codehaus.org</mirrorOf>
   <url>file:///home/repos/codehaus/snapshots</url>
 </mirror>
 <mirror>
   <mirrorOf>http://repository.codehaus.org</mirrorOf>
   <url>file:///home/repos/codehaus/releases</url>
 </mirror>
 <mirror>
<mirrorOf>http://people.apache.org/maven-snapshot-repository</ mirrorOf>
   <url>file:///home/repos/apache/snapshots</url>
 </mirror>
</mirrors>

At first glance, the tendency would be to look for ":/" in the mirrorOf setting and use an url based mirror mapping, but that is probably a bad idea, considering that we had no restrictions on repository id naming. just because central has noone using ":/" in the repository id doesn't
mean someone out there isn't using it.

- Joakim


---------------------------------------------------------------------
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]


Thanks,

Jason

----------------------------------------------------------
Jason van Zyl
Founder,  Apache Maven
jason at sonatype dot com
----------------------------------------------------------

Simplex sigillum veri. (Simplicity is the seal of truth.)




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

Reply via email to