/**
* Create the default Maven publication
*
* @param publishingExtension Publishing extension where the publication is created
* @param projectContext Project context to access project information
* @param projectConfig Project configuration
* @param mavenConfig Maven configuration
* @param configurations Container to access configurations
* @param services Service manager to obtain service objects
*/
@Mutate
public void createPublications(PublishingExtension publishingExtension, ProjectContext projectContext,
ProjectConfig projectConfig, MavenConfig mavenConfig, ConfigurationContainer configurations,
ServiceRegistry services) {
SoftwareComponentContainer components = services.get(SoftwareComponentContainer.class);
JavaLibrary javaComponent = components.withType(JavaLibrary.class).getByName("java");
for (MavenPublicationConfig publicationConfig : mavenConfig.getPublications()) {
Configuration configuration = configurations
.getByName(publicationConfig.getArchivesConfiguration());
publishingExtension.getPublications().create(publicationConfig.getName(), MavenPublication.class,
p -> {
p.setArtifactId(publicationConfig.getArtifactId());
List runtimeConfigurations = publicationConfig
.getRuntimeConfigurations().stream().map(c -> configurations.getByName(c))
.collect(Collectors.toList());
List compileConfigurations = publicationConfig
.getCompileConfigurations().stream().map(c -> configurations.getByName(c))
.collect(Collectors.toList());
List artifacts = Collections.emptyList();
if (publicationConfig.isAddProjectArtifacts()) {
artifacts = javaComponent.getUsages().stream()
.flatMap(u -> u.getArtifacts().stream()).collect(Collectors.toList());
}
PomConfigurator configurator = new PomConfigurator(projectContext, projectConfig,
Validate.notNull(runtimeConfigurations),
Validate.notNull(compileConfigurations));
p.pom(pom -> pom.withXml(xml -> configurator.configurePom(Validate.notNull(xml))));
for (PublishArtifact a : configuration.getArtifacts()) {
p.artifact(a);
}
});
}
}