PomUtils.java
/*
* Copyright 2019, Gerwin Klein, R��gis D��camps, Steve Rowe
* SPDX-License-Identifier: BSD-3-Clause
*/
package jflex.maven.plugin.testsuite;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
class PomUtils {
private PomUtils() {}
static String getPomVersion(String groupId, String artifactId, File jar) throws IOException {
if (!jar.isFile() || !jar.canRead()) {
throw new FileNotFoundException("Couldn't open jar file " + jar);
}
return getPomProperty("version", artifactId, jar, groupId);
}
private static String getPomProperty(
String propertyName, String artifactId, File jar, String groupId) throws IOException {
try {
Properties pomProperties = getPomProperties(groupId, artifactId, new CustomClassLoader(jar));
return pomProperties.getProperty(propertyName);
} catch (IOException e) {
throw new IOException("Couldn't extract POM version of " + groupId + ":" + artifactId, e);
}
}
private static Properties getPomProperties(
String groupId, String artifactId, CustomClassLoader classLoader) throws IOException {
Properties pomProperties = new Properties();
String propertiesName = "META-INF/maven/" + groupId + "/" + artifactId + "/pom.properties";
try (InputStream pomPropertiesContent = classLoader.getResourceAsStream(propertiesName)) {
if (pomPropertiesContent == null) {
throw new IOException("Missing POM property: " + propertiesName);
}
pomProperties.load(pomPropertiesContent);
}
return pomProperties;
}
}