1package org.jetbrains 2 3import org.gradle.api.Project 4import org.gradle.api.artifacts.ModuleVersionIdentifier 5import org.gradle.api.artifacts.ProjectDependency 6import org.gradle.api.artifacts.SelfResolvingDependency 7import org.gradle.api.internal.artifacts.ivyservice.projectmodule.ProjectDependencyPublicationResolver 8import org.gradle.api.publish.maven.MavenPom 9import org.gradle.api.publish.maven.MavenPublication 10 11//https://github.com/johnrengelman/shadow/issues/334 12static void configure(MavenPublication publication, Project project) { 13 publication.artifact(project.tasks.shadowJar) 14 15 publication.pom { MavenPom pom -> 16 pom.withXml { xml -> 17 def dependenciesNode = xml.asNode().appendNode('dependencies') 18 19 project.configurations.shadow.allDependencies.each { 20 if (it instanceof ProjectDependency) { 21 final ProjectDependencyPublicationResolver projectDependencyResolver = project.gradle.services.get(ProjectDependencyPublicationResolver) 22 final ModuleVersionIdentifier identifier = projectDependencyResolver.resolve(ModuleVersionIdentifier, it) 23 addDependency(dependenciesNode, identifier) 24 } else if (!(it instanceof SelfResolvingDependency)) { 25 addDependency(dependenciesNode, it) 26 } 27 28 } 29 } 30 } 31} 32 33private static void addDependency(Node dependenciesNode, dep) { 34 def dependencyNode = dependenciesNode.appendNode('dependency') 35 dependencyNode.appendNode('groupId', dep.group) 36 dependencyNode.appendNode('artifactId', dep.name) 37 dependencyNode.appendNode('version', dep.version) 38 dependencyNode.appendNode('scope', 'compile') 39} 40