use of org.gradle.api.publish.maven.MavenDependency in project gradle by gradle.
the class DefaultMavenPublication method populateFromComponent.
private void populateFromComponent() {
if (populated) {
return;
}
populated = true;
if (component == null) {
return;
}
MavenPublicationErrorChecker.checkForUnpublishableAttributes(component, documentationRegistry);
PublicationWarningsCollector publicationWarningsCollector = new PublicationWarningsCollector(LOG, UNSUPPORTED_FEATURE, INCOMPATIBLE_FEATURE, PUBLICATION_WARNING_FOOTER, "suppressPomMetadataWarningsFor");
Set<ArtifactKey> seenArtifacts = Sets.newHashSet();
Set<PublishedDependency> seenDependencies = Sets.newHashSet();
Set<DependencyConstraint> seenConstraints = Sets.newHashSet();
for (UsageContext usageContext : getSortedUsageContexts()) {
// TODO Need a smarter way to map usage to artifact classifier
for (PublishArtifact publishArtifact : usageContext.getArtifacts()) {
ArtifactKey key = new ArtifactKey(publishArtifact.getFile(), publishArtifact.getClassifier(), publishArtifact.getExtension());
if (!artifactsOverridden && seenArtifacts.add(key)) {
artifact(publishArtifact);
}
}
Set<ExcludeRule> globalExcludes = usageContext.getGlobalExcludes();
publicationWarningsCollector.newContext(usageContext.getName());
Set<MavenDependencyInternal> dependencies = dependenciesFor(usageContext);
for (ModuleDependency dependency : usageContext.getDependencies()) {
if (seenDependencies.add(PublishedDependency.of(dependency))) {
if (isDependencyWithDefaultArtifact(dependency) && dependencyMatchesProject(dependency)) {
// We skip all self referencing dependency declarations, unless they have custom artifact information
continue;
}
if (platformSupport.isTargetingPlatform(dependency)) {
if (dependency instanceof ProjectDependency) {
addImportDependencyConstraint((ProjectDependency) dependency);
} else {
if (!versionMappingInUse && isVersionMavenIncompatible(dependency.getVersion())) {
publicationWarningsCollector.addIncompatible(String.format("%s:%s:%s declared with a Maven incompatible version notation", dependency.getGroup(), dependency.getName(), dependency.getVersion()));
}
addImportDependencyConstraint(dependency);
}
} else {
if (!dependency.getAttributes().isEmpty()) {
publicationWarningsCollector.addUnsupported(String.format("%s:%s:%s declared with Gradle attributes", dependency.getGroup(), dependency.getName(), dependency.getVersion()));
}
if (dependency instanceof ProjectDependency) {
addProjectDependency((ProjectDependency) dependency, globalExcludes, dependencies);
} else {
if (!versionMappingInUse && isVersionMavenIncompatible(dependency.getVersion())) {
publicationWarningsCollector.addIncompatible(String.format("%s:%s:%s declared with a Maven incompatible version notation", dependency.getGroup(), dependency.getName(), dependency.getVersion()));
}
addModuleDependency(dependency, globalExcludes, dependencies);
}
}
}
}
Set<MavenDependency> dependencyConstraints = dependencyConstraintsFor(usageContext);
for (DependencyConstraint dependency : usageContext.getDependencyConstraints()) {
if (seenConstraints.add(dependency)) {
if (dependency instanceof DefaultProjectDependencyConstraint) {
addDependencyConstraint((DefaultProjectDependencyConstraint) dependency, dependencyConstraints);
} else if (dependency.getVersion() != null) {
if (!versionMappingInUse && isVersionMavenIncompatible(dependency.getVersion())) {
publicationWarningsCollector.addIncompatible(String.format("constraint %s:%s:%s declared with a Maven incompatible version notation", dependency.getGroup(), dependency.getName(), dependency.getVersion()));
}
addDependencyConstraint(dependency, dependencyConstraints);
}
}
}
if (!usageContext.getCapabilities().isEmpty()) {
for (Capability capability : usageContext.getCapabilities()) {
if (isNotDefaultCapability(capability)) {
publicationWarningsCollector.addVariantUnsupported(String.format("Declares capability %s:%s:%s which cannot be mapped to Maven", capability.getGroup(), capability.getName(), capability.getVersion()));
}
}
}
}
if (!silenceAllPublicationWarnings) {
publicationWarningsCollector.complete(getDisplayName() + " pom metadata", silencedVariants);
}
}
use of org.gradle.api.publish.maven.MavenDependency in project gradle by gradle.
the class GenerateMavenPom method computeMavenPomSpec.
private MavenPomFileGenerator.MavenPomSpec computeMavenPomSpec() {
MavenPomInternal pomInternal = (MavenPomInternal) getPom();
MavenPomFileGenerator pomGenerator = new MavenPomFileGenerator(pomInternal.getProjectIdentity(), getVersionRangeMapper(), pomInternal.getVersionMappingStrategy(), compileScopeAttributes.get(), runtimeScopeAttributes.get(), pomInternal.writeGradleMetadataMarker());
pomGenerator.configureFrom(pomInternal);
for (MavenDependency mavenDependency : pomInternal.getApiDependencyManagement()) {
pomGenerator.addApiDependencyManagement(mavenDependency);
}
for (MavenDependency mavenDependency : pomInternal.getRuntimeDependencyManagement()) {
pomGenerator.addRuntimeDependencyManagement(mavenDependency);
}
for (MavenDependency mavenDependency : pomInternal.getImportDependencyManagement()) {
pomGenerator.addImportDependencyManagement(mavenDependency);
}
for (MavenDependencyInternal runtimeDependency : pomInternal.getApiDependencies()) {
pomGenerator.addApiDependency(runtimeDependency);
}
for (MavenDependencyInternal runtimeDependency : pomInternal.getRuntimeDependencies()) {
pomGenerator.addRuntimeDependency(runtimeDependency);
}
for (MavenDependencyInternal optionalDependency : pomInternal.getOptionalDependencies()) {
pomGenerator.addOptionalDependency(optionalDependency);
}
pomGenerator.withXml(pomInternal.getXmlAction());
return pomGenerator.toSpec();
}
use of org.gradle.api.publish.maven.MavenDependency in project gradle by gradle.
the class MavenPomFileGenerator method addDependencyManagement.
private void addDependencyManagement(MavenDependencyInternal dependency, String scope) {
Dependency mavenDependency = new Dependency();
String groupId = dependency.getGroupId();
String artifactId = dependency.getArtifactId();
String projectPath = dependency.getProjectPath();
ImmutableAttributes attributes = attributesForScope(scope);
ModuleVersionIdentifier resolvedVersion = versionMappingStrategy.findStrategyForVariant(attributes).maybeResolveVersion(groupId, artifactId, projectPath);
mavenDependency.setGroupId(resolvedVersion != null ? resolvedVersion.getGroup() : groupId);
mavenDependency.setArtifactId(resolvedVersion != null ? resolvedVersion.getName() : artifactId);
mavenDependency.setVersion(resolvedVersion == null ? mapToMavenSyntax(dependency.getVersion()) : resolvedVersion.getVersion());
String type = dependency.getType();
if (type != null) {
mavenDependency.setType(type);
}
// Only publish the import scope, others have too different meanings than what Gradle expresses
if ("import".equals(scope)) {
mavenDependency.setScope(scope);
}
DependencyManagement dependencyManagement = model.getDependencyManagement();
if (dependencyManagement == null) {
dependencyManagement = new DependencyManagement();
model.setDependencyManagement(dependencyManagement);
}
dependencyManagement.addDependency(mavenDependency);
}
Aggregations