-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
refactor: split Utilities into multiple classes
- Loading branch information
Showing
3 changed files
with
156 additions
and
135 deletions.
There are no files selected for viewing
68 changes: 68 additions & 0 deletions
68
builder/src/main/java/org/screamingsandals/gradle/builder/JavadocUtilities.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
package org.screamingsandals.gradle.builder; | ||
|
||
import org.gradle.api.Project; | ||
import org.gradle.api.tasks.bundling.Jar; | ||
import org.gradle.api.tasks.javadoc.Javadoc; | ||
import org.gradle.external.javadoc.CoreJavadocOptions; | ||
import org.jetbrains.annotations.NotNull; | ||
import org.jetbrains.annotations.Nullable; | ||
import org.screamingsandals.gradle.builder.tasks.JavadocUploadTask; | ||
|
||
public final class JavadocUtilities { | ||
private JavadocUtilities() { | ||
} | ||
|
||
public static void configureJavadocTasks(@NotNull Project project) { | ||
var task = project.getTasks().getByName("javadoc", javadocTask -> { | ||
if (!(javadocTask instanceof Javadoc)) { | ||
throw new IllegalArgumentException("Expected javadoc task, got " + javadocTask); | ||
} | ||
var javadoc = (Javadoc) javadocTask; | ||
javadoc.options(op -> { | ||
((CoreJavadocOptions) op).addBooleanOption("html5", true); | ||
}); | ||
}); | ||
|
||
project.getTasks().create("javadocJar", Jar.class, it -> { | ||
it.dependsOn(task); | ||
it.getArchiveClassifier().set("javadoc"); | ||
it.from(task); | ||
}); | ||
} | ||
|
||
public static void setupAllowJavadocUploadTask(@NotNull Project project) { | ||
project.getTasks().create("allowJavadocUpload", it -> { | ||
if (project.getTasks().findByName("uploadJavadoc") != null) { | ||
it.dependsOn("uploadJavadoc"); | ||
} | ||
}); | ||
} | ||
|
||
public static void setupSftpJavadocPublishingTaskFromProperties(@NotNull Project project) { | ||
if (System.getenv(Constants.JAVADOC_HOST_PROPERTY) != null | ||
&& System.getenv(Constants.JAVADOC_USER_PROPERTY) != null | ||
&& System.getenv(Constants.JAVADOC_SECRET_PROPERTY) != null | ||
) { | ||
setupSftpJavadocPublishingTask( | ||
project, | ||
System.getenv(Constants.JAVADOC_HOST_PROPERTY), | ||
System.getenv(Constants.JAVADOC_USER_PROPERTY), | ||
System.getenv(Constants.JAVADOC_SECRET_PROPERTY), | ||
System.getenv(Constants.JAVADOC_UPLOAD_CUSTOM_DIRECTORY_PATH_PROPERTY) | ||
); | ||
} | ||
} | ||
|
||
public static void setupSftpJavadocPublishingTask(@NotNull Project project, @NotNull String javadocHost, @NotNull String javadocUser, @NotNull String javadocPassword, @Nullable String customDirectoryPath) { | ||
if (project.getTasks().findByName("javadoc") == null) { | ||
throw new IllegalStateException("Please call configureJavadocTasks() first!"); | ||
} | ||
|
||
project.getTasks().register("uploadJavadoc", JavadocUploadTask.class, it -> { | ||
it.getSftpHost().set(javadocHost); | ||
it.getSftpUser().set(javadocUser); | ||
it.getSftpPassword().set(javadocPassword); | ||
it.getJavaDocCustomDirectoryPath().set(customDirectoryPath); | ||
}); | ||
} | ||
} |
88 changes: 88 additions & 0 deletions
88
builder/src/main/java/org/screamingsandals/gradle/builder/MavenUtilities.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
package org.screamingsandals.gradle.builder; | ||
|
||
import org.gradle.api.Project; | ||
import org.gradle.api.artifacts.SelfResolvingDependency; | ||
import org.gradle.api.publish.PublishingExtension; | ||
import org.gradle.api.publish.maven.MavenPublication; | ||
import org.jetbrains.annotations.NotNull; | ||
import org.screamingsandals.gradle.builder.maven.NexusRepository; | ||
|
||
public final class MavenUtilities { | ||
private MavenUtilities() { | ||
} | ||
|
||
public static @NotNull MavenConfiguration setupPublishing(@NotNull Project project) { | ||
return setupPublishing(project, false, false, false); | ||
} | ||
|
||
public static @NotNull MavenConfiguration setupPublishing(@NotNull Project project, boolean onlyPomArtifact, boolean addSourceJar, boolean addJavadocJar) { | ||
var publishing = (PublishingExtension) project.getExtensions().getByName("publishing"); | ||
var publication = publishing.getPublications().create("maven", MavenPublication.class, it -> { | ||
if (!onlyPomArtifact) { | ||
it.artifact(project.getTasks().getByName("jar")); | ||
} | ||
|
||
if (addSourceJar) { | ||
it.artifact(project.getTasks().getByName("sourceJar")); | ||
} | ||
|
||
if (addJavadocJar) { | ||
it.artifact(project.getTasks().getByName("javadocJar")); | ||
} | ||
|
||
it.getArtifacts().forEach(a -> a.setClassifier("")); | ||
|
||
it.getPom().withXml(xml -> { | ||
var dependenciesNode = xml.asNode().appendNode("dependencies"); | ||
project.getConfigurations().getByName("compileOnly").getDependencies().forEach(dep -> { | ||
if (!(dep instanceof SelfResolvingDependency)) { | ||
var dependencyNode = dependenciesNode.appendNode("dependency"); | ||
dependencyNode.appendNode("groupId", dep.getGroup()); | ||
dependencyNode.appendNode("artifactId", dep.getName()); | ||
dependencyNode.appendNode("version", dep.getVersion()); | ||
dependencyNode.appendNode("scope", "provided"); | ||
} | ||
}); | ||
if (project.getTasks().findByName("shadowJar") == null) { | ||
project.getConfigurations().getByName("api").getDependencies().forEach(dep -> { | ||
var dependencyNode = dependenciesNode.appendNode("dependency"); | ||
dependencyNode.appendNode("groupId", dep.getGroup()); | ||
dependencyNode.appendNode("artifactId", dep.getName()); | ||
dependencyNode.appendNode("version", dep.getVersion()); | ||
dependencyNode.appendNode("scope", "compile"); | ||
}); | ||
} | ||
}); | ||
}); | ||
return new MavenConfiguration(publishing, publication); | ||
} | ||
|
||
public static void setupMavenRepositoriesFromProperties(@NotNull Project project) { | ||
var publishing = (PublishingExtension) project.getExtensions().getByName("publishing"); | ||
if (System.getenv(Constants.NEXUS_URL_RELEASE_PROPERTY) != null | ||
&& System.getenv(Constants.NEXUS_URL_SNAPSHOT_PROPERTY) != null | ||
&& System.getenv(Constants.NEXUS_USERNAME_PROPERTY) != null | ||
&& System.getenv(Constants.NEXUS_PASSWORD_PROPERTY) != null | ||
) { | ||
new NexusRepository().setup(project, publishing); | ||
} | ||
} | ||
|
||
public static final class MavenConfiguration { | ||
private final @NotNull PublishingExtension extension; | ||
private final @NotNull MavenPublication publication; | ||
|
||
public MavenConfiguration(@NotNull PublishingExtension extension, @NotNull MavenPublication publication) { | ||
this.extension = extension; | ||
this.publication = publication; | ||
} | ||
|
||
public @NotNull PublishingExtension getExtension() { | ||
return extension; | ||
} | ||
|
||
public @NotNull MavenPublication getPublication() { | ||
return publication; | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters