Archiva
Created on 2020-11-15T21:26:37-06:00
- Seems to have an extremely strong focus on Maven. It shows a list of “repository types” but the only option is “Maven 2.0.”
- Support for uploading appears as “Maven” and “Web UI.” Oddly there are suggestions that a myriad of HTTP, WebDAV, SFTP and such are possible, but they are all listed as parameters for running maven.
- There appears to exist a REST API for things to upload artifacts to. But apparently this is just for automating part of the GUI and is not actually how you deploy files to the repo.
- Snapshots have a version ending in “-SNAPSHOT”
Layout of repositories:
- /groupid/artifactid/version/testscript-version.package
- /groupid/artifactid/version-SNAPSHOT/testscript--YYYYMMDD.SSSSSS-B.package
- Snapshots appear to be given a timestamp, seconds from midnight and build number (B, starts at 1) in case all of those things manage to collide.
Downloading over HTTP
- http://localhost:8080/repository/fug/testperl/testscript/0.1/testscript-0.1.pl
- Uses HTTP Basic authentication to log in, if a URL is not guest accessible.
Uploading over HTTP
- curl http://localhost:8080/repository/fug/testperl/testscript/0.3-SNAPSHOT/testscript—20181030.000000-1.pl -T test.file -u admin
- Uses HTTP Basic authentication to log in, if a URL is not guest accessible.
Meta-data
- Group ID: The project this belongs to (ex. Autobrush.)
- Artifact ID: What the actual artifact itself is (ex. The name of a library, executable, ...)
- Version: Version code for the artifact.
- Packaging: File extension of the artifact.
Thoughts
- It doesn’t do a whole lot that I actually need. A file share or http server, possibly with fallback rules to go upstream, and maybe a cron job to delete old snapshots, are pretty much a replacement. That being said I didn’t try to search function very much; allegedly you can use a search API to find things. If I had tweaked that to consider my artifact files as “artifacts” (I was using perl scripts, and it looks for jars instead of pls by default) then it might have worked out a bit better. Proxying didn’t work, possibly it just doesn’t like to be told to use itself as a proxy. Didn’t feel like setting up a second instance just to connect to the first and see if it would download/cache properly.