Last active
March 7, 2023 08:01
-
-
Save riprasad/a16a71a3062021739f025b763f95bab3 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import groovy.util.logging.Slf4j | |
import org.apache.maven.model.Build | |
import org.apache.maven.model.Dependency | |
import org.apache.maven.model.DependencyManagement | |
import org.apache.maven.model.Plugin | |
import org.codehaus.plexus.util.xml.Xpp3Dom | |
import org.commonjava.maven.atlas.ident.ref.SimpleProjectVersionRef | |
import org.commonjava.maven.ext.common.ManipulationException | |
import org.commonjava.maven.ext.common.model.Project | |
import org.commonjava.maven.ext.core.groovy.BaseScript | |
import org.commonjava.maven.ext.core.groovy.InvocationPoint | |
import org.commonjava.maven.ext.core.groovy.InvocationStage | |
import org.commonjava.maven.ext.core.groovy.PMEBaseScript | |
import org.commonjava.maven.ext.core.ManipulationSession | |
import org.commonjava.maven.ext.core.state.RESTState | |
import org.commonjava.maven.ext.io.rest.Translator | |
import org.commonjava.maven.atlas.ident.ref.SimpleProjectRef | |
@InvocationPoint(invocationPoint = InvocationStage.FIRST) | |
@PMEBaseScript BaseScript pme | |
@Slf4j | |
public class MangleVersion { | |
BaseScript pme; | |
def execute() { | |
log.info "##########################################################################################################################################" | |
// Quarkus doesn't productize test dependencies | |
// Inlining property version to use community version of quarkus-test-common | |
log.info "--------------------------------------------------------------------------------------------------------" | |
log.info "Custom Adjustments : Inlining version for io.quarkus:quarkus-test-common" | |
log.info "--------------------------------------------------------------------------------------------------------" | |
for ( Project p : pme.getProjects() ) { | |
pme.inlineProperty(pme.getProject(), SimpleProjectRef.parse("io.quarkus:quarkus-test-common")) | |
} | |
log.info "---------------------------------------- Inlining Complete ---------------------------------------------" | |
log.info "" | |
// Use Red Hat Build of Quarkus(RHBQ) | |
overrideProperty("quarkus.version", "2.13.7.Final-redhat-00003") | |
// use productized version | |
//overrideProperty("apicurio-common-rest-client.version", "0.1.14.Final-managedsvc-redhat-00001") | |
//overrideProperty("apicurio-common-app-components.version", "0.1.14.Final-managedsvc-redhat-00001") | |
pme.projects.each { | |
project -> | |
def deps = [project.model?.dependencies, project.model?.dependencyManagement?.dependencies].flatten() //aggregate the 2 sets in a single list | |
deps.removeAll { it == null } // remove nulls | |
log.info " # Scanning Module => $project.groupId:$project.artifactId" | |
// artifact 'org.everit.json.schema' is available from group 'org.everit.json' in Indy | |
//overrideGroupId(deps, "com.github.everit-org.json-schema", "org.everit.json") | |
//enableDeployForSpecificModule(project, "io.apicurio", "apicurio-registry-storage-kafkasql") | |
//enableDeployForSpecificModule(project, "io.apicurio", "apicurio-registry-storage-sql") | |
//enableDeployForSpecificModule(project, "io.apicurio", "apicurio-registry-utils-exportV1") | |
// adding junit dependency to avoid compilation failure | |
/*if (project.groupId == "io.apicurio" && project.artifactId == "apicurio-registry-tests") { | |
addDependency(project, "junit", "junit", "4.12", "compile") | |
} | |
// avoid using a vulnerable version of jackson-databind pulled transitively | |
if (project.groupId == "io.apicurio" && project.artifactId == "apicurio-registry") { | |
addDependencyInDependencyManagemnt(project, "com.fasterxml.jackson.core", "jackson-databind", "2.11.0", "compile") | |
}*/ | |
} | |
log.info "##########################################################################################################################################" | |
} | |
def overrideProperty(String propertyName, String newValue) { | |
log.info "--------------------------------------------------------------------------------------------------------" | |
log.info "Custom Adjustments : Overriding value of the property '$propertyName'" | |
log.info "--------------------------------------------------------------------------------------------------------" | |
String existingValue = pme.project.model.properties.get(propertyName) | |
pme.getProject().getModel().getProperties().setProperty(propertyName, newValue) // overriding the property value | |
String overriddenValue = pme.project.model.properties.get(propertyName) | |
log.info "Old Value: $existingValue" | |
log.info "New Value: $overriddenValue" | |
log.info "-------------------------------------- Property Value Overriden -----------------------------------------" | |
log.info "" | |
} | |
def overrideGroupId(deps, String oldGroup, String newGroup) { | |
deps.each { | |
dep -> | |
log.debug "$dep" | |
if (dep.groupId == oldGroup) { | |
log.info "\t--------------------------------------------------------------------------------------------------------" | |
log.info "\tCustom Adjustments : Overriding groupId: '$oldGroup' ---> $newGroup" | |
log.info "\t--------------------------------------------------------------------------------------------------------" | |
log.info "\tOld Coordinates: $dep" | |
dep.groupId = newGroup | |
log.info "\tNew Coordinates: $dep" | |
log.info "\t------------------------------------------ GroupId Overriden -------------------------------------------" | |
log.info "" | |
} | |
} | |
} | |
def addDependency(project, String groupId, String artifactId, String version, String scope) { | |
log.info "\t--------------------------------------------------------------------------------------------------------" | |
log.info "\tCustom Adjustments : Adding a new Dependency" | |
log.info "\t--------------------------------------------------------------------------------------------------------" | |
def dep = new Dependency() | |
dep.groupId = groupId | |
dep.artifactId = artifactId | |
dep.version = version | |
dep.scope = scope | |
project.model.dependencies.add(dep) | |
log.info "\t$groupId:$artifactId:$version:$scope ---> in project '$project'" | |
log.info "\t------------------------------------------ Dependency Added --------------------------------------------" | |
log.info "" | |
} | |
def addDependencyInDependencyManagemnt(project, String groupId, String artifactId, String version, String scope) { | |
log.info "\t--------------------------------------------------------------------------------------------------------" | |
log.info "\tCustom Adjustments : Added a new Dependency in DependencyManagement" | |
log.info "\t--------------------------------------------------------------------------------------------------------" | |
def dep = new Dependency() | |
dep.groupId = groupId | |
dep.artifactId = artifactId | |
dep.version = version | |
dep.scope = scope | |
project.model.dependencyManagement.dependencies.add(dep) | |
log.info "\t$groupId:$artifactId:$version:$scope ---> in project '$project'" | |
log.info "\t------------------------------------------ Dependency Added --------------------------------------------" | |
log.info "" | |
} | |
def enableDeployForSpecificModule (project, String groupId, String artifactId) { | |
if (project.groupId == groupId && project.artifactId == artifactId) { | |
log.info "\t--------------------------------------------------------------------------------------------------------" | |
log.info "\tCustom Adjustments : Enabling Deploy for module $groupId:$artifactId" | |
log.info "\t--------------------------------------------------------------------------------------------------------" | |
if (project.model.build == null){ | |
log.info "\tCreating build" | |
project.model.build = new Build() | |
} | |
if (project.model.build.plugins == null){ | |
log.info "\tCreating plugins" | |
project.model.build.plugins = new ArrayList<Plugin>() | |
} | |
def plugin = project.model.build.plugins.find { | |
it.groupId == "org.apache.maven.plugins" && | |
it.artifactId == "maven-deploy-plugin" | |
} | |
if (plugin == null){ | |
log.info "\tPlugin not found" | |
plugin = new Plugin() | |
plugin.groupId = "org.apache.maven.plugins" | |
plugin.artifactId = "maven-deploy-plugin" | |
project.model.build.plugins.add(plugin) | |
} | |
log.info "\tPlugin: $plugin" | |
if (plugin.configuration == null) { | |
log.info "\tCreating configuration" | |
def configuration = new Xpp3Dom("configuration") | |
def skip = new Xpp3Dom("skip") | |
skip.value = "false" | |
configuration.addChild(skip) | |
plugin.configuration = configuration | |
} else { | |
log.info "\tPlugin configuration not empty" | |
def config = plugin.configuration as Xpp3Dom | |
def skip = config.getChild("skip") | |
if (skip == null){ | |
log.info "\tModifying configuration" | |
skip = new Xpp3Dom("skip") | |
config.addChild(skip) | |
} | |
else if (skip.value == "true") { | |
log.info "\texisting skip value is '$skip.value'. Thus, the module won't get deployed." | |
log.info "\tModifying the skip value to 'false'" | |
skip.value = "false" | |
} | |
else { | |
log.info "\texisting skip value is '$skip.value'. Thus, the module will get deployed." | |
} | |
} | |
log.info "\t------------------------------------------ Deployment Enabled ------------------------------------------" | |
log.info "" | |
} | |
} | |
} | |
MangleVersion mangleVersion = new MangleVersion(pme: pme) | |
mangleVersion.execute() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment