repositorytools icon indicating copy to clipboard operation
repositorytools copied to clipboard

Version regexp match fails on artifacts with numbers

Open alkuzad opened this issue 6 years ago • 6 comments

It's rare but can happen, for example:

https://mvnrepository.com/artifact/org.neo4j/neo4j-cypher-compiler-2.1/2.1.2

Has jar named neo4j-cypher-compiler-2.1-2.1.2.jar.

I wanted to made PR for that but I couldn't find any naming convention that could specify what is correct jar naming. So I made subclass LocalArtifactWithPomDetection which loads this data from pom file, if exists (almost every time, there is one)

alkuzad avatar Feb 27 '18 10:02 alkuzad

Bravo. Loading from pom file makes sense. Feel free to create a PR and we'll review it and eventually merge it. Don't forget to implement a unit test as this is testable easily

stardust85 avatar Feb 28 '18 23:02 stardust85

@stardust85 thanks for response :) I will try to make my solution more general and make PR with new artifact class.

Btw. thanks for this lib. Nexus REST api docs are so messed up, I would spend weeks figuring all of this. I failed on using requests to send POM + Jar in same request and I had to fallback to pycurl - because of not implemented 100-Continue in requests.

alkuzad avatar Mar 01 '18 09:03 alkuzad

Thanks for letting us know you like it and what is your use case :). I created it to make it easier to upload RPM packages to nexus, but it is generally usable of course :) Btw, when I worked on a Java project, I used gradle to upload to nexus. It also works well. And of course supports both jar and pom files.

stardust85 avatar Mar 01 '18 16:03 stardust85

@stardust85 unfortunately this case is not simple CI style - mvn clean verify + mvn deploy :D I am from SCM department and we usually work only on finished product - in this case jars already made, without compile environment. I think we could do some generation to leverage maven but it was easier for me to control every part of deployement from code.

alkuzad avatar Mar 01 '18 21:03 alkuzad

This regex seems more robust:

^(?# name)(.*?)(?:-|_|\.)(?=\d)(?# version)((?:(?:\d+)\.)*\d+(?:-(?:[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+[0-9A-Za-z-]+)?)\.(?# extension)([^.]+)$

I plugged in a semantic-versioning-aware regex in the middle.

mheyman avatar Feb 12 '21 13:02 mheyman

just realized that work is on branch not touched for a while, maybe someone will use it :D https://github.com/alkuzad/repositorytools/tree/pom-artifact

alkuzad avatar May 19 '21 12:05 alkuzad