aboutsummaryrefslogtreecommitdiff
path: root/buildSrc
diff options
context:
space:
mode:
Diffstat (limited to 'buildSrc')
-rw-r--r--buildSrc/build.gradle8
-rw-r--r--buildSrc/src/main/groovy/org/jetbrains/CorrectShadowPublishing.groovy39
-rw-r--r--buildSrc/src/main/groovy/org/jetbrains/DependenciesVersionGetter.groovy14
-rw-r--r--buildSrc/src/main/groovy/org/jetbrains/PluginXmlTransformer.groovy25
4 files changed, 70 insertions, 16 deletions
diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle
index 76c7c4ee..874dabc9 100644
--- a/buildSrc/build.gradle
+++ b/buildSrc/build.gradle
@@ -2,12 +2,8 @@ apply plugin: 'groovy'
repositories {
mavenCentral()
jcenter()
- maven {
- url "https://dl.bintray.com/kotlin/kotlin-eap"
- }
- maven {
- url "https://dl.bintray.com/kotlin/kotlin-dev"
- }
+ maven { url "https://dl.bintray.com/kotlin/kotlin-eap" }
+ maven { url "https://dl.bintray.com/kotlin/kotlin-dev" }
}
dependencies {
compile 'com.github.jengelman.gradle.plugins:shadow:2.0.1'
diff --git a/buildSrc/src/main/groovy/org/jetbrains/CorrectShadowPublishing.groovy b/buildSrc/src/main/groovy/org/jetbrains/CorrectShadowPublishing.groovy
new file mode 100644
index 00000000..3e1d2106
--- /dev/null
+++ b/buildSrc/src/main/groovy/org/jetbrains/CorrectShadowPublishing.groovy
@@ -0,0 +1,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.publish.internal.ProjectDependencyPublicationResolver
+import org.gradle.api.publish.maven.MavenPom
+import org.gradle.api.publish.maven.MavenPublication
+
+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 SelfResolvingDependency)) {
+ if (it instanceof ProjectDependency) {
+ def projectDependencyResolver = project.gradle.services.get(ProjectDependencyPublicationResolver)
+ ModuleVersionIdentifier identifier = projectDependencyResolver.resolve(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', 'runtime')
+} \ No newline at end of file
diff --git a/buildSrc/src/main/groovy/org/jetbrains/DependenciesVersionGetter.groovy b/buildSrc/src/main/groovy/org/jetbrains/DependenciesVersionGetter.groovy
new file mode 100644
index 00000000..194f11af
--- /dev/null
+++ b/buildSrc/src/main/groovy/org/jetbrains/DependenciesVersionGetter.groovy
@@ -0,0 +1,14 @@
+package org.jetbrains
+
+import org.gradle.api.Project
+
+class DependenciesVersionGetter {
+ static Properties getVersions(Project project, String artifactVersionSelector) {
+ def dep = project.dependencies.create(group: 'teamcity', name: 'dependencies', version: artifactVersionSelector, ext: 'properties')
+ def file = project.configurations.detachedConfiguration(dep).resolve().first()
+
+ def prop = new Properties()
+ prop.load(new FileReader(file))
+ return prop
+ }
+}
diff --git a/buildSrc/src/main/groovy/org/jetbrains/PluginXmlTransformer.groovy b/buildSrc/src/main/groovy/org/jetbrains/PluginXmlTransformer.groovy
index 7482a01a..e711388f 100644
--- a/buildSrc/src/main/groovy/org/jetbrains/PluginXmlTransformer.groovy
+++ b/buildSrc/src/main/groovy/org/jetbrains/PluginXmlTransformer.groovy
@@ -1,5 +1,6 @@
package org.jetbrains
+import com.github.jengelman.gradle.plugins.shadow.relocation.RelocateClassContext
import com.github.jengelman.gradle.plugins.shadow.relocation.Relocator
import com.github.jengelman.gradle.plugins.shadow.transformers.Transformer
import com.github.jengelman.gradle.plugins.shadow.transformers.TransformerContext
@@ -22,7 +23,7 @@ public class PluginXmlTransformer implements Transformer {
def inputStream = context.is
System.out.println(path)
Node node = new XmlParser().parse(inputStream)
- relocateXml(node, context.relocators)
+ relocateXml(node, context)
transformedPluginXmlFiles.put(path, node)
}
@@ -39,28 +40,32 @@ public class PluginXmlTransformer implements Transformer {
}
}
- private static void relocateXml(Node node, List<Relocator> relocators) {
+ private static void relocateXml(Node node, TransformerContext context) {
Map attributes = node.attributes()
+ RelocateClassContext relocateClassContext = new RelocateClassContext()
+ relocateClassContext.stats = context.stats
for (Map.Entry entry : attributes.entrySet()) {
- entry.setValue(relocateClassName((String) entry.getValue(), relocators))
+ relocateClassContext.setClassName((String) entry.getValue())
+ entry.setValue(relocateClassName(relocateClassContext, context))
}
List<String> localText = node.localText()
if (localText.size() == 1) {
- node.setValue(relocateClassName(localText[0], relocators))
+ relocateClassContext.setClassName(localText[0])
+ node.setValue(relocateClassName(relocateClassContext, context))
}
node.children().each {
if (it instanceof Node) {
- relocateXml((Node) it, relocators)
+ relocateXml((Node) it, context)
}
}
}
- private static String relocateClassName(String className, List<Relocator> relocators) {
- for (Relocator relocator : relocators) {
- if (relocator.canRelocateClass(className)) {
- return relocator.relocateClass(className)
+ private static String relocateClassName(RelocateClassContext relocateContext, TransformerContext context) {
+ for (Relocator relocator : context.relocators) {
+ if (relocator.canRelocateClass(relocateContext)) {
+ return relocator.relocateClass(relocateContext)
}
}
- return className
+ return relocateContext.className
}
} \ No newline at end of file