Inedo Community Forums Forums
    • Recent
    • Tags
    • Popular
    • Login

    Welcome to the Inedo Forums! Check out the Forums Guide for help getting started.

    If you are experiencing any issues with the forum software, please visit the Contact Form on our website and let us know!

    Proget is unable to download Maven packages that use a nonstandard versioning scheme

    Scheduled Pinned Locked Moved Support
    12 Posts 3 Posters 89 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • atrippA Offline
      atripp inedo-engineer @joshua.mitchell_8090
      last edited by

      Hi @joshua-mitchell_8090 ,

      Thanks for the inquiry! The changes are available in the inedo/proget:25.0.24-ci.4 container image, and we'd love to get a second set of eyes. Are you using Docker?

      They're relatively simple, but we just avoid changing stuff like this in maintenance releases... so it's currently slated for ProGet 2026.

      But it should be okay for a maintenance release. Please let us know, we'll decide to release based on your or other user feedback.

      Here's what we changed.

      First, we added a "sixth" component called IncrementalVersion2 that will support versions like 1.2.3.4-mybuild-678 (where 4 is the second incrementing version), so that vulnerability identification can work better. Our implementation is based on the the Maven version specs, which in retrospect, seems to be followed only by ProGet. Pretty low risk here.

      Second, we changed our "path parsing" logic, which identifies the groupId, artifactId, version, artifactType from a string like /junit/junit/4.8.2/junit-4.8.2.jar into /mygroup/more-group/group-42/my-artifact/1.0-SNAPSHOT/maven-metadata.xml.

      It's a little hard to explain, so I'll just share the new and old logic:

      //OLD: if (urlPartsQ.TryPeek(out string? maybeVersion) && char.IsNumber(maybeVersion, 0))
      if (urlPartsQ.TryPeek(out string? maybeVersion) && (
          char.IsNumber(maybeVersion, 0)
          || maybeVersion.EndsWith("-SNAPSHOT", StringComparison.OrdinalIgnoreCase)
          || (this.FileName is not null && !this.FileName.Equals("maven-metadata.xml", StringComparison.OrdinalIgnoreCase))
          ))
      {
          this.Version = maybeVersion;
          urlPartsQ.Pop();
      }
      

      Long story short, this seems to work fine for v8.5.0 and shouldn't break unless someone is uploading improperly named artifact files (e.g. my-group/my-artifact/version-1000/maven-metadata.xml or e.g. my-photo/cool-snapshot/hello-kitty.jpg).

      Thanks,
      Alana

      J 1 Reply Last reply Reply Quote 1
      • J Offline
        joshua.mitchell_8090 @atripp
        last edited by

        @atripp
        Thanks Alana,

        We are using podman so it should be the same process as Docker. We'll give it a try and let you know if we run any issues.

        Thanks,
        Josh

        1 Reply Last reply Reply Quote 0
        • J Offline
          joshua.mitchell_8090
          last edited by

          @atripp
          Seems to be working perfectly so far. Another question for you though; Do the changes affect how the dependencies are identified within the project build vulnerabilities? We had a look at it before the update with a trial license, but that expired before we upgraded.

          Thanks,
          Josh

          atrippA 1 Reply Last reply Reply Quote 0
          • atrippA Offline
            atripp inedo-engineer @joshua.mitchell_8090
            last edited by

            Thanks @joshua-mitchell_8090 , we'll consider merging it in then!

            As for "how the dependencies are identified within the project build vulnerabilities", I suppose so - the IncrementalVersion2 will allow for proper vulnerability associated with packages that use "incorrect" versions (like 1.2.3.4). Jackson Databind is the one we kept coming across.

            Note you can request another trial key from my.inedo.com to try it out :)

            1 Reply Last reply Reply Quote 1
            • D Offline
              devops-user
              last edited by

              Hi,

              I have a similar issue and we already have the latest ProGet version installed. We have created a maven central connector and a feed with this connector attached.
              My project needs to download many dependencies with non‑semver artifact versions, for example:
              https://mvnrepository.com/artifact/org.springframework.data/spring-data-releasetrain/Neumann-SR9

              What is ProGet’s recommended solution for this kind of problem? Very often, we can't simply move to other versions/artifacts with proper semver versions. We are blocked

              atrippA 1 Reply Last reply Reply Quote 0
              • atrippA Offline
                atripp inedo-engineer @devops-user
                last edited by

                Hi @devops-user ,

                Can you try out the container image above? We'd like to get confirmation that it's working and we can then merge it to ProGet 2025 (we were otherwise planning ProGet 2026).

                Thanks
                Alana

                1 Reply Last reply Reply Quote 0
                • D Offline
                  devops-user
                  last edited by

                  I'm afraid I'm not able to test it. I'm currently using Inedo Hub on a Windows Server.

                  atrippA 1 Reply Last reply Reply Quote 0
                  • atrippA Offline
                    atripp inedo-engineer @devops-user
                    last edited by

                    Hi @devops-user ,

                    No problem, I just pushed Release 2025.25-rc.1.

                    It's based simply the 2025.24 release with the Maven patch added in. You can install like this:
                    https://docs.inedo.com/docs/installation/windows/inedo-hub/howto-install-prerelease-product-versions

                    Thanks,
                    Alana

                    D 1 Reply Last reply Reply Quote 0
                    • J Offline
                      joshua.mitchell_8090
                      last edited by

                      Hello,
                      We have run into one very minor issue when navigating to a feed group and showing packages. For this specific package, we see an error on screen (It still pulls it fine, it just seems to fail when displaying) com.fasterxml.jackson.core:jackson-databind:2.19.4

                      d4b334ae-d5b3-448a-9685-80d37887ff5b-image.png

                      When navigating to it directly via the URL
                      https://example.com/feeds/REDACTED-FEED-group/com.fasterxml.jackson.core/jackson-databind/2.19.4
                      75cfc16f-79c5-45cd-a379-2268b35c07ab-image.png

                      Not sure what this view called (Maven Apache view?) but it works fine when displaying and downloading artifacts.
                      https://example.com/feeds/REDACTED-FEED-group/com/fasterxml/jackson/core/jackson-databind/2.19.4/
                      026ccb92-c2de-4c50-8ed4-480aa24870e5-image.png

                      Navigating to the summary of all the versions works fine, but does not display version 2.19.4, only the older versions which were using an invalid maven version.

                      c534392a-f307-459e-8c35-6ae928ed365a-image.png

                      Here is the message from the Diagnostic Center

                      An error occurred in the web application: 22001: value too long for type character varying(1000)
                      
                      URL: http://example.com/feeds/REDACTED-FEED-group/com.fasterxml.jackson.core/jackson-databind/2.19.4
                      Referrer: https://example.com/projects2/packages?buildId=21&skip=0&take=1000
                      User: JoshuaM
                      User Agent: Mozilla/5.0 (X11; Linux x86_64; rv:149.0) Gecko/20100101 Firefox/149.0
                      IP Address: ::ffff:172.18.1
                      Stack trace:    at Npgsql.Internal.NpgsqlConnector.ReadMessageLong(Boolean async, DataRowLoadingMode dataRowLoadingMode, Boolean readingNotifications, Boolean isReadingPrependedMessage)
                         at System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1.StateMachineBox`1.System.Threading.Tasks.Sources.IValueTaskSource<TResult>.GetResult(Int16 token)
                         at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken)
                         at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken)
                         at Npgsql.NpgsqlDataReader.NextResult()
                         at Npgsql.NpgsqlCommand.ExecuteReader(Boolean async, CommandBehavior behavior, CancellationToken cancellationToken)
                         at Npgsql.NpgsqlCommand.ExecuteReader(Boolean async, CommandBehavior behavior, CancellationToken cancellationToken)
                         at Inedo.ProGet.Data.PostgresDatabaseContext.PostgresCommand.ExecuteReader() in C:\Users\builds\AppData\Local\Temp\InedoAgent\BuildMaster\192.168.44.60\Temp\_E649756\Src\src\ProGet\Data\PostgresDatabaseContext.cs:line 372
                         at Inedo.Data.DatabaseContext.ExecuteInternal(String storedProcName, GenericDbParameter[] parameters, DatabaseCommandReturnType returnType)
                         at Inedo.Data.DatabaseContext.ExecuteNonQuery(String storedProcName, GenericDbParameter[] parameters)
                         at Inedo.ProGet.Policies.ComplianceMan.AnalyzePackageInternalAsync(IPackageFeed feed, IPackageMetadata package, Boolean alwaysReanalyze, Func`2 getLocalLatestPatchVersion, ILogSink log, CancellationToken cancellationToken) in C:\Users\builds\AppData\Local\Temp\InedoAgent\BuildMaster\192.168.44.60\Temp\_E649756\Src\src\ProGet\Policies\ComplianceMan.cs:line 136
                         at Inedo.ProGet.WebApplication.Pages.Packages.PackageOverviewPage.<AddContentControlsAsync>b__5_11(IPackageMetadata p) in C:\Users\builds\AppData\Local\Temp\InedoAgent\BuildMaster\192.168.44.60\Temp\_E649756\Src\src\ProGet\WebApplication\Pages\Packages\PackageOverviewPage.cs:line 137
                         at System.Linq.AsyncEnumerable.SelectEnumerableAsyncIteratorWithTask`2.MoveNextCore()
                         at System.Linq.AsyncIteratorBase`1.MoveNextAsync() in /_/Ix.NET/Source/System.Linq.Async/System/Linq/AsyncIterator.cs:line 70
                         at System.Linq.AsyncIteratorBase`1.MoveNextAsync() in /_/Ix.NET/Source/System.Linq.Async/System/Linq/AsyncIterator.cs:line 75
                         at System.Linq.OrderedAsyncEnumerable`1.TryGetFirstAsync(CancellationToken cancellationToken) in /_/Ix.NET/Source/System.Linq.Async/System/Linq/Operators/OrderedAsyncEnumerable.cs:line 269
                         at System.Linq.OrderedAsyncEnumerable`1.TryGetFirstAsync(CancellationToken cancellationToken) in /_/Ix.NET/Source/System.Linq.Async/System/Linq/Operators/OrderedAsyncEnumerable.cs:line 290
                         at System.Linq.AsyncEnumerable.<FirstOrDefaultAsync>g__Core|91_0[TSource](IAsyncEnumerable`1 source, CancellationToken cancellationToken)
                         at Inedo.ProGet.WebApplication.Pages.Packages.PackageOverviewPage.<AddContentControlsAsync>g__createPackageStatusInfoAsync|5_1() in C:\Users\builds\AppData\Local\Temp\InedoAgent\BuildMaster\192.168.44.60\Temp\_E649756\Src\src\ProGet\WebApplication\Pages\Packages\PackageOverviewPage.cs:line 135
                         at Inedo.ProGet.WebApplication.Pages.Packages.PackageOverviewPage.AddContentControlsAsync(ContentContainer content) in C:\Users\builds\AppData\Local\Temp\InedoAgent\BuildMaster\192.168.44.60\Temp\_E649756\Src\src\ProGet\WebApplication\Pages\Packages\PackageOverviewPage.cs:line 38
                         at Inedo.ProGet.WebApplication.Pages.Packages.PackagePageBase.CreateChildControlsAsync() in C:\Users\builds\AppData\Local\Temp\InedoAgent\BuildMaster\192.168.44.60\Temp\_E649756\Src\src\ProGet\WebApplication\Pages\Packages\PackagePageBase.cs:line 91
                         at Inedo.ProGet.WebApplication.Pages.ProGetSimplePage.InitializeAsync() in C:\Users\builds\AppData\Local\Temp\InedoAgent\BuildMaster\192.168.44.60\Temp\_E649756\Src\src\ProGet\WebApplication\Pages\ProGetSimplePage.cs:line 69
                         at Inedo.Web.PageFree.SimplePageBase.ExecutePageLifeCycleAsync()
                         at Inedo.Web.PageFree.SimplePageBase.ProcessRequestAsync(AhHttpContext context)
                         at Inedo.Web.AhWebMiddleware.InvokeAsync(HttpContext context)
                      
                      ::Web Error on 31/03/2026 1:58:15 pm::
                      
                      1 Reply Last reply Reply Quote 0
                      • D Offline
                        devops-user @atripp
                        last edited by

                        @atripp thank you for the update. I installed this version, and it looks like it finally works! 🙂

                        Regarding the issue described by @joshua-mitchell_8090, I’m not experiencing the same behaviour. On our server, I can see the same package.

                        a3127edd-8386-4269-9d5e-6cd7755b0eae-image.png

                        atrippA 1 Reply Last reply Reply Quote 1
                        • atrippA Offline
                          atripp inedo-engineer @devops-user
                          last edited by

                          Hi @devops-user @joshua-mitchell_8090 ,

                          Thank you so much for testing! We'll merge this in via PG-3251 in tomorrow's maintenance release.

                          As for the other error, it's technically unrelated - but that package has such a long "compliance analysis report" that it's getting truncated in the database cache. PostgreSQL complains about that, SQL Server silently does it. Anyway w'ell fix via PG-3250 perhaps in tomorrow's release as well.

                          Cheers,
                          Alana

                          1 Reply Last reply Reply Quote 1

                          Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                          Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                          With your input, this post could be even better 💗

                          Register Login
                          • 1 / 1
                          • First post
                            Last post
                          Inedo Website Home • Support Home • Code of Conduct • Forums Guide • Documentation