Skip to content

Commit d60eafe

Browse files
Added custom plugin
Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com> Added custom plugin Signed-off-by: pgodithi <pgodithi@amazon.com>
1 parent 9bd69a7 commit d60eafe

6 files changed

Lines changed: 161 additions & 15 deletions

File tree

buildSrc/src/main/java/org/opensearch/gradle/PublishPlugin.java

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -120,23 +120,25 @@ public String call() throws Exception {
120120
});
121121
});
122122
});
123-
124123
publishing.getPublications().withType(MavenPublication.class, publication -> {
125-
// Add git origin info to generated POM files
126-
publication.getPom().withXml(PublishPlugin::addScmInfo);
127-
128-
// have to defer this until archivesBaseName is set
129-
project.afterEvaluate(p -> publication.setArtifactId(getArchivesBaseName(project)));
130-
131-
// publish sources and javadoc for Java projects.
132-
if (project.getPluginManager().hasPlugin("opensearch.java")) {
133-
publication.artifact(project.getTasks().getByName("sourcesJar"));
134-
publication.artifact(project.getTasks().getByName("javadocJar"));
124+
String search = "zip";
125+
if (!publication.getName().toLowerCase().contains(search.toLowerCase())) {
126+
System.out.println("The Publication: " + publication.getName());
127+
// Add git origin info to generated POM files
128+
publication.getPom().withXml(PublishPlugin::addScmInfo);
129+
130+
// have to defer this until archivesBaseName is set
131+
project.afterEvaluate(p -> publication.setArtifactId(getArchivesBaseName(project)));
132+
133+
// publish sources and javadoc for Java projects.
134+
if (project.getPluginManager().hasPlugin("opensearch.java")) {
135+
publication.artifact(project.getTasks().getByName("sourcesJar"));
136+
publication.artifact(project.getTasks().getByName("javadocJar"));
137+
generatePomTask.configure( t -> {
138+
t.dependsOn(String.format("generatePomFileFor%sPublication", Util.capitalize(publication.getName())));
139+
});
140+
}
135141
}
136-
137-
generatePomTask.configure(
138-
t -> t.dependsOn(String.format("generatePomFileFor%sPublication", Util.capitalize(publication.getName())))
139-
);
140142
});
141143

142144
}
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
package org.opensearch.gradle.zipplugin;
2+
3+
import java.util.*;
4+
import org.gradle.api.Plugin;
5+
import org.gradle.api.Project;
6+
import org.gradle.api.provider.Property;
7+
import org.gradle.api.publish.PublishingExtension;
8+
import org.gradle.api.publish.maven.MavenPublication;
9+
import org.gradle.api.publish.maven.plugins.MavenPublishPlugin;
10+
import org.gradle.api.file.DirectoryProperty;
11+
import org.gradle.api.provider.Provider;
12+
import java.nio.file.Path;
13+
import org.opensearch.gradle.zipplugin.ZipPublishExtension;
14+
import org.gradle.api.tasks.TaskAction;
15+
import org.gradle.api.Task;
16+
import org.opensearch.gradle.zipplugin.ZipPublishUtil;
17+
18+
19+
public class ZipPublish implements Plugin<Project> {
20+
private Project project;
21+
22+
static final String EXTENSION_NAME = "zipmavensettings";
23+
public final static String PUBLICATION_NAME = "mavenzip";
24+
public final static String STAGING_REPO = "zipstaging";
25+
public final static String MAVEN_ZIP_PUBLISH_TASK = "publish" + ZipPublishUtil.capitalize(PUBLICATION_NAME) + "PublicationTo" + ZipPublishUtil.capitalize(STAGING_REPO) + "Repository";
26+
public final static String MAVEN_ZIP_PUBLISH_POM_TASK = "generatePomFileFor" + ZipPublishUtil.capitalize(PUBLICATION_NAME) + "Publication";
27+
public final static String LOCALMAVEN = "publishToMavenLocal";
28+
29+
private void configMaven() {
30+
final Path buildDirectory = this.project.getRootDir().toPath();
31+
this.project.getPluginManager().apply(MavenPublishPlugin.class);
32+
this.project.getExtensions().configure(PublishingExtension.class, publishing -> {
33+
publishing.repositories(repositories -> {
34+
repositories.maven(maven -> {
35+
maven.setName(STAGING_REPO);
36+
maven.setUrl(buildDirectory.toString() + "/build/local-staging-repo");
37+
});
38+
});
39+
System.out.println("Starting " + MAVEN_ZIP_PUBLISH_TASK + " task");
40+
publishing.publications(publications -> {
41+
publications.create(PUBLICATION_NAME, MavenPublication.class, mavenZip -> {
42+
ZipPublishExtension extset = this.project.getExtensions().findByType(ZipPublishExtension.class);
43+
//Getting the Zip group from created extension
44+
String zipGroup = extset.getZipgroup();
45+
String zipArtifact = getProperty("zipArtifact");
46+
//Getting the Zip version from gradle property with/without added snapshot and qualifier
47+
String zipVersion = getProperty("zipVersion");
48+
String version = "";
49+
String extra = "";
50+
if (zipVersion != null){
51+
StringTokenizer st = new StringTokenizer(zipVersion);
52+
version = st.nextToken("-") + ".0";
53+
try {
54+
extra = zipVersion.substring(zipVersion.indexOf("-"));
55+
} catch (Exception e) {
56+
System.out.println("");
57+
}
58+
};
59+
String finalZipVersion = version + extra;
60+
String zipFilePath = "/build/distributions/" + zipArtifact + "-" + finalZipVersion + ".zip";
61+
//-PzipFilePath=/build/distributions/opensearch-job-scheduler-2.0.0.0-alpha1-SNAPSHOT.zip
62+
mavenZip.artifact(buildDirectory.toString() + zipFilePath);
63+
mavenZip.setGroupId(zipGroup);
64+
mavenZip.setArtifactId(zipArtifact);
65+
mavenZip.setVersion(finalZipVersion);
66+
});
67+
});
68+
});
69+
}
70+
private String getProperty(String name) {
71+
if (this.project.hasProperty(name)) {
72+
Object property = this.project.property(name);
73+
if (property != null) {
74+
return property.toString();
75+
}
76+
}
77+
return null;
78+
}
79+
80+
@Override
81+
public void apply(Project project) {
82+
final Path buildDirectory = project.getRootDir().toPath();
83+
this.project = project;
84+
project.getExtensions().create(EXTENSION_NAME, ZipPublishExtension.class);
85+
configMaven();
86+
Task compileJava = project.getTasks().findByName("compileJava");
87+
if(compileJava != null) {
88+
compileJava.setEnabled(false);
89+
}
90+
Task sourceJarTask = project.getTasks().findByName("sourcesJar");
91+
if(sourceJarTask != null) {
92+
sourceJarTask.setEnabled(false);
93+
}
94+
Task javaDocJarTask = project.getTasks().findByName("javadocJar");
95+
if(javaDocJarTask != null) {
96+
javaDocJarTask.setEnabled(false);
97+
}
98+
project.getGradle().getTaskGraph().whenReady(graph -> {
99+
if (graph.hasTask(LOCALMAVEN)){
100+
project.getTasks().getByName(MAVEN_ZIP_PUBLISH_POM_TASK).setEnabled(false);
101+
}
102+
103+
});
104+
}
105+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package org.opensearch.gradle.zipplugin;
2+
3+
public class ZipPublishExtension {
4+
5+
private String zipGroup = "org.opensearch.plugin";
6+
7+
public void setZipgroup(String zipGroup){
8+
this.zipGroup=zipGroup;
9+
}
10+
public String getZipgroup(){
11+
return zipGroup;
12+
}
13+
14+
}
15+
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package org.opensearch.gradle.zipplugin;
2+
3+
class ZipPublishUtil {
4+
5+
static String capitalize(String str) {
6+
return str.substring(0, 1).toUpperCase() + str.substring(1);
7+
}
8+
9+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
implementation-class=org.opensearch.gradle.zipplugin.ZipPublish
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package org.opensearch.gradle.zipplugin;
2+
3+
import org.gradle.testfixtures.ProjectBuilder
4+
import org.gradle.api.Project
5+
6+
7+
class ZipPublishTest {
8+
public void zippublish_plugin_should_add_task_to_project() {
9+
Project project = ProjectBuilder.builder().build()
10+
project.getPlugins().apply 'opensearch.zippublish'
11+
12+
assertTrue(project.tasks.publishMavenzipPublicationToZipstagingRepository instanceof ZipPublish)
13+
}
14+
}

0 commit comments

Comments
 (0)