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!

    Unable to Publish SBT Plugin

    Scheduled Pinned Locked Moved Support
    progetpublishing
    4 Posts 2 Posters 15 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.
    • ? This user is from outside of this forum
      Guest
      last edited by

      Example repo on github here: https://github.com/nspottsie/inedo-proget-sbt-publish-example

      Issue

      When publishing a SBT plugin to ProGet, the publish step fails.

      Steps to Reproduce

      1. SBT is installed on your machine http://www.scala-sbt.org/release/docs/Installing-sbt-on-Linux.html

      2. cd to repo root

      3. Modify build.sbt to point to ProGet server

         Here it assumes there’s one running on localhost:8080 and that there is a user named publisher who has permission to publish packages.
        
         Build.sbt also assumes there’s a maven feed named maven-libraries
        
      4. Run sbt publish on the command line

      Expected Results

      sbt-test-plugin-1.0.35 is published to Proget

      Actual Results

      [info] Packaging /Users/je185066/repos/silver/samza-sbt/proget-repro/target/scala-2.10/sbt-0.13/sbt-test-plugin-1.0.35-sources.jar ...
      [info] Done packaging.
      [info] Updating {file:/Users/je185066/repos/silver/samza-sbt/proget-repro/}proget-repro...
      [info] Wrote /Users/je185066/repos/silver/samza-sbt/proget-repro/target/scala-2.10/sbt-0.13/sbt-test-plugin-1.0.35.pom
      [info] Resolving org.fusesource.jansi#jansi;1.4 ...
      [info] Done updating.
      [info] :: delivering :: com.test#sbt-test-plugin;1.0.35 :: 1.0.35 :: integration :: Mon Mar 06 11:40:36 EST 2017
      [info]      delivering ivy file to /Users/je185066/repos/silver/samza-sbt/proget-repro/target/scala-2.10/sbt-0.13/ivy-1.0.35.xml
      [info] Main Scala API documentation to /Users/je185066/repos/silver/samza-sbt/proget-repro/target/scala-2.10/sbt-0.13/api...
      [info] Compiling 1 Scala source to /Users/je185066/repos/silver/samza-sbt/proget-repro/target/scala-2.10/sbt-0.13/classes...
      model contains 6 documentable templates
      [info] Packaging /Users/je185066/repos/silver/samza-sbt/proget-repro/target/scala-2.10/sbt-0.13/sbt-test-plugin-1.0.35.jar ...
      [info] Done packaging.
      [info] Main Scala API documentation successful.
      [info] Packaging /Users/je185066/repos/silver/samza-sbt/proget-repro/target/scala-2.10/sbt-0.13/sbt-test-plugin-1.0.35-javadoc.jar ...
      [info] Done packaging.
      java.io.IOException: PUT operation to URL http://localhost:8080/maven2/maven-libraries/com/test/sbt-test-plugin_2.10_0.13/1.0.35/sbt-test-plugin-1.0.35.pom failed with status code 500: Internal Server Error```
      
      #### Server Log
      
      ```Unhandled exception processing /maven2/maven-libraries/com/test/sbt-test-plugin_2.10_0.13/1.0.35/sbt-test-plugin-1.0.35.pom
      System.ArgumentNullException: Value cannot be null.
      Parameter name: package
      at Inedo.ProGet.Feeds.Maven.MavenFeed.InstallPackage(String groupId, String artifactId, String version, String package, Stream packageStream)
      at Inedo.ProGet.WebApplication.SimpleHandlers.Maven.MavenHandler.ProcessRequest2(HttpContext context)
      at Inedo.ProGet.WebApplication.SimpleHandlers.Maven.MavenHandler.ProcessRequestInternalAsync(HttpContext context)
      at Inedo.ProGet.WebApplication.SimpleHandlers.ApiHandlerBase.<ProcessRequestAsync>d__0.MoveNext()```
      
      #### Root Cause
      SBT plugins are designed to be cross compiled for multiple scala and sbt versions, and so when IsPlugin := true is added to a build.sbt file, and the artifact is published, it is published to a url containing the artifact name which contains the scala version, and sbt version.  For example, http://localhost:8080/maven2/maven-libraries/com/test/sbt-test-plugin_2.10_0.13/1.0.35/sbt-test-plugin-1.0.35.pom. But, the file name does not contain those two pieces of information. The MavenRequestInfo.PackageType method expects that both parts match, and when it doesn’t, it returns null for the package type. This generates a NullArgumentException during the publish stage.
      
      Product: ProGet  
      Version: 4.7.6
      1 Reply Last reply Reply Quote 0
      • benB Offline
        ben inedo-engineer
        last edited by

        I am able to reproduce this locally. It looks like you are correct about the root cause being artifactId-version not being a prefix of the filename.

        1 Reply Last reply Reply Quote 0
        • ? This user is from outside of this forum
          Guest
          last edited by

          My team is affected by this as well. Any plans to release a fix? Or if anyone knows a workaround in SBT to change the publish path so the directory and file names match.

          1 Reply Last reply Reply Quote 0
          • ? This user is from outside of this forum
            Guest
            last edited by

            THis is logged as a bug for [PG-758], and we may get this in next maintence release. Unfortunately it's a non-trivial fix.

            1 Reply Last reply Reply Quote 0

            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