• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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