aboutsummaryrefslogtreecommitdiff
path: root/buildSrc/src/main/groovy/org/jetbrains/CorrectShadowPublishing.groovy
blob: aacede449883ecb9e162e1f889d42f90f412f597 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package org.jetbrains

import org.gradle.api.Project
import org.gradle.api.artifacts.ModuleVersionIdentifier
import org.gradle.api.artifacts.ProjectDependency
import org.gradle.api.artifacts.SelfResolvingDependency
import org.gradle.api.internal.artifacts.ivyservice.projectmodule.ProjectDependencyPublicationResolver
import org.gradle.api.publish.maven.MavenPom
import org.gradle.api.publish.maven.MavenPublication

//https://github.com/johnrengelman/shadow/issues/334
static void configure(MavenPublication publication, Project project) {
    publication.artifact(project.tasks.shadowJar)

    publication.pom { MavenPom pom ->
        pom.withXml { xml ->
            def dependenciesNode = xml.asNode().appendNode('dependencies')

            project.configurations.shadow.allDependencies.each {
                if (it instanceof ProjectDependency) {
                    final ProjectDependencyPublicationResolver projectDependencyResolver = project.gradle.services.get(ProjectDependencyPublicationResolver)
                    final ModuleVersionIdentifier identifier = projectDependencyResolver.resolve(ModuleVersionIdentifier, it)
                    addDependency(dependenciesNode, identifier)
                } else if (!(it instanceof SelfResolvingDependency)) {
                    addDependency(dependenciesNode, it)
                }

            }
        }
    }
}

private static void addDependency(Node dependenciesNode, dep) {
    def dependencyNode = dependenciesNode.appendNode('dependency')
    dependencyNode.appendNode('groupId', dep.group)
    dependencyNode.appendNode('artifactId', dep.name)
    dependencyNode.appendNode('version', dep.version)
    dependencyNode.appendNode('scope', 'compile')
}