apply plugin: 'maven' // for this script, see https://gist.github.com/fikovnik/ffc1fed1867bc7fa679aaf8e48f00c21 configurations { mavenEmbedder } dependencies { api project(':rpm-core') api "org.apache.ant:ant:${project.property('ant.version')}" implementation "org.mvel:mvel2:${project.property('mvel.version')}" compileOnly "org.apache.maven:maven-core:${project.property('maven.version')}" compileOnly "org.apache.maven:maven-plugin-api:${project.property('maven.version')}" compileOnly "org.apache.maven.plugin-tools:maven-plugin-annotations:${project.property('maven-plugin-annotations.version')}" testImplementation "org.apache.maven:maven-core:${project.property('maven.version')}" testImplementation "org.apache.maven:maven-plugin-api:${project.property('maven.version')}" testImplementation "org.apache.maven.plugin-tools:maven-plugin-annotations:${project.property('maven-plugin-annotations.version')}" mavenEmbedder "org.apache.maven:maven-embedder:${project.property('maven.version')}" mavenEmbedder "org.apache.maven:maven-compat:${project.property('maven.version')}" mavenEmbedder "org.slf4j:slf4j-simple:${project.property('slf4j.version')}" mavenEmbedder "org.apache.maven.wagon:wagon-http:${project.property('maven-wagon.version')}:shaded" mavenEmbedder "org.apache.maven.wagon:wagon-provider-api:${project.property('maven-wagon.version')}" mavenEmbedder "org.eclipse.aether:aether-connector-basic:${project.property('aether-connector-basic.version')}" mavenEmbedder "org.eclipse.aether:aether-transport-wagon:${project.property('aether-transport-wagon.version')}" } test { systemProperty 'project.build.testOutputDirectory', project.buildDir.path + "/resources/test" } install.repositories.mavenInstaller.pom.with { groupId = project.group artifactId = project.name version = project.version packaging = 'maven-plugin' } task generatePluginDescriptor(type: JavaExec, dependsOn: compileJava) { def pomFile = file("$buildDir/pom.xml") def pluginDescriptorFile = new File(file(project.compileJava.destinationDir), 'META-INF/maven/plugin.xml') def directory = buildDir.canonicalPath def outputDirectory = compileJava.destinationDir.canonicalPath inputs.files project.compileJava.outputs.files outputs.file pluginDescriptorFile classpath = configurations.mavenEmbedder main = 'org.apache.maven.cli.MavenCli' systemProperties['maven.multiModuleProjectDirectory'] = projectDir args = [ '--update-snapshots', '--errors', '--batch-mode', '--settings', "${project.projectDir}/config/maven/repo-settings.xml", '--file', "${buildDir}/pom.xml", "org.apache.maven.plugins:maven-plugin-plugin:${project.property('maven-plugin-plugin.version')}:descriptor" ] doFirst { install.repositories.mavenInstaller.pom.withXml { asNode().appendNode('build').with { appendNode('directory', directory) appendNode('outputDirectory', outputDirectory) } }.writeTo(pomFile) assert pomFile.file, "${pomFile.canonicalPath}: was not generated" logger.info("POM is generated in ${pomFile.canonicalPath}") } doLast { assert pluginDescriptorFile.file, "${pluginDescriptorFile.canonicalPath}: was not generated" logger.info("Maven plugin descriptor generated in ${pluginDescriptorFile.canonicalPath}") } } project.jar.dependsOn(generatePluginDescriptor) apply from: rootProject.file('gradle/publishing/publication.gradle')