Skip to content

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.

1 participant