@ -1,5 +1,5 @@
/ *
/ *
* Copyright 2012 - 2023 the original author or authors .
* Copyright 2012 - 2024 the original author or authors .
*
*
* Licensed under the Apache License , Version 2 . 0 ( the "License" ) ;
* Licensed under the Apache License , Version 2 . 0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* you may not use this file except in compliance with the License .
@ -54,6 +54,8 @@ import org.gradle.api.artifacts.component.ModuleComponentIdentifier;
import org.gradle.api.artifacts.result.ResolvedArtifactResult ;
import org.gradle.api.artifacts.result.ResolvedArtifactResult ;
import org.gradle.api.attributes.DocsType ;
import org.gradle.api.attributes.DocsType ;
import org.gradle.api.attributes.Usage ;
import org.gradle.api.attributes.Usage ;
import org.gradle.api.component.AdhocComponentWithVariants ;
import org.gradle.api.component.SoftwareComponent ;
import org.gradle.api.file.CopySpec ;
import org.gradle.api.file.CopySpec ;
import org.gradle.api.file.DirectoryProperty ;
import org.gradle.api.file.DirectoryProperty ;
import org.gradle.api.file.FileCollection ;
import org.gradle.api.file.FileCollection ;
@ -65,6 +67,7 @@ import org.gradle.api.plugins.JavaPluginExtension;
import org.gradle.api.publish.PublishingExtension ;
import org.gradle.api.publish.PublishingExtension ;
import org.gradle.api.publish.maven.MavenPublication ;
import org.gradle.api.publish.maven.MavenPublication ;
import org.gradle.api.publish.maven.plugins.MavenPublishPlugin ;
import org.gradle.api.publish.maven.plugins.MavenPublishPlugin ;
import org.gradle.api.publish.tasks.GenerateModuleMetadata ;
import org.gradle.api.tasks.Classpath ;
import org.gradle.api.tasks.Classpath ;
import org.gradle.api.tasks.InputFiles ;
import org.gradle.api.tasks.InputFiles ;
import org.gradle.api.tasks.JavaExec ;
import org.gradle.api.tasks.JavaExec ;
@ -82,11 +85,14 @@ import org.gradle.api.tasks.bundling.Jar;
import org.gradle.api.tasks.javadoc.Javadoc ;
import org.gradle.api.tasks.javadoc.Javadoc ;
import org.gradle.external.javadoc.StandardJavadocDocletOptions ;
import org.gradle.external.javadoc.StandardJavadocDocletOptions ;
import org.w3c.dom.Document ;
import org.w3c.dom.Document ;
import org.w3c.dom.Element ;
import org.w3c.dom.Node ;
import org.w3c.dom.Node ;
import org.w3c.dom.NodeList ;
import org.xml.sax.SAXException ;
import org.xml.sax.SAXException ;
import org.springframework.boot.build.DeployedPlugin ;
import org.springframework.boot.build.DeployedPlugin ;
import org.springframework.boot.build.MavenRepositoryPlugin ;
import org.springframework.boot.build.MavenRepositoryPlugin ;
import org.springframework.boot.build.optional.OptionalDependenciesPlugin ;
import org.springframework.boot.build.test.DockerTestPlugin ;
import org.springframework.boot.build.test.DockerTestPlugin ;
import org.springframework.boot.build.test.IntegrationTestPlugin ;
import org.springframework.boot.build.test.IntegrationTestPlugin ;
import org.springframework.core.CollectionFactory ;
import org.springframework.core.CollectionFactory ;
@ -116,6 +122,33 @@ public class MavenPluginPlugin implements Plugin<Project> {
addDocumentPluginGoalsTask ( project , generatePluginDescriptorTask ) ;
addDocumentPluginGoalsTask ( project , generatePluginDescriptorTask ) ;
addPrepareMavenBinariesTask ( project ) ;
addPrepareMavenBinariesTask ( project ) ;
addExtractVersionPropertiesTask ( project ) ;
addExtractVersionPropertiesTask ( project ) ;
publishOptionalDependenciesInPom ( project ) ;
project . getTasks ( ) . withType ( GenerateModuleMetadata . class ) . configureEach ( ( task ) - > task . setEnabled ( false ) ) ;
}
private void publishOptionalDependenciesInPom ( Project project ) {
project . getPlugins ( ) . withType ( OptionalDependenciesPlugin . class , ( optionalDependencies ) - > {
SoftwareComponent component = project . getComponents ( ) . findByName ( "java" ) ;
if ( component instanceof AdhocComponentWithVariants componentWithVariants ) {
componentWithVariants . addVariantsFromConfiguration (
project . getConfigurations ( ) . getByName ( OptionalDependenciesPlugin . OPTIONAL_CONFIGURATION_NAME ) ,
( variant ) - > variant . mapToOptional ( ) ) ;
}
} ) ;
MavenPublication publication = ( MavenPublication ) project . getExtensions ( )
. getByType ( PublishingExtension . class )
. getPublications ( )
. getByName ( "maven" ) ;
publication . getPom ( ) . withXml ( ( xml ) - > {
Element root = xml . asElement ( ) ;
NodeList children = root . getChildNodes ( ) ;
for ( int i = 0 ; i < children . getLength ( ) ; i + + ) {
Node child = children . item ( i ) ;
if ( "dependencyManagement" . equals ( child . getNodeName ( ) ) ) {
root . removeChild ( child ) ;
}
}
} ) ;
}
}
private void configurePomPackaging ( Project project ) {
private void configurePomPackaging ( Project project ) {