Skip to content

Commit 66f24c4

Browse files
feat: Added Maven Publsih config
1 parent 79c00ed commit 66f24c4

6 files changed

Lines changed: 65 additions & 9 deletions

File tree

build.gradle.kts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,13 @@ dependencies {
1616
annotationProcessor(libs.lombok)
1717

1818
implementation(libs.shadow)
19+
implementation(libs.mavenCentralPublisher)
1920

2021
compileOnly(gradleApi())
2122
testImplementation(gradleTestKit())
2223

23-
testImplementation("org.junit.jupiter:junit-jupiter-api:5.8.1")
24-
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.8.1")
24+
testImplementation(libs.junit.api)
25+
testRuntimeOnly(libs.junit.engine)
2526
}
2627

2728
gradlePlugin {

settings.gradle.kts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,16 @@ dependencyResolutionManagement {
1414
version("gradlePublish", "1.3.0")
1515
version("lombok", "1.18.36")
1616
version("shadow", "8.3.5")
17+
version("mavenCentralPublisher", "1.2.4")
18+
19+
version("junit", "5.8.1")
1720

1821
library("lombok", "org.projectlombok", "lombok").versionRef("lombok")
1922
library("shadow", "com.gradleup.shadow", "shadow-gradle-plugin").versionRef("shadow")
23+
library("mavenCentralPublisher", "net.thebugmc.gradle.sonatype-central-portal-publisher", "net.thebugmc.gradle.sonatype-central-portal-publisher.gradle.plugin").versionRef("mavenCentralPublisher")
24+
25+
library("junit-api", "org.junit.jupiter", "junit-jupiter").versionRef("junit")
26+
library("junit-engine", "org.junit.jupiter", "junit-engine").versionRef("junit")
2027

2128
plugin("gradlePublish", "com.gradle.plugin-publish").versionRef("gradlePublish")
2229
}

src/main/java/studio/o7/remora/RemoraPlugin.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
import com.github.jengelman.gradle.plugins.shadow.ShadowPlugin;
44
import lombok.NonNull;
5+
import net.thebugmc.gradle.sonatypepublisher.CentralPortalExtension;
6+
import net.thebugmc.gradle.sonatypepublisher.PublishingType;
7+
import net.thebugmc.gradle.sonatypepublisher.SonatypeCentralPortalPublisherPlugin;
58
import org.gradle.api.Plugin;
69
import org.gradle.api.Project;
710
import org.gradle.api.artifacts.dsl.DependencyHandler;
@@ -10,12 +13,15 @@
1013
import org.gradle.api.plugins.JavaLibraryPlugin;
1114
import org.gradle.api.plugins.JavaPluginExtension;
1215
import org.gradle.api.plugins.PluginManager;
16+
import org.gradle.api.publish.PublishingExtension;
1317
import org.gradle.api.publish.maven.plugins.MavenPublishPlugin;
18+
import org.gradle.plugins.signing.SigningExtension;
1419
import org.gradle.plugins.signing.SigningPlugin;
1520
import studio.o7.remora.extensions.RemoraExtension;
1621
import studio.o7.remora.extensions.framework.FastUtilsExtension;
1722
import studio.o7.remora.extensions.framework.FrameworkExtension;
1823
import studio.o7.remora.extensions.framework.LombokExtension;
24+
import studio.o7.remora.extensions.publish.SonatypeMavenCentralExtension;
1925

2026
public class RemoraPlugin implements Plugin<Project> {
2127

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

3440
applyDependencies(logger, project, extension);
3541

42+
applyMavenPublishPluginConfiguration(logger, project, extension);
43+
3644
// todo
3745
// applyPlaceholderConfiguration(logger, project, extension);
3846
}
@@ -98,6 +106,33 @@ public static void applyDependencies(@NonNull Logger logger, @NonNull Project pr
98106
}
99107
}
100108

109+
public static void applyMavenPublishPluginConfiguration(@NonNull Logger logger, @NonNull Project project, RemoraExtension extension) {
110+
SonatypeMavenCentralExtension mavenCentral = extension.getMavenCentral();
111+
if (!mavenCentral.isEnabled()) return;
112+
113+
logger.info("Applying necessary singing configuration");
114+
115+
logger.info("Applying necessary plugin `sonatype-central-publisher`");
116+
project.getPlugins().apply(SonatypeCentralPortalPublisherPlugin.class);
117+
118+
logger.info("Configuring `centralPortal` extension");
119+
project.getExtensions().configure(CentralPortalExtension.class, centralPortal -> {
120+
centralPortal.getUsername().set(System.getenv("SONATYPE_USERNAME"));
121+
centralPortal.getPassword().set(System.getenv("SONATYPE_PASSWORD"));
122+
centralPortal.getName().set(extension.getArtifactId());
123+
centralPortal.getPublishingType().set(PublishingType.USER_MANAGED);
124+
});
125+
126+
logger.info("Configuring `signing` extension");
127+
project.getExtensions().configure(SigningExtension.class, signing -> {
128+
signing.useInMemoryPgpKeys(
129+
System.getenv("GPG_KEY"),
130+
System.getenv("GPG_PASSPHRASE")
131+
);
132+
signing.sign(project.getExtensions().getByType(PublishingExtension.class).getPublications());
133+
});
134+
}
135+
101136
public static void applyPlaceholderConfiguration(@NonNull Logger logger, @NonNull Project project, @NonNull RemoraExtension extension) {
102137
logger.info("Applying placeholder replacements");
103138

src/main/java/studio/o7/remora/extensions/RemoraExtension.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.gradle.api.model.ObjectFactory;
77
import org.gradle.jvm.toolchain.JavaLanguageVersion;
88
import studio.o7.remora.extensions.framework.FrameworkExtension;
9+
import studio.o7.remora.extensions.publish.SonatypeMavenCentralExtension;
910

1011
import javax.inject.Inject;
1112

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

2021
private String description;
2122

23+
private String projectUrl;
24+
2225
private JavaLanguageVersion javaVersion = JavaLanguageVersion.of(23);
2326

2427
private FrameworkExtension framework;
2528

29+
private SonatypeMavenCentralExtension mavenCentral;
30+
2631
@Inject
2732
public RemoraExtension(ObjectFactory factory) {
2833
this.framework = factory.newInstance(FrameworkExtension.class);
34+
this.mavenCentral = factory.newInstance(SonatypeMavenCentralExtension.class);
2935
}
3036

3137
public void framework(Action<? super FrameworkExtension> action) {
3238
action.execute(this.framework);
3339
}
40+
41+
public void mavenCentral(Action<? super SonatypeMavenCentralExtension> action) {
42+
action.execute(this.mavenCentral);
43+
}
3444
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package studio.o7.remora.extensions.publish;
2+
3+
import lombok.Getter;
4+
import lombok.Setter;
5+
6+
@Getter
7+
@Setter
8+
public class SonatypeMavenCentralExtension {
9+
private boolean enabled = false;
10+
}

src/main/java/studio/o7/remora/publishing/Sonatype.java

Lines changed: 0 additions & 7 deletions
This file was deleted.

0 commit comments

Comments
 (0)