Ok, there was a bit of talk about this while I was away so I wanted to sum up the thoughts I've had to date about how we can deal with the metadata we have and work towards improving its quality.

Firstly, let's add a source to the distributionManagement in the POM which is rewritten by the repository tool: "none" - there is no information about the POM's confidence level (the default) "converted" - converted from a Maven 1.x POM, so we can be sure the format is valid but the data within it may be incomplete "partner" - synced in directly from a partner site (and was a Maven2 POM, current partners will be converted instead)
"deployed" - deployed to the repository directly using deploy:deploy
"verified" - hand verified the information in the POM

I think this is a sliding scale of confidence in the data. I think each should be able to have an interval attached to it to check for metadata updates (but not updates to the JAR itself - this is just about redownloading the POM). By default, I would check none and converted daily and the rest never. Once again, a CLI switch could check them all again. Your releases could requires a certain level of confidence - if you accept anything less than verified, you might risk a reproducibility problem in the future. One change that might be needed is to get maven-proxy to recognise this.

There have been more than one instance of a jar getting corrupted in the repository too. Because once compromised this might be propogated to multiple levels we do need a way to do integrity checks of local and internal repositories against the main one by checking that the sha1's match up and match what is local. This can be something added at a later date, just wanted to keep it in mind.

I don't think we should do a deprecation of artifacts, as of the chicken and egg problem, so lets just aim for the supersedes functionality in a later version. We can, however, do pointers which are similar and I think what is intended in the discussion so far: a POM is moved and replaced with a POM that points to the new one with a message. This makes historical builds work with a warning (from a clean repository).

Suggested syntax:
<distributionManagement>
 <relocation>
   <groupId>...</groupId>
   <artifactId>...</artifactId>
   <version>...</version>
   <message>...</message>
 </relocation>
</distributionManagement>

Version would match by default.

I think this covers all the outstanding issues and gives us a way to progressively improve the metadata without getting into a problematic state.

Any thoughts? Anything missing?

- Brett

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

Reply via email to