summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2022-01-18 16:15:37 +0100
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2022-01-18 16:15:37 +0100
commitebdb2b9151b27a338dab6035d01c7e3c244fe5af (patch)
treef759f6bef2aaf64499d96e673995be3795a039c4
parent6de3a640675601bfaf33d1a0bf01358fdbb5990b (diff)
Validate repositories in pom.xml
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/BundleValidator.java18
-rw-r--r--config-model/src/test/cfg/application/validation/testjars/pom-xml-warnings/META-INF/maven/com.yahoo.test/mybundle/pom.xml13
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/BundleValidatorTest.java13
3 files changed, 42 insertions, 2 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/BundleValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/BundleValidator.java
index 474043548db..922e4115177 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/BundleValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/BundleValidator.java
@@ -157,6 +157,7 @@ public class BundleValidator extends Validator {
Document pom = DocumentBuilderFactory.newDefaultInstance().newDocumentBuilder()
.parse(new InputSource(new StringReader(pomXmlContent)));
validateDependencies(deployLogger, jarFilename, pom);
+ validateRepositories(deployLogger, jarFilename, pom);
} catch (ParserConfigurationException e) {
throw new RuntimeException(e);
} catch (Exception e) {
@@ -179,6 +180,23 @@ public class BundleValidator extends Validator {
});
}
+ private static void validateRepositories(DeployLogger deployLogger, String jarFilename, Document pom) throws XPathExpressionException {
+ forEachPomXmlElement(pom, "pluginRepositories/pluginRepository",
+ repository -> validateRepository(deployLogger, jarFilename, "pluginRepositories", repository));
+ forEachPomXmlElement(pom, "repositories/repository",
+ repository -> validateRepository(deployLogger, jarFilename, "repositories", repository));
+ }
+
+ private static void validateRepository(DeployLogger deployLogger, String jarFilename, String parentElementName,
+ Element element) {
+ String url = element.getElementsByTagName("url").item(0).getTextContent();
+ if (url.contains("vespa-maven-libs-release-local")) {
+ deployLogger.logApplicationPackage(Level.WARNING,
+ String.format("<%s> in pom.xml of '%s' uses deprecated Maven repository '%s'.\n See announcement.",
+ parentElementName, jarFilename, url));
+ }
+ }
+
private static void forEachPomXmlElement(Document pom, String xpath, Consumer<Element> consumer) throws XPathExpressionException {
NodeList dependencies = (NodeList) XPathFactory.newDefaultInstance().newXPath()
.compile("/project/" + xpath)
diff --git a/config-model/src/test/cfg/application/validation/testjars/pom-xml-warnings/META-INF/maven/com.yahoo.test/mybundle/pom.xml b/config-model/src/test/cfg/application/validation/testjars/pom-xml-warnings/META-INF/maven/com.yahoo.test/mybundle/pom.xml
index 1d28f307824..167751f55c4 100644
--- a/config-model/src/test/cfg/application/validation/testjars/pom-xml-warnings/META-INF/maven/com.yahoo.test/mybundle/pom.xml
+++ b/config-model/src/test/cfg/application/validation/testjars/pom-xml-warnings/META-INF/maven/com.yahoo.test/mybundle/pom.xml
@@ -12,4 +12,17 @@
<scope>test</scope>
</dependency>
</dependencies>
+
+ <pluginRepositories>
+ <pluginRepository>
+ <id>my-plugin-repository</id>
+ <url>http://myartifactory:8000/artifactory/vespa-maven-libs-release-local</url>
+ </pluginRepository>
+ </pluginRepositories>
+ <repositories>
+ <repository>
+ <id>my-repository</id>
+ <url>http://myartifactory:8000/artifactory/vespa-maven-libs-release-local</url>
+ </repository>
+ </repositories>
</project> \ No newline at end of file
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/BundleValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/BundleValidatorTest.java
index ef4353d02fb..b73b50e82a5 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/BundleValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/BundleValidatorTest.java
@@ -70,18 +70,27 @@ public class BundleValidatorTest {
}
@Test
- public void outputs_deploy_warning_on_deprecated_dependency() throws IOException {
+ public void outputs_deploy_warnings_for_pom_xml() throws IOException {
StringBuffer buffer = new StringBuffer();
DeployLogger logger = createDeployLogger(buffer);
BundleValidator validator = new BundleValidator();
JarFile jarFile = createTemporaryJarFile("pom-xml-warnings");
validator.validateJarFile(logger, jarFile);
- assertThat(buffer.toString())
+ String output = buffer.toString();
+ assertThat(output)
.contains("The pom.xml of bundle 'pom-xml-warnings.jar' includes a dependency to the artifact " +
"'com.yahoo.vespa:vespa-http-client-extensions'. \n" +
"This artifact will be removed in Vespa 8. " +
"Programmatic use can be safely removed from system/staging tests. " +
"See internal Vespa 8 release notes for details.\n");
+ assertThat(output)
+ .contains("\n" +
+ "<pluginRepositories> in pom.xml of 'pom-xml-warnings.jar' uses deprecated Maven repository " +
+ "'http://myartifactory:8000/artifactory/vespa-maven-libs-release-local'.\n See announcement.");
+ assertThat(output)
+ .contains("\n" +
+ "<repositories> in pom.xml of 'pom-xml-warnings.jar' uses deprecated Maven repository " +
+ "'http://myartifactory:8000/artifactory/vespa-maven-libs-release-local'.\n See announcement.");
}
private JarFile createTemporaryJarFile(String testArtifact) throws IOException {