rpm/maven-plugin-rpm/build.gradle

73 lines
3.5 KiB
Groovy

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)