paketo-buildpacks / executable-jar

A Cloud Native Buildpack that contributes a Process Type for executable JARs.
Apache License 2.0
15 stars 7 forks source link

Enable detect to support multiple jar files #132

Open dmikusa opened 2 years ago

dmikusa commented 2 years ago

What happened?

The executable jar buildpack will detect if you either:

  1. Build from source code and the build output is either a single executable JAR or multiple files that only contain a single executable JAR
  2. Build with a pre-compiled asset that is a single executable JAR file

In some cases, you may want to compile locally but build an image from a directory or archive that is not an executable JAR. This is not presently possible because detect.go looks for /workspace/META-INF/MANIFEST.MF, which will only exist if the asset being provided to build is an executable JAR.

This enhancement request is to have detect also look at the present workspace and see if either a.) the workspace itself has a manifest or if b.) it can identify a single executable JAR file in the workspace.

anthonydahanne commented 9 months ago

it's a duplicate of https://github.com/paketo-buildpacks/executable-jar/issues/206 , right? should we close it?

dmikusa commented 9 months ago

I don't think they are duplicates. #206 is a problem that occurs when you have an intended executable JAR but then one of the dependencies of that executable JAR is also executable. The buildpack may sometimes select the wrong JAR to execute. There's no way to tell the buildpack to pick a particular JAR, so that issue is to add a way to select the specific JAR to execute.

Presently, you can only hit the previous issue if you build from source. This one is to change detect so that you could build source code locally and package an image from say a directory of JAR files you built. There's probably not a huge need for this issue, #206 is definitely more important.

c0d1ngm0nk3y commented 4 months ago

The executable jar buildpack will detect if you either:

... Build with a pre-compiled asset that is a single executable JAR file

But that is not true, right? I see it as a bug in the detect logic. This is fixed by #265.

modulo11 commented 2 months ago

I'm trying to understand what's left of this issue after https://github.com/paketo-buildpacks/executable-jar/pull/265 was merged.

From what I understood users can already provide BP_EXECUTABLE_JAR_LOCATION to specify where to look for JARs or let the buildpack pick the first executable JAR it can find.

anthonydahanne commented 2 months ago

@modulo11 we'll probably release with #265 this week, please test it out and let us know if this issue is fixed! Thanks

modulo11 commented 2 months ago

If workspace/META-INF/MANIFEST.MF is present, BP_EXECUTABLE_JAR_LOCATION has no effect. If it's not present, auto-detection and overwriting that using BP_EXECUTABLE_JAR_LOCATION works fine.

@anthonydahanne If that's the anticipated behavior, we can close this issue. However, I'd expect that BP_EXECUTABLE_JAR_LOCATION should always work.