Explorar o código

Fix artifact build properties for Artifactory

- Apply SpringArtifactoryPlugin in SpringRootProjectPlugin (which applies ArtifactoryPlugin)
- In SpringArtifactoryPlugin don't set publication if MavenPublishPlugin is not applied

Closes gh-1179
Janne Valkealahti %!s(int64=2) %!d(string=hai) anos
pai
achega
bc947481ad

+ 2 - 2
buildSrc/src/main/java/io/spring/gradle/convention/SpringRootProjectPlugin.java

@@ -20,9 +20,9 @@ import org.gradle.api.Plugin;
 import org.gradle.api.Project;
 import org.gradle.api.plugins.BasePlugin;
 import org.gradle.api.plugins.PluginManager;
-import org.jfrog.gradle.plugin.artifactory.ArtifactoryPlugin;
 
 import org.springframework.gradle.classpath.SpringCheckProhibitedDependenciesLifecyclePlugin;
+import org.springframework.gradle.maven.SpringArtifactoryPlugin;
 import org.springframework.gradle.maven.SpringNexusPlugin;
 import org.springframework.gradle.nohttp.SpringNoHttpPlugin;
 import org.springframework.gradle.sonarqube.SpringSonarQubePlugin;
@@ -39,7 +39,7 @@ public class SpringRootProjectPlugin implements Plugin<Project> {
 		pluginManager.apply(SpringNoHttpPlugin.class);
 		pluginManager.apply(SpringNexusPlugin.class);
 		pluginManager.apply(SpringCheckProhibitedDependenciesLifecyclePlugin.class);
-		pluginManager.apply(ArtifactoryPlugin.class);
+		pluginManager.apply(SpringArtifactoryPlugin.class);
 		pluginManager.apply(SpringSonarQubePlugin.class);
 
 		// Apply default repositories

+ 6 - 2
buildSrc/src/main/java/org/springframework/gradle/maven/SpringArtifactoryPlugin.java

@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2022 the original author or authors.
+ * Copyright 2002-2023 the original author or authors.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,6 +18,7 @@ package org.springframework.gradle.maven;
 
 import org.gradle.api.Plugin;
 import org.gradle.api.Project;
+import org.gradle.api.publish.maven.plugins.MavenPublishPlugin;
 import org.jfrog.gradle.plugin.artifactory.ArtifactoryPlugin;
 import org.jfrog.gradle.plugin.artifactory.dsl.ArtifactoryPluginConvention;
 
@@ -49,7 +50,10 @@ public class SpringArtifactoryPlugin implements Plugin<Project> {
 						repository.setPassword(project.findProperty("artifactoryPassword"));
 					}
 				});
-				publish.defaults((defaults) -> defaults.publications("mavenJava"));
+				// Would fail if maven publish is not applied, i.e. in root project (SpringRootProjectPlugin)
+				project.getPlugins().withType(MavenPublishPlugin.class, mavenPublish -> {
+					publish.defaults((defaults) -> defaults.publications("mavenJava"));
+				});
 			});
 		});
 	}