Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Discard files that are not jars #1565

Closed
wants to merge 1 commit into from

Conversation

daddykotex
Copy link

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

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"))
)
```

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

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
Copy link
Author

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
Copy link
Author

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

@daddykotex daddykotex closed this Jan 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants