Recently one of Leos added a bunch of Excalibur-** directories on the dist site.
that'd be me!
It appears that they are used in conjunction with an automatic download type of functionality.
yep, among other things. I outlined all of that in the "[PROPOSAL] follow apache mirror layout convention" thread. That was a long e-mail; I can repost if you want.
----
Is this one of the steps to have Merlin integration?
Uhm, the new structure among other things has
/dist/avalon/${groupId}/jars/${artifactId}-${version}.jar
which means www.apache.org/dist/avalon/ is now usable as a maven "remote repository". I've been writing a forrest plugin for maven, and so far it seems to be working rather well. IIUC, RuperTask and Centipede can work with the same layout. This is nice because merlin (which builds using maven) can use our own repository.
That's not the only goal: In addition, we're now following the layout conventions as decided on by the infrastructure team and agreed upon on the repository list.
----
If so, could you explain a little on how to set those up for all the new libraries?
basically, you will want to symlink to the latest files replacing the version with 'latest', to provide for easy access to the latest version (like http://www.apache.org/dist/avalon/framework/Avalon-latest-bin.zip). And you want to follow the maven convention of ${groupId}/jars/${artifactId}-${version}.jar. This might deserve to go on the wiki:
= Supporting the new-style URLS =
I'm in the process of getting components built by maven. In that case all that's needed is some info in project.xml and the command `maven:deploy -Dversion=1.1.1 -Dtag=MYCOMP_1_1_1`. However this is work in progress, so right now some manual steps are involved. This is a basic explanation of what you need to do:
*WARNING*: all scripts and commands are *untested*!
= Adding a new component =
Two basic options:
== 1) keep supporting placing the new libraries in http://www.apache.org/dist/avalon/excalibur/components/, and symlink ==
This works like:
# first put files up at avalon/excalibur/components/ like you're used to
ssh www.apache.org
# symlink to the component location as excalibur-$COMP_NAME/source and # excalibur-$COMP_NAME/binaries umask 0002
export COMP_NAME="xmlutil" # example, edit this! export VERSION="1.1" # example, edit this!
cd /www/www.apache.org/dist/avalon/ mkdir excalibur-$COMP_NAME cd excalibur-$COMP_NAME ln -s ../excalibur/components/$COMP_NAME source ln -s source binaries
# extract jarfiles into the 'jars' directory mkdir jars unzip binaries/$COMP_NAME-$VERSION.zip '*.jar' -d jars
useful might be a script like this:
=== export-component.sh ====
#!/bin/sh # # Make linking a little easier # # usage: export-component.sh componentname version # export COMP_NAME=$1 export VERSION=$2
echo building new-style structure for $COMP_NAME version $VERSION ...
cd /www/www.apache.org/dist/avalon/ mkdir excalibur-$COMP_NAME cd excalibur-$COMP_NAME ln -s ../excalibur/components/$COMP_NAME source ln -s source binaries
# extract jarfiles into the 'jars' directory mkdir jars unzip binaries/$COMP_NAME-$VERSION.zip '*.jar' -d jars
# cleanup unset COMP_NAME unset VERSION
== 2) just place the files in the new location ==
ssh www.apache.org cd /www/www.apache.org/dist/avalon/ mkdir -p excalibur-$COMP_NAME/source cd excalibur-$COMP_NAME ln -s source binaries mkdir jars unzip binaries/$COMP_NAME-$VERSION.zip '*.jar' -d jars
= New release for an existing component =
in the event that you're doing a new release of something that was already released, life is a bit easier. You'll likely just want to upload the files like before to avalon/excalibur/components/, then do
cd /www/www.apache.org/dist/avalon/excalibur-$COMP_NAME unzip binaries/$COMP_NAME-$VERSION.zip '*.jar' -d jars
= Easy urls for the latest distro's =
Not yet implemented for excalibur, but we should. For a particular subproject, have a symlink to the latest distribution files in binaries/ and source/ in the base directory, then symlink to those files, replacing the version with 'latest':
=== basiclink.sh ===
#!/bin/sh # # usage: basiclink.sh groupname distname version export GROUPNAME=$1 export DISTNAME=$2 export VERSION=$3
cd /www/www.apache.org/dist/avalon/$GROUPNAME ln -s binaries/$DISTNAME-$VERSION-bin* . ln -s source/$DISTNAME-$VERSION-src* . ln -s $DISTNAME-$VERSION-src.zip $DISTNAME-latest-src.zip ln -s $DISTNAME-$VERSION-bin.zip $DISTNAME-latest-bin.zip ln -s $DISTNAME-$VERSION-src.zip.asc $DISTNAME-latest-src.zip.asc ln -s $DISTNAME-$VERSION-bin.zip.asc $DISTNAME-latest-bin.zip.asc ln -s $DISTNAME-$VERSION-src.tar.gz $DISTNAME-latest-src.tar.gz ln -s $DISTNAME-$VERSION-bin.tar.gz $DISTNAME-latest-bin.tar.gz ln -s $DISTNAME-$VERSION-src.tar.gz.asc $DISTNAME-latest-src.tar.gz.asc ln -s $DISTNAME-$VERSION-bin.tar.gz.asc $DISTNAME-latest-bin.tar.gz.asc
==== Sample usage ====
ssh www.apache.org umask 0002 basiclink.sh framework Avalon 4.1.5
----
Hope that's enough info!
----
Lastly, do we want to simply organize everything this way?
yes! All existing distributions we have now support the new-style urls (and the old-style as well, since I didn't move any files). For example, the following maven project.xml snippet now works as expected:
<dependency>
<groupId>phoenix</groupId>
<version>4.0.4</version>
<id>phoenix-bsh-commands</id>
</dependency>providing you add
maven.repo.remote=http://www.apache.org/dist/avalon/,http://www.ibiblio.org/maven/
to your project.properties.
----
cheers!
- LSD
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
