8 changed files with 91 additions and 2 deletions
@ -0,0 +1,8 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -0,0 +1 @@
|
||||
implementation-class=MavenBomPlugin |
||||
Loading…
Reference in new issue