Skip to content

Commit 451598a

Browse files
authored
Gradle Plugin - New "ALL_PUBLICATIONS" parameter
Following the discussion in #407, the _publications_ method now accepts a new parameter, "ALL_PUBLICATIONS", that will trigger the usage of all publications configured in the build script. The parameter can currently be passed in a `build.gradle` file and used by the Artifactory Plugin directly, or be passed to the _publications_ API in Jenkins. Other CI integrations will be supported in the future, after the _publications_ API will be implemented on their end.
1 parent 497dd21 commit 451598a

File tree

2 files changed

+41
-16
lines changed

2 files changed

+41
-16
lines changed

Diff for: build-info-extractor-gradle/src/main/groovy/org/jfrog/gradle/plugin/artifactory/extractor/listener/ProjectsEvaluatedBuildListener.groovy

+18-2
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import org.gradle.api.artifacts.repositories.IvyArtifactRepository
1111
import org.gradle.api.component.SoftwareComponent
1212
import org.gradle.api.invocation.Gradle
1313
import org.gradle.api.publish.Publication
14+
import org.gradle.api.publish.PublicationContainer
1415
import org.gradle.api.publish.PublishingExtension
1516
import org.gradle.api.publish.ivy.IvyPublication
1617
import org.gradle.api.publish.ivy.plugins.IvyPublishPlugin
@@ -131,8 +132,23 @@ public class ProjectsEvaluatedBuildListener extends BuildAdapter implements Proj
131132
* @param publicationsNames - Publications names separated by commas
132133
*/
133134
private static void addPublications(ArtifactoryTask artifactoryTask, PublishingExtension publishingExtension, String publicationsNames) {
134-
for (publicationName in publicationsNames.split(",")) {
135-
Publication publication = publishingExtension.getPublications().findByName(publicationName);
135+
if (StringUtils.isEmpty(publicationsNames)) {
136+
return
137+
}
138+
139+
PublicationContainer container = publishingExtension.getPublications()
140+
Collection<String> ciPublications = publicationsNames.split(",")
141+
142+
// If ALL_PUBLICATIONS parameter was provided, add all publications and return.
143+
if (ciPublications.contains(TaskHelperPublications.ALL_PUBLICATIONS)) {
144+
for (publication in container) {
145+
artifactoryTask.publications(publication)
146+
}
147+
return
148+
}
149+
// Add specified publications.
150+
for (publicationName in ciPublications) {
151+
Publication publication = container.findByName(publicationName);
136152
artifactoryTask.publications(publication)
137153
}
138154
}

Diff for: build-info-extractor-gradle/src/main/groovy/org/jfrog/gradle/plugin/artifactory/task/helper/TaskHelperPublications.java

+23-14
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.gradle.api.logging.Logging;
2525
import org.gradle.api.publish.Publication;
2626
import org.gradle.api.publish.PublicationArtifact;
27+
import org.gradle.api.publish.PublicationContainer;
2728
import org.gradle.api.publish.PublishingExtension;
2829
import org.gradle.api.publish.internal.PublicationInternal;
2930
import org.gradle.api.publish.ivy.IvyArtifact;
@@ -46,7 +47,6 @@
4647

4748
import javax.xml.namespace.QName;
4849
import java.io.File;
49-
import java.io.IOException;
5050
import java.lang.reflect.Method;
5151
import java.util.*;
5252
import java.util.concurrent.Callable;
@@ -56,12 +56,13 @@
5656
* @author Fred Simon
5757
*/
5858
public class TaskHelperPublications extends TaskHelper {
59-
private static final Logger log = Logging.getLogger(TaskHelperPublications.class);
6059
public static final String MAVEN_JAVA = "mavenJava";
6160
public static final String IVY_JAVA = "ivyJava";
62-
private Set<IvyPublication> ivyPublications = new HashSet<>();
63-
private Set<MavenPublication> mavenPublications = new HashSet<>();
64-
private Set<Object> publications = new HashSet<>();
61+
public static final String ALL_PUBLICATIONS = "ALL_PUBLICATIONS";
62+
private static final Logger log = Logging.getLogger(TaskHelperPublications.class);
63+
private final Set<IvyPublication> ivyPublications;
64+
private final Set<MavenPublication> mavenPublications;
65+
private final Set<Object> publications = new HashSet<>();
6566
private boolean publishPublicationsSpecified;
6667

6768
public TaskHelperPublications(ArtifactoryTask artifactoryTask) {
@@ -71,30 +72,38 @@ public TaskHelperPublications(ArtifactoryTask artifactoryTask) {
7172
}
7273

7374
public void publications() {
74-
if (publications == null || publications.size() == 0) {
75+
if (publications.size() == 0) {
7576
return;
7677
}
7778
for (Object publication : publications) {
7879
if (publication instanceof CharSequence) {
79-
Publication publicationObj = getProject().getExtensions()
80+
PublicationContainer container = getProject().getExtensions()
8081
.getByType(PublishingExtension.class)
81-
.getPublications().findByName(publication.toString());
82-
83-
if (publicationObj != null) {
84-
addPublication(publicationObj);
82+
.getPublications();
83+
if (publication.toString().equals(ALL_PUBLICATIONS)) {
84+
addAllPublications(container);
8585
} else {
86-
logPublicationNotFound(publication);
86+
Publication publicationObj = container.findByName(publication.toString());
87+
if (publicationObj != null) {
88+
addPublication(publicationObj);
89+
} else {
90+
logPublicationNotFound(publication);
91+
}
8792
}
8893
} else if (publication instanceof Publication) {
8994
addPublication((Publication) publication);
9095
} else {
9196
log.error("Publication type '{}' not supported in task '{}'.",
92-
new Object[]{publication.getClass().getName(), getPath()});
97+
publication.getClass().getName(), getPath());
9398
}
9499
}
95100
publishPublicationsSpecified = true;
96101
}
97102

103+
private void addAllPublications(PublicationContainer container) {
104+
container.forEach(this::addPublication);
105+
}
106+
98107
public void addCollection(Object... publications) {
99108
Collections.addAll(this.publications, publications);
100109
}
@@ -167,7 +176,7 @@ private void dependOn(Publication publication) {
167176
publicationInternal.allPublishableArtifacts(this::dependsOn);
168177
}
169178

170-
public void collectDescriptorsAndArtifactsForUpload() throws IOException {
179+
public void collectDescriptorsAndArtifactsForUpload() {
171180
Set<GradleDeployDetails> deployDetailsFromProject = getArtifactDeployDetails();
172181
artifactoryTask.deployDetails.addAll(deployDetailsFromProject);
173182
}

0 commit comments

Comments
 (0)