1/* 2 * Copyright 2017-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. 3 */ 4 5apply plugin: 'kotlin' 6apply plugin: 'maven' 7 8apply from: rootProject.file('gradle/compile-options.gradle') 9 10ext.configureKotlin() 11 12dependencies { 13 compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" 14 compile project(":atomicfu-transformer") 15 compile "org.apache.maven:maven-core:$maven_version" 16 compile "org.apache.maven:maven-plugin-api:$maven_version" 17 compile 'org.apache.maven.plugin-tools:maven-plugin-annotations:3.5' 18} 19 20def pomFile = file("$buildDir/pom.xml") 21def outputDir = compileKotlin.destinationDirectory 22def buildSnapshots = rootProject.properties['build_snapshot_train'] != null 23 24evaluationDependsOn(':atomicfu-transformer') 25 26task generatePomFile(dependsOn: [compileKotlin, ':atomicfu-transformer:publishToMavenLocal']) { 27 def buildDir = project.buildDir // because Maven model also has "project" 28 outputs.file(pomFile) 29 doLast { 30 install.repositories.mavenInstaller.pom.with { 31 groupId = project.group 32 artifactId = project.name 33 version = project.version 34 packaging = 'maven-plugin' 35 36 withXml { 37 asNode().with { 38 appendNode('build').with { 39 appendNode('directory', buildDir) 40 appendNode('outputDirectory', outputDir.get().getAsFile()) 41 } 42 appendNode('properties').with { 43 appendNode('project.build.sourceEncoding', 'UTF-8') 44 } 45 appendNode('repositories').with { 46 appendNode('repository').with { 47 appendNode('id', 'dev') 48 appendNode('url', 'https://maven.pkg.jetbrains.space/kotlin/p/kotlin/dev') 49 } 50 51 if (buildSnapshots) { 52 appendNode('repository').with { 53 appendNode('id', 'kotlin-snapshots') 54 appendNode('url', "https://oss.sonatype.org/content/repositories/snapshots") 55 } 56 } 57 } 58 } 59 } 60 } 61 install.repositories.mavenInstaller.pom.writeTo(pomFile) 62 assert pomFile.file, "$pomFile: was not generated" 63 logger.info("POM is generated in $pomFile") 64 } 65} 66 67String mavenUserHome = System.getProperty("maven.user.home") 68String mavenRepoLocal = System.getProperty("maven.repo.local") 69 70// runs the plugin description generator 71task generatePluginDescriptor(type: Exec, dependsOn: generatePomFile) { 72 def pluginDescriptorFile = outputDir.file('META-INF/maven/plugin.xml') 73 74 workingDir projectDir 75 boolean isWindows = System.getProperty("os.name").toLowerCase().indexOf("windows") >= 0 76 def args = isWindows ? ['cmd', '/c', 'mvnw.cmd'] : ['sh', './mvnw'] 77 if (mavenUserHome != null) args.add("-Dmaven.user.home=${new File(mavenUserHome).getAbsolutePath()}") 78 if (mavenRepoLocal != null) args.add("-Dmaven.repo.local=${new File(mavenRepoLocal).getAbsolutePath()}") 79 args.addAll([ 80 '--settings', './settings.xml', 81 '--errors', 82 '--batch-mode', 83 '--file', pomFile.toString(), 84 'org.apache.maven.plugins:maven-plugin-plugin:3.5.1:descriptor' 85 ]) 86 commandLine args 87 doLast { 88 def descriptorFile = pluginDescriptorFile.get().getAsFile() 89 assert descriptorFile, "$descriptorFile: was not generated" 90 logger.info("Plugin descriptor is generated in $descriptorFile") 91 } 92} 93 94project.jar.dependsOn(generatePluginDescriptor) 95