8 changed files with 91 additions and 2 deletions
@ -0,0 +1,8 @@ |
|||||||
|
apply plugin: 'maven-bom' |
||||||
|
apply from: "$rootDir/gradle/maven-deployment.gradle" |
||||||
|
|
||||||
|
generatePom.enabled = false |
||||||
|
|
||||||
|
mavenBom { |
||||||
|
projects = coreModuleProjects |
||||||
|
} |
||||||
@ -0,0 +1,19 @@ |
|||||||
|
import org.gradle.api.DefaultTask |
||||||
|
import org.gradle.api.GradleException |
||||||
|
import org.gradle.api.Plugin |
||||||
|
import org.gradle.api.Project |
||||||
|
import org.gradle.api.Task |
||||||
|
import org.gradle.api.plugins.* |
||||||
|
import org.gradle.api.tasks.* |
||||||
|
import org.gradle.api.tasks.TaskAction |
||||||
|
|
||||||
|
public class MavenBomPlugin implements Plugin<Project> { |
||||||
|
static String MAVEN_BOM_TASK_NAME = "mavenBom" |
||||||
|
|
||||||
|
public void apply(Project project) { |
||||||
|
project.plugins.apply(JavaPlugin) |
||||||
|
project.plugins.apply(MavenPlugin) |
||||||
|
project.task(MAVEN_BOM_TASK_NAME, type: MavenBomTask, group: 'Generate', description: 'Configures the pom as a Maven Build of Materials (BOM)') |
||||||
|
project.install.dependsOn project.mavenBom |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,55 @@ |
|||||||
|
import groovy.xml.MarkupBuilder |
||||||
|
|
||||||
|
import org.gradle.api.DefaultTask |
||||||
|
import org.gradle.api.Project |
||||||
|
import org.gradle.api.tasks.* |
||||||
|
|
||||||
|
public class MavenBomTask extends DefaultTask { |
||||||
|
|
||||||
|
Set<Project> projects |
||||||
|
|
||||||
|
File bomFile |
||||||
|
|
||||||
|
|
||||||
|
public MavenBomTask() { |
||||||
|
this.group = "Generate" |
||||||
|
this.description = "Generates a Maven Build of Materials (BOM). See http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Importing_Dependencies" |
||||||
|
this.projects = project.subprojects |
||||||
|
this.bomFile = project.file("${->project.buildDir}/maven-bom/${->project.name}-${->project.version}.txt") |
||||||
|
} |
||||||
|
|
||||||
|
@TaskAction |
||||||
|
public void configureBom() { |
||||||
|
project.configurations.archives.artifacts.clear() |
||||||
|
|
||||||
|
bomFile.parentFile.mkdirs() |
||||||
|
bomFile.write("Maven Build of Materials (BOM). See http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Importing_Dependencies") |
||||||
|
project.artifacts { |
||||||
|
// work around GRADLE-2406 by attaching text artifact |
||||||
|
archives(bomFile) |
||||||
|
} |
||||||
|
project.install { |
||||||
|
repositories.mavenInstaller { |
||||||
|
pom.whenConfigured { |
||||||
|
packaging = "pom" |
||||||
|
withXml { |
||||||
|
asNode().children().last() + { |
||||||
|
delegate.dependencyManagement { |
||||||
|
delegate.dependencies { |
||||||
|
projects.sort { dep -> "$dep.group:$dep.name" }.each { p -> |
||||||
|
|
||||||
|
delegate.dependency { |
||||||
|
delegate.groupId(p.group) |
||||||
|
delegate.artifactId(p.name) |
||||||
|
delegate.version(p.version) |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1 @@ |
|||||||
|
implementation-class=MavenBomPlugin |
||||||
Loading…
Reference in new issue