Skip to content

Commit

Permalink
Merge pull request #8504 from murdos/gradle-plugin
Browse files Browse the repository at this point in the history
  Handle Gradle plugins in modules
  • Loading branch information
murdos authored Jan 9, 2024
2 parents d57884b + 00adc64 commit d3344fe
Show file tree
Hide file tree
Showing 59 changed files with 1,459 additions and 110 deletions.
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
*.java text
*.js text
*.json text
*.kts text
*.less text
*.properties text
*.sass text
Expand Down
10 changes: 10 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,16 @@ updates:
labels:
- 'area: dependencies'

- package-ecosystem: 'gradle'
directory: '/src/main/resources/generator/dependencies/'
schedule:
interval: 'daily'
time: '00:00'
open-pull-requests-limit: 20
rebase-strategy: 'disabled'
labels:
- 'area: dependencies'

- package-ecosystem: 'github-actions'
directory: '/'
schedule:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@

import tech.jhipster.lite.module.domain.JHipsterModule;
import tech.jhipster.lite.module.domain.file.JHipsterSource;
import tech.jhipster.lite.module.domain.gradleplugin.GradlePlugin;
import tech.jhipster.lite.module.domain.javabuild.VersionSlug;
import tech.jhipster.lite.module.domain.javabuildplugin.JavaBuildPlugin;
import tech.jhipster.lite.module.domain.properties.JHipsterModuleProperties;
import tech.jhipster.lite.shared.error.domain.Assert;
Expand All @@ -16,17 +18,22 @@ public class CheckstyleModuleFactory {
public JHipsterModule buildModule(JHipsterModuleProperties properties) {
Assert.notNull("properties", properties);

//@formatter:off
return moduleBuilder(properties)
.javaBuildPlugins()
.plugin(checkstylePlugin())
.and()
.plugin(checkstyleMavenPlugin())
.and()
.gradlePlugins()
.plugin(checkstyleGradlePlugin())
.and()
.files()
.add(TEMPLATES_SOURCE.template("checkstyle.xml"), to("checkstyle.xml"))
.and()
.add(TEMPLATES_SOURCE.template("checkstyle.xml"), to("checkstyle.xml"))
.and()
.build();
//@formatter:on
}

private JavaBuildPlugin checkstylePlugin() {
private JavaBuildPlugin checkstyleMavenPlugin() {
return javaBuildPlugin()
.groupId("org.apache.maven.plugins")
.artifactId("maven-checkstyle-plugin")
Expand All @@ -42,4 +49,27 @@ private JavaBuildPlugin checkstylePlugin() {
.addExecution(pluginExecution().goals("check").id("validate").phase(VALIDATE))
.build();
}

private GradlePlugin checkstyleGradlePlugin() {
VersionSlug toolVersionSlug = new VersionSlug("checkstyle");
return gradleCorePlugin()
.id("checkstyle")
.toolVersionSlug(toolVersionSlug)
.configuration(
"""
checkstyle {
configFile = rootProject.file("checkstyle.xml")
toolVersion = libs.versions.%s.get()
}
// Workaround for https://github.com/gradle/gradle/issues/27035
configurations.checkstyle {
resolutionStrategy.capabilitiesResolution.withCapability("com.google.collections:google-collections") {
select("com.google.guava:guava:0")
}
}
""".formatted(toolVersionSlug.slug())
)
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

import tech.jhipster.lite.module.domain.JHipsterModule;
import tech.jhipster.lite.module.domain.file.JHipsterSource;
import tech.jhipster.lite.module.domain.gradleplugin.GradlePlugin;
import tech.jhipster.lite.module.domain.javabuildplugin.JavaBuildPlugin;
import tech.jhipster.lite.module.domain.javabuildplugin.JavaBuildPluginConfiguration;
import tech.jhipster.lite.module.domain.properties.JHipsterModuleProperties;
Expand All @@ -13,6 +14,7 @@ public class SpringBootDockerModuleFactory {

private static final JHipsterSource SOURCE = from("server/springboot/docker");
private static final JHipsterSource JIB_SOURCE = SOURCE.append("jib");
private static final String JAVA_DOCKER_IMAGE = "eclipse-temurin:21-jre-jammy";

public JHipsterModule buildJibModule(JHipsterModuleProperties properties) {
Assert.notNull("properties", properties);
Expand All @@ -23,7 +25,10 @@ public JHipsterModule buildJibModule(JHipsterModuleProperties properties) {
.put("mainClass", mainClassName(properties))
.and()
.javaBuildPlugins()
.plugin(jibPlugin(properties))
.plugin(mavenJibPlugin(properties))
.and()
.gradlePlugins()
.plugin(gradleJibPlugin(properties))
.and()
.files()
.add(JIB_SOURCE.template("entrypoint.sh"), to("src/main/docker/jib").append("entrypoint.sh"))
Expand All @@ -41,7 +46,7 @@ private String mainClassName(JHipsterModuleProperties properties) {
.toString();
}

private JavaBuildPlugin jibPlugin(JHipsterModuleProperties properties) {
private JavaBuildPlugin mavenJibPlugin(JHipsterModuleProperties properties) {
return javaBuildPlugin()
.groupId("com.google.cloud.tools")
.artifactId("jib-maven-plugin")
Expand All @@ -54,7 +59,7 @@ private JavaBuildPluginConfiguration jibPluginConfiguration(JHipsterModuleProper
return new JavaBuildPluginConfiguration(
"""
<from>
<image>eclipse-temurin:21-jre-jammy</image>
<image>%s</image>
<platforms>
<platform>
<architecture>amd64</architecture>
Expand Down Expand Up @@ -90,10 +95,53 @@ private JavaBuildPluginConfiguration jibPluginConfiguration(JHipsterModuleProper
</permission>
</permissions>
</extraDirectories>
""".formatted(properties.projectBaseName().get(), properties.serverPort().get())
""".formatted(JAVA_DOCKER_IMAGE, properties.projectBaseName().get(), properties.serverPort().get())
);
}

private GradlePlugin gradleJibPlugin(JHipsterModuleProperties properties) {
return gradleCommunityPlugin()
.id("com.google.cloud.tools.jib")
.pluginSlug("jib")
.versionSlug("jib")
.configuration(
"""
jib {
from {
image = "%s"
platforms {
platform {
architecture = "amd64"
os = "linux"
}
}
}
to {
image = "%s:latest"
}
container {
entrypoint = listOf("bash", "-c", "/entrypoint.sh")
ports = listOf("%s")
environment = mapOf(
"SPRING_OUTPUT_ANSI_ENABLED" to "ALWAYS",
"JHIPSTER_SLEEP" to "0"
)
creationTime = "USE_CURRENT_TIMESTAMP"
user = "1000"
}
extraDirectories {
paths {
path {
setFrom("src/main/docker/jib")
}
}
permissions = mapOf("/entrypoint.sh" to "755")
}
}""".formatted(JAVA_DOCKER_IMAGE, properties.projectBaseName().get(), properties.serverPort().get())
)
.build();
}

public JHipsterModule buildDockerFileModule(JHipsterModuleProperties properties) {
Assert.notNull("properties", properties);

Expand Down
26 changes: 26 additions & 0 deletions src/main/java/tech/jhipster/lite/module/domain/JHipsterModule.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,12 @@
import tech.jhipster.lite.module.domain.file.JHipsterSource;
import tech.jhipster.lite.module.domain.file.JHipsterTemplatedFile;
import tech.jhipster.lite.module.domain.file.JHipsterTemplatedFiles;
import tech.jhipster.lite.module.domain.gradleplugin.GradleCommunityPlugin;
import tech.jhipster.lite.module.domain.gradleplugin.GradleCommunityPlugin.GradleCommunityPluginIdBuilder;
import tech.jhipster.lite.module.domain.gradleplugin.GradleCorePlugin;
import tech.jhipster.lite.module.domain.gradleplugin.GradleCorePlugin.GradleCorePluginIdBuilder;
import tech.jhipster.lite.module.domain.gradleplugin.JHipsterModuleGradlePlugin;
import tech.jhipster.lite.module.domain.gradleplugin.JHipsterModuleGradlePlugin.JHipsterModuleGradlePluginBuilder;
import tech.jhipster.lite.module.domain.javabuild.ArtifactId;
import tech.jhipster.lite.module.domain.javabuild.GroupId;
import tech.jhipster.lite.module.domain.javabuild.JHipsterModuleMavenBuildExtensions;
Expand Down Expand Up @@ -98,6 +104,7 @@ public class JHipsterModule {
private final JHipsterModuleJavaDependencies javaDependencies;
private final JHipsterModuleJavaBuildProfiles javaBuildProfiles;
private final JHipsterModuleJavaBuildPlugin javaBuildPlugins;
private final JHipsterModuleGradlePlugin gradlePlugins;
private final JHipsterModuleMavenBuildExtensions mavenBuildExtensions;
private final JHipsterModulePackageJson packageJson;
private final JHipsterModulePreActions preActions;
Expand All @@ -116,6 +123,7 @@ private JHipsterModule(JHipsterModuleBuilder builder) {
javaDependencies = builder.javaDependencies.build();
javaBuildProfiles = builder.javaBuildProfiles.build();
javaBuildPlugins = builder.javaBuildPlugins.build();
gradlePlugins = builder.gradlePlugins.build();
mavenBuildExtensions = builder.mavenBuildExtensions.build();
packageJson = builder.packageJson.build();
preActions = builder.preActions.build();
Expand All @@ -136,6 +144,7 @@ private JHipsterModule(JHipsterModule source, JHipsterModuleUpgrade upgrade) {
javaDependencies = source.javaDependencies;
javaBuildProfiles = source.javaBuildProfiles;
javaBuildPlugins = source.javaBuildPlugins;
gradlePlugins = source.gradlePlugins;
mavenBuildExtensions = source.mavenBuildExtensions;
packageJson = source.packageJson;
preActions = source.preActions;
Expand Down Expand Up @@ -361,6 +370,14 @@ public static PackageName packageName(String packageName) {
return new PackageName(packageName);
}

public static GradleCorePluginIdBuilder gradleCorePlugin() {
return GradleCorePlugin.builder();
}

public static GradleCommunityPluginIdBuilder gradleCommunityPlugin() {
return GradleCommunityPlugin.builder();
}

public JHipsterModule withUpgrade(JHipsterModuleUpgrade upgrade) {
return new JHipsterModule(this, upgrade);
}
Expand Down Expand Up @@ -415,6 +432,10 @@ public JHipsterModuleJavaBuildPlugin javaBuildPlugins() {
return javaBuildPlugins;
}

public JHipsterModuleGradlePlugin gradlePlugins() {
return gradlePlugins;
}

public JHipsterModuleMavenBuildExtensions mavenBuildExtensions() {
return mavenBuildExtensions;
}
Expand Down Expand Up @@ -459,6 +480,7 @@ public static class JHipsterModuleBuilder {
private final JHipsterModuleJavaDependenciesBuilder javaDependencies = JHipsterModuleJavaDependencies.builder(this);
private final JHipsterModuleJavaBuildProfilesBuilder javaBuildProfiles = JHipsterModuleJavaBuildProfiles.builder(this);
private final JHipsterModuleJavaBuildPluginBuilder javaBuildPlugins = JHipsterModuleJavaBuildPlugin.builder(this);
private final JHipsterModuleGradlePluginBuilder gradlePlugins = JHipsterModuleGradlePlugin.builder(this);
private final JHipsterModuleMavenBuildExtensionsBuilder mavenBuildExtensions = JHipsterModuleMavenBuildExtensions.builder(this);
private final JHipsterModulePackageJsonBuilder packageJson = JHipsterModulePackageJson.builder(this);
private final JHipsterModulePreActionsBuilder preActions = JHipsterModulePreActions.builder(this);
Expand Down Expand Up @@ -548,6 +570,10 @@ public JHipsterModuleJavaBuildPluginBuilder javaBuildPlugins() {
return javaBuildPlugins;
}

public JHipsterModuleGradlePluginBuilder gradlePlugins() {
return gradlePlugins;
}

public JHipsterModuleMavenBuildExtensionsBuilder mavenBuildExtensions() {
return mavenBuildExtensions;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ public JHipsterModuleApplied apply(JHipsterModuleToApply moduleToApply) {
.merge(buildPluginsChanges(module))
.merge(buildMavenBuildExtensionsChanges(module))
.merge(buildProfilesChanges(module))
.merge(buildGradlePluginsChanges(module))
)
.packageJson(module.packageJson())
.preActions(module.preActions())
Expand Down Expand Up @@ -114,6 +115,10 @@ private String commitMessage(JHipsterModuleToApply moduleToApply) {
return new StringBuilder().append("Apply ").append(moduleToApply.slug().get()).append(" module").toString();
}

private JavaBuildCommands buildGradlePluginsChanges(JHipsterModule module) {
return module.gradlePlugins().buildChanges(javaVersions.get());
}

private JavaBuildCommands buildDependenciesChanges(JHipsterModule module) {
return module.javaDependencies().buildChanges(javaVersions.get(), projectDependencies.get(module.projectFolder()));
}
Expand Down
Loading

0 comments on commit d3344fe

Please sign in to comment.