Maven Plugin

I think this should actually be a maven plugin, since it needs to download both jar files and pom files which are maven artifacts. With each, there is a sha and md5 signature.

uniqueness : group_id + artifact_id + version (maybe, the hash???)
types per unit : 1 pom, many jars. 2 sigs per item
attriubtes : updated date (datetime)

clients: maven
maybe https://pypi.python.org/pypi/jip

Content

Discovery

Notes from https://pulp.plan.io/issues/854

Create an initial framework for supporting syncing & publishing Maven artifacts from within Pulp. This issue is an ok place for planning and gathering comments and information, but that should be broken up into smaller stories if/when implemented.

Deliverables

Questions

archetype-catalog.xml

Some maven repositories appear to have an index of content named archetype-catalog.xml, and some do not. What are the expectations around that file? When is/should it be present?

When Pulp does a sync, if that catalog is not present, we will need some other way for a user to specify what content to get. Should they provide a pom.xml file to the importer? Or perhaps csv/json that enumerates the content to get?

When Pulp does a publish, is it always safe for it to create an archetype-catalog.xml file? It is handy to have so that other Pulp deployments can sync from it and duplicate the exact same content.

SNAPSHOT

Should Pulp support "snapshot" repositories?

https://blog.packagecloud.io/eng/2017/03/09/how-does-a-maven-repository-work/#snapshot-repositories

The challenge is that the content with a given unique identifier that includes "-SNAPSHOT" can change from one sync to the next, and there's no way to know if it did. So it would need to be downloaded every time. We would also have to accept that if the content had been promoted into an additional repository, it could get updated in-place without another promote operation.

Upload

Is there a use case for upload? What does that look like? In what format would data get uploaded?

References

Repo in the sky

It may be worth looking at http://artificer.jboss.org/ just to see if there's any opportunity to integrate with that.