sbt / sbt-native-packager

sbt Native Packager
https://sbt-native-packager.readthedocs.io/en/stable/
BSD 2-Clause "Simplified" License
1.59k stars 437 forks source link

Discard files that are not jars #1565

Closed daddykotex closed 6 months ago

daddykotex commented 6 months ago

If your module has libraryDependencies that are not JARs, they end up on the classpath (they even get renamed during staging) when they're not jar.

For instance, consider this dependency:

libraryDependencies += "com.google.protobuf" % "protoc" % "3.18.2" withExplicitArtifacts Vector(
  Artifact("protoc").withType("jar").withExtension("exe").withClassifier(Some("osx-aarch_64"))
)

(located on maven central)

When you add that, you'll get a file an Attributed[File] at the following location: /path/to/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/google/protobuf/protoc/3.18.2/protoc-3.18.2-osx-aarch_64.exe

When the universalDepMappings logic runs, it keeps the file (even it is not a jar, but furthermore, create a jar name for it like: com.google.protobuf.protoc-3.18.2-osx-aarch_64.jar

This PR is to avoid this issue, I did not create an issue for this because of the overhead of it. If you think this is not valid we can just close the PR.

It did not cause me any issue, as the file is on the classpath but the JVM probably ignores it because it's not a jar and the app is working correctly. It's just annoying that the file is renamed in packaging

lightbend-cla-validator commented 6 months ago

Hi @daddykotex,

Thank you for your contribution! We really value the time you've taken to put this together.

We see that you have signed the Lightbend Contributors License Agreement before, however, the CLA has changed since you last signed it. Please review the new CLA and sign it before we proceed with reviewing this pull request:

http://www.lightbend.com/contribute/cla

daddykotex commented 6 months ago

Yeah... I feared the attempted fix would be too naive (ignores .JAR or .`zip) and as the failed tests highlight it, it ignores the directories I guess

daddykotex commented 6 months ago

Will close, this can serve as documentation that there is an issue but I doubt anybody will run into that. I've personally implemented my solution in a way that does not require adding it to libraryDependencies so I've avoided the issue