Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Publication of all artifacts for Ivy and Maven #265

Merged
merged 4 commits into from
Oct 28, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ The build information is sent to Artifactory in json format.
## Building and Testing the Sources

The code is built using Gradle and includes integration tests.<br/>
It must run using JDK 8 and Gradle 4.6. If you are using different gradle version you can use the provided gradle wrapper.<br/>
It must run using JDK 8 and Gradle 5.6.2. If you are using different gradle version you can use the provided gradle wrapper.<br/>
In order to run tests the following environment variable must be provide:
```
export BITESTS_ARTIFACTORY_URL='http://localhost:8081/artifactory'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import org.gradle.api.publish.Publication;
import org.gradle.api.publish.PublicationArtifact;
import org.gradle.api.publish.PublishingExtension;
import org.gradle.api.publish.internal.PublicationArtifactSet;
import org.gradle.api.publish.internal.PublicationInternal;
import org.gradle.api.publish.ivy.IvyArtifact;
import org.gradle.api.publish.ivy.IvyArtifactSet;
Expand All @@ -35,7 +36,6 @@
import org.gradle.api.publish.ivy.internal.publisher.IvyNormalizedPublication;
import org.gradle.api.publish.ivy.internal.publisher.IvyPublicationIdentity;
import org.gradle.api.publish.maven.MavenArtifact;
import org.gradle.api.publish.maven.MavenArtifactSet;
import org.gradle.api.publish.maven.MavenPublication;
import org.gradle.api.publish.maven.internal.publication.MavenPublicationInternal;
import org.gradle.api.publish.maven.internal.publisher.MavenNormalizedPublication;
Expand Down Expand Up @@ -202,19 +202,22 @@ public Set<GradleDeployDetails> getArtifactDeployDetails() {
Map<QName, String> extraInfo = ivyPublication.getDescriptor().getExtraInfo().asMap();

// First adding the Ivy descriptor (if the build is configured to add it):
File ivyFile = getIvyDescriptorFile(ivyNormalizedPublication);
if (isPublishIvy()) {
File file = getIvyDescriptorFile(ivyNormalizedPublication);
DeployDetails.Builder builder = createBuilder(file, publicationName);
DeployDetails.Builder builder = createBuilder(ivyFile, publicationName);
if (builder != null) {
PublishArtifactInfo artifactInfo = new PublishArtifactInfo(
projectIdentity.getModule(), "xml", "ivy", null, extraInfo, file);
projectIdentity.getModule(), "xml", "ivy", null, extraInfo, ivyFile);
addIvyArtifactToDeployDetails(deployDetails, publicationName, projectIdentity, builder, artifactInfo);
}
}

IvyArtifactSet artifacts = ivyPublication.getArtifacts();
// Second adding all artifacts, skipping the ivy file
PublicationArtifactSet<IvyArtifact> artifacts = ivyPublicationInternal.getPublishableArtifacts();
for (IvyArtifact artifact : artifacts) {
File file = artifact.getFile();
// Skip the ivy file
if (file.equals(ivyFile)) continue;
DeployDetails.Builder builder = createBuilder(file, publicationName);
if (builder == null) continue;
PublishArtifactInfo artifactInfo = new PublishArtifactInfo(
Expand Down Expand Up @@ -245,22 +248,31 @@ public Set<GradleDeployDetails> getArtifactDeployDetails() {
addMavenArtifactToDeployDetails(deployDetails, publicationName, builder, artifactInfo, mavenPublication);
}
}
// Second adding the main artifact of the publication, if present
if (mavenNormalizedPublication.getMainArtifact() != null) {
createPublishArtifactInfoAndAddToDeployDetails(mavenNormalizedPublication.getMainArtifact(), deployDetails, mavenPublication, publicationName);
}

MavenArtifactSet artifacts = mavenPublication.getArtifacts();
// Third adding all additional artifacts - includes Gradle Module Metadata when produced
Set<MavenArtifact> artifacts = mavenNormalizedPublication.getAdditionalArtifacts();
for (MavenArtifact artifact : artifacts) {
File file = artifact.getFile();
DeployDetails.Builder builder = createBuilder(file, publicationName);
if (builder == null) continue;
PublishArtifactInfo artifactInfo = new PublishArtifactInfo(
mavenPublication.getArtifactId(), artifact.getExtension(),
artifact.getExtension(), artifact.getClassifier(),
file);
addMavenArtifactToDeployDetails(deployDetails, publicationName, builder, artifactInfo, mavenPublication);
createPublishArtifactInfoAndAddToDeployDetails(artifact, deployDetails, mavenPublication, publicationName);
}
}
return deployDetails;
}

private void createPublishArtifactInfoAndAddToDeployDetails(MavenArtifact artifact, Set<GradleDeployDetails> deployDetails, MavenPublication mavenPublication, String publicationName) {
File file = artifact.getFile();
DeployDetails.Builder builder = createBuilder(file, publicationName);
if (builder == null) return;
PublishArtifactInfo artifactInfo = new PublishArtifactInfo(
mavenPublication.getArtifactId(), artifact.getExtension(),
artifact.getExtension(), artifact.getClassifier(),
file);
addMavenArtifactToDeployDetails(deployDetails, publicationName, builder, artifactInfo, mavenPublication);
}

private File getIvyDescriptorFile(IvyNormalizedPublication ivy) {
try {
return ivy.getIvyDescriptorFile();
Expand Down