|
27 | 27 | import org.gradle.api.publish.Publication;
|
28 | 28 | import org.gradle.api.publish.PublicationArtifact;
|
29 | 29 | import org.gradle.api.publish.PublishingExtension;
|
| 30 | +import org.gradle.api.publish.internal.PublicationArtifactSet; |
30 | 31 | import org.gradle.api.publish.internal.PublicationInternal;
|
31 | 32 | import org.gradle.api.publish.ivy.IvyArtifact;
|
32 | 33 | import org.gradle.api.publish.ivy.IvyArtifactSet;
|
|
35 | 36 | import org.gradle.api.publish.ivy.internal.publisher.IvyNormalizedPublication;
|
36 | 37 | import org.gradle.api.publish.ivy.internal.publisher.IvyPublicationIdentity;
|
37 | 38 | import org.gradle.api.publish.maven.MavenArtifact;
|
38 |
| -import org.gradle.api.publish.maven.MavenArtifactSet; |
39 | 39 | import org.gradle.api.publish.maven.MavenPublication;
|
40 | 40 | import org.gradle.api.publish.maven.internal.publication.MavenPublicationInternal;
|
41 | 41 | import org.gradle.api.publish.maven.internal.publisher.MavenNormalizedPublication;
|
@@ -202,19 +202,22 @@ public Set<GradleDeployDetails> getArtifactDeployDetails() {
|
202 | 202 | Map<QName, String> extraInfo = ivyPublication.getDescriptor().getExtraInfo().asMap();
|
203 | 203 |
|
204 | 204 | // First adding the Ivy descriptor (if the build is configured to add it):
|
| 205 | + File ivyFile = getIvyDescriptorFile(ivyNormalizedPublication); |
205 | 206 | if (isPublishIvy()) {
|
206 |
| - File file = getIvyDescriptorFile(ivyNormalizedPublication); |
207 |
| - DeployDetails.Builder builder = createBuilder(file, publicationName); |
| 207 | + DeployDetails.Builder builder = createBuilder(ivyFile, publicationName); |
208 | 208 | if (builder != null) {
|
209 | 209 | PublishArtifactInfo artifactInfo = new PublishArtifactInfo(
|
210 |
| - projectIdentity.getModule(), "xml", "ivy", null, extraInfo, file); |
| 210 | + projectIdentity.getModule(), "xml", "ivy", null, extraInfo, ivyFile); |
211 | 211 | addIvyArtifactToDeployDetails(deployDetails, publicationName, projectIdentity, builder, artifactInfo);
|
212 | 212 | }
|
213 | 213 | }
|
214 | 214 |
|
215 |
| - IvyArtifactSet artifacts = ivyPublication.getArtifacts(); |
| 215 | + // Second adding all artifacts, skipping the ivy file |
| 216 | + PublicationArtifactSet<IvyArtifact> artifacts = ivyPublicationInternal.getPublishableArtifacts(); |
216 | 217 | for (IvyArtifact artifact : artifacts) {
|
217 | 218 | File file = artifact.getFile();
|
| 219 | + // Skip the ivy file |
| 220 | + if (file.equals(ivyFile)) continue; |
218 | 221 | DeployDetails.Builder builder = createBuilder(file, publicationName);
|
219 | 222 | if (builder == null) continue;
|
220 | 223 | PublishArtifactInfo artifactInfo = new PublishArtifactInfo(
|
@@ -245,22 +248,31 @@ public Set<GradleDeployDetails> getArtifactDeployDetails() {
|
245 | 248 | addMavenArtifactToDeployDetails(deployDetails, publicationName, builder, artifactInfo, mavenPublication);
|
246 | 249 | }
|
247 | 250 | }
|
| 251 | + // Second adding the main artifact of the publication, if present |
| 252 | + if (mavenNormalizedPublication.getMainArtifact() != null) { |
| 253 | + createPublishArtifactInfoAndAddToDeployDetails(mavenNormalizedPublication.getMainArtifact(), deployDetails, mavenPublication, publicationName); |
| 254 | + } |
248 | 255 |
|
249 |
| - MavenArtifactSet artifacts = mavenPublication.getArtifacts(); |
| 256 | + // Third adding all additional artifacts - includes Gradle Module Metadata when produced |
| 257 | + Set<MavenArtifact> artifacts = mavenNormalizedPublication.getAdditionalArtifacts(); |
250 | 258 | for (MavenArtifact artifact : artifacts) {
|
251 |
| - File file = artifact.getFile(); |
252 |
| - DeployDetails.Builder builder = createBuilder(file, publicationName); |
253 |
| - if (builder == null) continue; |
254 |
| - PublishArtifactInfo artifactInfo = new PublishArtifactInfo( |
255 |
| - mavenPublication.getArtifactId(), artifact.getExtension(), |
256 |
| - artifact.getExtension(), artifact.getClassifier(), |
257 |
| - file); |
258 |
| - addMavenArtifactToDeployDetails(deployDetails, publicationName, builder, artifactInfo, mavenPublication); |
| 259 | + createPublishArtifactInfoAndAddToDeployDetails(artifact, deployDetails, mavenPublication, publicationName); |
259 | 260 | }
|
260 | 261 | }
|
261 | 262 | return deployDetails;
|
262 | 263 | }
|
263 | 264 |
|
| 265 | + private void createPublishArtifactInfoAndAddToDeployDetails(MavenArtifact artifact, Set<GradleDeployDetails> deployDetails, MavenPublication mavenPublication, String publicationName) { |
| 266 | + File file = artifact.getFile(); |
| 267 | + DeployDetails.Builder builder = createBuilder(file, publicationName); |
| 268 | + if (builder == null) return; |
| 269 | + PublishArtifactInfo artifactInfo = new PublishArtifactInfo( |
| 270 | + mavenPublication.getArtifactId(), artifact.getExtension(), |
| 271 | + artifact.getExtension(), artifact.getClassifier(), |
| 272 | + file); |
| 273 | + addMavenArtifactToDeployDetails(deployDetails, publicationName, builder, artifactInfo, mavenPublication); |
| 274 | + } |
| 275 | + |
264 | 276 | private File getIvyDescriptorFile(IvyNormalizedPublication ivy) {
|
265 | 277 | try {
|
266 | 278 | return ivy.getIvyDescriptorFile();
|
|
0 commit comments