Skip to content

Commit

Permalink
Finish gradle build tool module
Browse files Browse the repository at this point in the history
It's hidden until gradle is fully supported, by handling dependencies and plugins.

Updates #1862
  • Loading branch information
murdos committed Dec 27, 2022
1 parent 877c439 commit 5943bc5
Show file tree
Hide file tree
Showing 8 changed files with 133 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ public enum JHLiteModuleSlug implements JHipsterModuleSlugFactory {
GITHUB_CODESPACES("github-codespaces"),
GITLAB_CI("gitlab-ci"),
GITPOD("gitpod"),
GRADLE_JAVA("gradle-java"),
GRADLE_WRAPPER("gradle-wrapper"),
INFINITEST_FILTERS("infinitest-filters"),
INIT("init"),
INTERNATIONALIZED_ERRORS("internationalized-errors"),
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package tech.jhipster.lite.generator.buildtool.gradle.application;

import org.springframework.stereotype.Service;
import tech.jhipster.lite.generator.buildtool.gradle.domain.GradleModuleFactory;
import tech.jhipster.lite.module.domain.JHipsterModule;
import tech.jhipster.lite.module.domain.properties.JHipsterModuleProperties;

@Service
public class GradleApplicationService {

private final GradleModuleFactory factory;

public GradleApplicationService() {
factory = new GradleModuleFactory();
}

public JHipsterModule buildGradleModule(JHipsterModuleProperties properties) {
return factory.buildGradleModule(properties);
}

public JHipsterModule buildGradleWrapperModule(JHipsterModuleProperties properties) {
return factory.buildGradleWrapperModule(properties);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,31 @@ public class GradleModuleFactory {

private static final JHipsterSource SOURCE = from("buildtool/gradle");

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

public JHipsterModule buildGradleModule(JHipsterModuleProperties properties) {
//@formatter:off
return moduleBuilder(properties)
return gradleWrapperModulesFiles(properties)
.context()
.put("dasherizedBaseName", properties.projectBaseName().kebabCase())
.and()
.files()
.batch(SOURCE, to("."))
.addTemplate("build.gradle.kts")
.addTemplate("settings.gradle.kts")
.and()
.and()
.build();
//@formatter:on
}

public JHipsterModule buildGradleWrapperModule(JHipsterModuleProperties properties) {
return gradleWrapperModulesFiles(properties).build();
}

private static JHipsterModuleBuilder gradleWrapperModulesFiles(JHipsterModuleProperties properties) {
Assert.notNull("properties", properties);

//@formatter:off
return moduleBuilder(properties)
.files()
.batch(SOURCE, to("."))
.addTemplate("build.gradle.kts")
Expand All @@ -30,8 +47,7 @@ public JHipsterModule buildModule(JHipsterModuleProperties properties) {
.and()
.addExecutable(SOURCE.file("gradlew"), to("gradlew"))
.addExecutable(SOURCE.file("gradlew.bat"), to("gradlew.bat"))
.and()
.build();
.and();
//@formatter:on
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package tech.jhipster.lite.generator.buildtool.gradle.infrastructure.primary;

import static tech.jhipster.lite.generator.JHLiteFeatureSlug.JAVA_BUILD_TOOL;
import static tech.jhipster.lite.generator.JHLiteModuleSlug.GRADLE_JAVA;
import static tech.jhipster.lite.generator.JHLiteModuleSlug.GRADLE_WRAPPER;
import static tech.jhipster.lite.generator.JHLiteModuleSlug.INIT;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import tech.jhipster.lite.generator.buildtool.gradle.application.GradleApplicationService;
import tech.jhipster.lite.module.domain.resource.JHipsterModuleOrganization;
import tech.jhipster.lite.module.domain.resource.JHipsterModulePropertiesDefinition;
import tech.jhipster.lite.module.domain.resource.JHipsterModuleResource;

@Configuration
class GradleModuleConfiguration {

@Bean
JHipsterModuleResource gradleModule(GradleApplicationService gradle) {
return JHipsterModuleResource
.builder()
.slug(GRADLE_JAVA)
.propertiesDefinition(JHipsterModulePropertiesDefinition.builder().addBasePackage().addProjectBaseName().addProjectName().build())
.apiDoc("Build Tool", "Init Gradle project with kotlin dsl and wrapper")
.organization(JHipsterModuleOrganization.builder().feature(JAVA_BUILD_TOOL).addDependency(INIT).build())
.tags("buildtool", "test")
.factory(gradle::buildGradleModule);
}

@Bean
JHipsterModuleResource gradleWrapperModule(GradleApplicationService gradle) {
return JHipsterModuleResource
.builder()
.slug(GRADLE_WRAPPER)
.withoutProperties()
.apiDoc("Build Tool", "Add gradle wrapper")
.standalone()
.tags("buildtool", "test")
.factory(gradle::buildGradleWrapperModule);
}
}
2 changes: 2 additions & 0 deletions src/main/resources/config/application.properties
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ application.version=@project.version@
#application.forced-project-folder=/tmp/jhlite

jhlite-hidden-resources.tags=banner
# gradle is hidden until it is fully supported
jhlite-hidden-resources.slugs=gradle-java

# Spring Boot Actuator
management.endpoints.web.base-path=/management
Expand Down
24 changes: 24 additions & 0 deletions src/test/features/gradle.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
Feature: Gradle module

Scenario: Should apply gradle init module
When I apply "gradle-java" module to default project
| packageName | tech.jhipster.chips |
| baseName | jhipster |
| projectName | Jhipster |
Then I should have files in "."
| build.gradle.kts |
| settings.gradle.kts |
| gradlew |
| gradlew.bat |
Then I should have files in "gradle/wrapper"
| gradle-wrapper.jar |
| gradle-wrapper.properties |

Scenario: Should apply gradle wrapper module
When I apply "gradle-wrapper" module to default project without parameters
Then I should have files in "."
| gradlew |
| gradlew.bat |
Then I should have files in "gradle/wrapper"
| gradle-wrapper.jar |
| gradle-wrapper.properties |
7 changes: 6 additions & 1 deletion src/test/features/maven.feature
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,14 @@ Feature: Maven module
When I apply "maven-java" module to default project
| packageName | tech.jhipster.chips |
| baseName | jhipster |
| projectNmae | Jhipster |
| projectName | Jhipster |
Then I should have files in "."
| pom.xml |
| mvnw.cmd |
| mvnw |
Then I should have files in ".mvn/wrapper"
| maven-wrapper.jar |
| maven-wrapper.properties |

Scenario: Should apply maven wrapper module
When I apply "maven-wrapper" module to default project without parameters
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ void shouldBuildModule() {
.projectBaseName("myApp")
.build();

JHipsterModule module = factory.buildModule(properties);
JHipsterModule module = factory.buildGradleModule(properties);

assertThatModule(module)
.hasFile("build.gradle.kts")
Expand All @@ -34,4 +34,15 @@ void shouldBuildModule() {
.hasExecutableFiles("gradlew", "gradlew.bat")
.hasPrefixedFiles("gradle/wrapper", "gradle-wrapper.jar", "gradle-wrapper.properties");
}

@Test
void shouldBuildGradleWrapperModule() {
JHipsterModuleProperties properties = JHipsterModulesFixture.propertiesBuilder(TestFileUtils.tmpDirForTest()).build();

JHipsterModule module = factory.buildGradleWrapperModule(properties);

assertThatModuleWithFiles(module)
.hasExecutableFiles("gradlew", "gradlew.bat")
.hasPrefixedFiles("gradle/wrapper", "gradle-wrapper.jar", "gradle-wrapper.properties");
}
}

0 comments on commit 5943bc5

Please sign in to comment.