From afa64f39dcb33ae5889fb3eefb1c0c94957ca70d Mon Sep 17 00:00:00 2001 From: Filipe Roque Date: Wed, 11 Nov 2020 14:48:50 +0000 Subject: [PATCH] Use injection for maven project instead of reading from pom.xml The previous solutions is not compatible with a project with multiples modules. See: https://stackoverflow.com/questions/10606293/java-maven-mojo-getting-information-from-project-pom/63320868#63320868 --- src/main/java/biz/lermitage/oga/CheckMojo.kt | 24 +++++--------------- 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/src/main/java/biz/lermitage/oga/CheckMojo.kt b/src/main/java/biz/lermitage/oga/CheckMojo.kt index db4a521..38258a5 100644 --- a/src/main/java/biz/lermitage/oga/CheckMojo.kt +++ b/src/main/java/biz/lermitage/oga/CheckMojo.kt @@ -8,12 +8,14 @@ import org.apache.maven.plugin.AbstractMojo import org.apache.maven.plugin.MojoExecutionException import org.apache.maven.plugins.annotations.Mojo import org.apache.maven.plugins.annotations.Parameter +import org.apache.maven.project.MavenProject import org.codehaus.plexus.util.xml.pull.XmlPullParserException import java.io.File import java.io.FileReader import java.io.IOException import java.net.URL + /** * Goal which checks that no dependency uses a deprecated groupId. * @@ -27,6 +29,9 @@ class CheckMojo : AbstractMojo() { @Parameter(name = "ogDefinitionsUrl") private val ogDefinitionsUrl: String? = null + @Parameter(property = "project", readonly = true) + var project: MavenProject? = null + /** * Execute goal. */ @@ -38,8 +43,7 @@ class CheckMojo : AbstractMojo() { val definitions = URL(ogDefinitionsUrl ?: DEFINITIONS_URL).let { IOTools.readDefinitionsFromUrl(it) } log.debug("Loaded definitions file version: ${definitions.version}, ${definitions.date}") - val model = readModel(File("pom.xml")) - val dependencies = listDependencies(model)//.filter { dep -> !definitions.whitelist!!.contains("${dep.groupId}:${dep.artifactId}") } + val dependencies = project?.dependencies!!.filterNotNull() val deprecatedDependencies: HashSet = HashSet() log.info("Checking dependencies...") @@ -87,22 +91,6 @@ class CheckMojo : AbstractMojo() { } } - @Throws(IOException::class, XmlPullParserException::class) - private fun readModel(pomFile: File?): Model { - // parse pom.xml, see https://stackoverflow.com/questions/4838591/is-there-a-library-for-reading-maven2-3-pom-xml-files - return MavenXpp3Reader().read(FileReader(pomFile!!)) - } - - private fun listDependencies(model: Model): List { - log.debug("Listing dependencies:") - val dependencies = model.dependencies - dependencies.sortWith(Comparator { o1, o2 -> ("${o1.groupId}:${o1.artifactId}").compareTo("${o2.groupId}:${o2.artifactId}") }) - for (dep in dependencies) { - log.debug(" ${dep.groupId}:${dep.artifactId}") - } - return dependencies - } - /*private fun isDeprecatedOnMavencentral(groupId: String, artifactId: String): Boolean { return try { val url = "https://mvnrepository.com/artifact/$groupId/$artifactId"