Skip to content

Commit

Permalink
feat: Added Maven Publsih config
Browse files Browse the repository at this point in the history
  • Loading branch information
julian-siebert committed Dec 31, 2024
1 parent 79c00ed commit 66f24c4
Show file tree
Hide file tree
Showing 6 changed files with 65 additions and 9 deletions.
5 changes: 3 additions & 2 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,13 @@ dependencies {
annotationProcessor(libs.lombok)

implementation(libs.shadow)
implementation(libs.mavenCentralPublisher)

compileOnly(gradleApi())
testImplementation(gradleTestKit())

testImplementation("org.junit.jupiter:junit-jupiter-api:5.8.1")
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.8.1")
testImplementation(libs.junit.api)
testRuntimeOnly(libs.junit.engine)
}

gradlePlugin {
Expand Down
7 changes: 7 additions & 0 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,16 @@ dependencyResolutionManagement {
version("gradlePublish", "1.3.0")
version("lombok", "1.18.36")
version("shadow", "8.3.5")
version("mavenCentralPublisher", "1.2.4")

version("junit", "5.8.1")

library("lombok", "org.projectlombok", "lombok").versionRef("lombok")
library("shadow", "com.gradleup.shadow", "shadow-gradle-plugin").versionRef("shadow")
library("mavenCentralPublisher", "net.thebugmc.gradle.sonatype-central-portal-publisher", "net.thebugmc.gradle.sonatype-central-portal-publisher.gradle.plugin").versionRef("mavenCentralPublisher")

library("junit-api", "org.junit.jupiter", "junit-jupiter").versionRef("junit")
library("junit-engine", "org.junit.jupiter", "junit-engine").versionRef("junit")

plugin("gradlePublish", "com.gradle.plugin-publish").versionRef("gradlePublish")
}
Expand Down
35 changes: 35 additions & 0 deletions src/main/java/studio/o7/remora/RemoraPlugin.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

import com.github.jengelman.gradle.plugins.shadow.ShadowPlugin;
import lombok.NonNull;
import net.thebugmc.gradle.sonatypepublisher.CentralPortalExtension;
import net.thebugmc.gradle.sonatypepublisher.PublishingType;
import net.thebugmc.gradle.sonatypepublisher.SonatypeCentralPortalPublisherPlugin;
import org.gradle.api.Plugin;
import org.gradle.api.Project;
import org.gradle.api.artifacts.dsl.DependencyHandler;
Expand All @@ -10,12 +13,15 @@
import org.gradle.api.plugins.JavaLibraryPlugin;
import org.gradle.api.plugins.JavaPluginExtension;
import org.gradle.api.plugins.PluginManager;
import org.gradle.api.publish.PublishingExtension;
import org.gradle.api.publish.maven.plugins.MavenPublishPlugin;
import org.gradle.plugins.signing.SigningExtension;
import org.gradle.plugins.signing.SigningPlugin;
import studio.o7.remora.extensions.RemoraExtension;
import studio.o7.remora.extensions.framework.FastUtilsExtension;
import studio.o7.remora.extensions.framework.FrameworkExtension;
import studio.o7.remora.extensions.framework.LombokExtension;
import studio.o7.remora.extensions.publish.SonatypeMavenCentralExtension;

public class RemoraPlugin implements Plugin<Project> {

Expand All @@ -33,6 +39,8 @@ public void apply(Project project) {

applyDependencies(logger, project, extension);

applyMavenPublishPluginConfiguration(logger, project, extension);

// todo
// applyPlaceholderConfiguration(logger, project, extension);
}
Expand Down Expand Up @@ -98,6 +106,33 @@ public static void applyDependencies(@NonNull Logger logger, @NonNull Project pr
}
}

public static void applyMavenPublishPluginConfiguration(@NonNull Logger logger, @NonNull Project project, RemoraExtension extension) {
SonatypeMavenCentralExtension mavenCentral = extension.getMavenCentral();
if (!mavenCentral.isEnabled()) return;

logger.info("Applying necessary singing configuration");

logger.info("Applying necessary plugin `sonatype-central-publisher`");
project.getPlugins().apply(SonatypeCentralPortalPublisherPlugin.class);

logger.info("Configuring `centralPortal` extension");
project.getExtensions().configure(CentralPortalExtension.class, centralPortal -> {
centralPortal.getUsername().set(System.getenv("SONATYPE_USERNAME"));
centralPortal.getPassword().set(System.getenv("SONATYPE_PASSWORD"));
centralPortal.getName().set(extension.getArtifactId());
centralPortal.getPublishingType().set(PublishingType.USER_MANAGED);
});

logger.info("Configuring `signing` extension");
project.getExtensions().configure(SigningExtension.class, signing -> {
signing.useInMemoryPgpKeys(
System.getenv("GPG_KEY"),
System.getenv("GPG_PASSPHRASE")
);
signing.sign(project.getExtensions().getByType(PublishingExtension.class).getPublications());
});
}

public static void applyPlaceholderConfiguration(@NonNull Logger logger, @NonNull Project project, @NonNull RemoraExtension extension) {
logger.info("Applying placeholder replacements");

Expand Down
10 changes: 10 additions & 0 deletions src/main/java/studio/o7/remora/extensions/RemoraExtension.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import org.gradle.api.model.ObjectFactory;
import org.gradle.jvm.toolchain.JavaLanguageVersion;
import studio.o7.remora.extensions.framework.FrameworkExtension;
import studio.o7.remora.extensions.publish.SonatypeMavenCentralExtension;

import javax.inject.Inject;

Expand All @@ -19,16 +20,25 @@ public class RemoraExtension {

private String description;

private String projectUrl;

private JavaLanguageVersion javaVersion = JavaLanguageVersion.of(23);

private FrameworkExtension framework;

private SonatypeMavenCentralExtension mavenCentral;

@Inject
public RemoraExtension(ObjectFactory factory) {
this.framework = factory.newInstance(FrameworkExtension.class);
this.mavenCentral = factory.newInstance(SonatypeMavenCentralExtension.class);
}

public void framework(Action<? super FrameworkExtension> action) {
action.execute(this.framework);
}

public void mavenCentral(Action<? super SonatypeMavenCentralExtension> action) {
action.execute(this.mavenCentral);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package studio.o7.remora.extensions.publish;

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class SonatypeMavenCentralExtension {
private boolean enabled = false;
}
7 changes: 0 additions & 7 deletions src/main/java/studio/o7/remora/publishing/Sonatype.java

This file was deleted.

0 comments on commit 66f24c4

Please sign in to comment.