uklance / gradle-dependency-export

Export maven dependencies from a gradle project to the file system
28 stars 15 forks source link

Access to file of DefaultUnresolvedArtifactResult in MavenDependencyExport #12

Open stefanleh opened 5 years ago

stefanleh commented 5 years ago

There is an access to the file property of an unresolvable artifact in MavenDependencyExport.groovy: https://github.com/uklance/gradle-dependency-export/blob/master/src/main/groovy/com/lazan/dependency/export/MavenDependencyExport.groovy#L154

Caused by: groovy.lang.MissingPropertyException: No such property: file for class: org.gradle.api.internal.artifacts.result.DefaultUnresolvedArtifactResult
Possible solutions: type, id, failure
        at com.lazan.dependency.export.MavenDependencyExport$_copyPoms_closure10.doCall(MavenDependencyExport.groovy:154)

I think the component.getArtifacts(MavenPomArtifact). should be extended by filtering of the artifacts so we only use resolvable ones. If i find some time i will look into that myself but currently im very busy.

Best regards, Stefan

uklance commented 5 years ago

Is there an artifact on Maven Central which will show the error? Or are you seeing the issue with an artifact from an internal repo?

I think a flag to control the behaviour might be best. Eg

mavenDependencyExport {
   filterResolvable = true
} 

This would allow the build to fail for unresolvable depencies, I'm not sure if that's desirable behaviour (I need to understand what an unresolvable dependency is)

uklance commented 5 years ago

Also, have you seen this?

https://github.com/uklance/gradle-dependency-export/blob/master/src/main/groovy/com/lazan/dependency/export/MavenDependencyExport.groovy#L42-L43

    protected Collection<Configuration> prepareConfigurations() {
        if (!configurations.empty) {
            return configurations
        }
        Collection<Configuration> defaultConfigurations = new LinkedHashSet<>()
        defaultConfigurations.addAll(project.buildscript.configurations.findAll { it.canBeResolved })
        defaultConfigurations.addAll(project.configurations.findAll { it.canBeResolved })
        return defaultConfigurations
    }
stefanleh commented 5 years ago

Yes, the same check is done here too: https://github.com/uklance/gradle-dependency-export/blob/master/src/main/groovy/com/lazan/dependency/export/MavenDependencyExport.groovy#L54

But it doesnt matter if the configuration is resolvable when the artifacts in them might not be.

stefanleh commented 5 years ago

Please see the PR.