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

Prevent artifact locations that are directories from being opened as zip files #182

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

JagoGyselinck
Copy link

@JagoGyselinck JagoGyselinck commented May 28, 2021

Hi!

This pull request fixes a bug where the oss-licenses-plugin will attempt to create a ZipFile from a directory, resulting in a FileNotFoundException.

Such a situation may occur when:

  • Other plugins are present in the project.
  • Those plugins register dependency transforms which only set an output directory in their transform output.
  • Those transformed dependencies are discovered by the oss-licenses-plugin through resolvable configurations from the other plugins.

When this happens, both the transformed dependency and the untransformed dependency will be listed in the dependencies.json file. For example:

Actual dependency

{
        "group": "com.google.android.gms",
        "version": "17.0.0",
        "fileLocation": ".gradle/caches/modules-2/files-2.1/com.google.android.gms/play-services-oss-licenses/17.0.0/4f7cb3..../play-services-oss-licenses-17.0.0.aar",
        "name": "play-services-oss-licenses"
},

Transformed dependency, which is a directory named xyz.aar

{
        "group": "com.google.android.gms",
        "version": "17.0.0",
        "fileLocation": ".gradle/caches/transforms-2/files-2.1/4933ce..../play-services-oss-licenses-17.0.0.aar",
        "name": "play-services-oss-licenses-17.0.0"
},

For the most part, the oss-licenses-plugin seems to handle the directory case well, as it will usually just detect that no POM file is present and ignore it. However, in the case above, isGoogleServices will return true and we'll end up in addGooglePlayServiceLicenses, which tries to open the directory as a zip file.

This pull request makes sure the method just returns when the artifactFile is a directory. License information will still be picked up when the actual artifactFile is processed.

Best Regards,
Jago

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.

None yet

1 participant