Skip to content

Commit

Permalink
Finish gradle build tool module
Browse files Browse the repository at this point in the history
Updates #1862
  • Loading branch information
atomfrede authored and murdos committed Dec 27, 2022
1 parent 9542e11 commit 378c007
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 gradle 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 378c007

Please sign in to comment.