Skip to content

Silent failures when POM files are missing or unresolvable #387

Description

@timothyfroehlich

Problem

When the plugin resolves POM files for license extraction, failures are silently swallowed:

  1. Network/resolution failures: createArtifactResolutionQuery() returns UnresolvedArtifactResult for POMs that can't be fetched. The plugin filters these out silently — the dependency just gets no license entry in the output.

  2. Missing POM files: addLicensesFromPom() logs an error (POM file $pomFile for $group:$name does not exist) but continues. The build succeeds with incomplete license data.

  3. No completeness validation: There's no check that every dependency in AGP's METADATA_LIBRARY_DEPENDENCIES_REPORT actually ended up with a license entry in the final output. Missing licenses are invisible to the user.

Impact

A build can produce third_party_licenses / third_party_license_metadata files that are silently missing license entries for some dependencies. This could be a compliance issue.

Considerations

  • Some POMs legitimately have no <licenses> block — should that be a warning vs. an error?
  • Should there be a strict mode (fail on missing) vs. lenient mode (warn only)?
  • Google Play Services artifacts bundle their own license data in the AAR, so missing POMs for those are less critical

Relevant code

  • OssLicensesPlugin.groovy — POM resolution query filters out UnresolvedArtifactResult silently
  • LicensesTask.groovy:addLicensesFromPom() — logs error but doesn't fail
  • LicensesTask.groovy:addGooglePlayServiceLicenses() — logs warn but doesn't fail

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions