Skip to content

Commit

Permalink
Merge pull request #10895 from murdos/extract-checksum-from-frontend-…
Browse files Browse the repository at this point in the history
…maven-plugin

feat(frontend-maven-plugin): extract cache logic (checksum computation of resources) into a dedicated module
  • Loading branch information
murdos authored Sep 18, 2024
2 parents c7d1712 + 4ccfa97 commit ccb75e3
Show file tree
Hide file tree
Showing 7 changed files with 297 additions and 244 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,8 @@ public JHipsterModule buildFrontendMavenModule(JHipsterModuleProperties properti
public JHipsterModule buildFrontendGradleModule(JHipsterModuleProperties properties) {
return factory.buildFrontendGradleModule(properties);
}

public JHipsterModule buildFrontendMavenCacheModule(JHipsterModuleProperties properties) {
return factory.buildFrontendMavenCacheModule(properties);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,16 +29,29 @@ public FrontendJavaBuildToolModuleFactory(NpmVersions npmVersions) {
}

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

//@formatter:off
return commonModuleFiles(properties)
.javaBuildProperties()
.set(buildPropertyKey("node.version"), buildPropertyValue("v" + npmVersions.nodeVersion().get()))
.set(buildPropertyKey("npm.version"), buildPropertyValue(npmVersions.get("npm", JHLiteNpmVersionSource.COMMON).get()))
.and()
.mavenPlugins()
.plugin(frontendMavenPlugin())
.and()
.build();
//@formatter:on
}

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

//@formatter:off
return moduleBuilder(properties)
.mavenPlugins()
.plugin(checksumPlugin())
.plugin(antrunPlugin())
.plugin(frontendMavenPlugin())
.and()
.build();
//@formatter:on
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,20 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import tech.jhipster.lite.generator.server.javatool.frontendmaven.application.FrontendJavaBuildToolApplicationService;
import tech.jhipster.lite.module.domain.resource.JHipsterModuleOrganization;
import tech.jhipster.lite.module.domain.resource.JHipsterModulePropertiesDefinition;
import tech.jhipster.lite.module.domain.resource.JHipsterModuleResource;
import tech.jhipster.lite.module.domain.resource.*;

@Configuration
class FrontendJavaBuildToolModuleConfiguration {

private static final String[] TAGS = { "server", "tools" };
private static final String FRONTEND_JAVA_PLUGIN = "Frontend Java Plugin";

@Bean
JHipsterModuleResource frontendMavenModule(FrontendJavaBuildToolApplicationService frontendJavaBuildTool) {
return JHipsterModuleResource.builder()
.slug(FRONTEND_MAVEN_PLUGIN)
.propertiesDefinition(JHipsterModulePropertiesDefinition.builder().addBasePackage().addProjectBaseName().addIndentation().build())
.apiDoc("Frontend Java Plugin", "Add Frontend Maven Plugin")
.apiDoc(FRONTEND_JAVA_PLUGIN, "Add Frontend Maven Plugin")
.organization(
JHipsterModuleOrganization.builder()
.feature(FRONTEND_JAVA_BUILD_TOOL_PLUGIN)
Expand All @@ -27,16 +28,27 @@ JHipsterModuleResource frontendMavenModule(FrontendJavaBuildToolApplicationServi
.addDependency(MAVEN_JAVA)
.build()
)
.tags("server", "tools")
.tags(TAGS)
.factory(frontendJavaBuildTool::buildFrontendMavenModule);
}

@Bean
JHipsterModuleResource frontendMavenCacheModule(FrontendJavaBuildToolApplicationService frontendJavaBuildTool) {
return JHipsterModuleResource.builder()
.slug(FRONTEND_MAVEN_PLUGIN_CACHE)
.propertiesDefinition(JHipsterModulePropertiesDefinition.EMPTY)
.apiDoc(FRONTEND_JAVA_PLUGIN, "Add cache - by computing resources checksum - to avoid rebuilding frontend on successive maven builds")
.organization(JHipsterModuleOrganization.builder().addDependency(FRONTEND_MAVEN_PLUGIN).build())
.tags(TAGS)
.factory(frontendJavaBuildTool::buildFrontendMavenCacheModule);
}

@Bean
JHipsterModuleResource frontendGradleModule(FrontendJavaBuildToolApplicationService frontendJavaBuildTool) {
return JHipsterModuleResource.builder()
.slug(NODE_GRADLE_PLUGIN)
.propertiesDefinition(JHipsterModulePropertiesDefinition.builder().addBasePackage().addProjectBaseName().addIndentation().build())
.apiDoc("Frontend Java Plugin", "Add node-gradle plugin for building frontend with Gradle")
.apiDoc(FRONTEND_JAVA_PLUGIN, "Add node-gradle plugin for building frontend with Gradle")
.organization(
JHipsterModuleOrganization.builder()
.feature(FRONTEND_JAVA_BUILD_TOOL_PLUGIN)
Expand All @@ -45,7 +57,7 @@ JHipsterModuleResource frontendGradleModule(FrontendJavaBuildToolApplicationServ
.addDependency(GRADLE_JAVA)
.build()
)
.tags("server", "tools")
.tags(TAGS)
.factory(frontendJavaBuildTool::buildFrontendGradleModule);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ public enum JHLiteModuleSlug implements JHipsterModuleSlugFactory {
FLYWAY_MYSQL("flyway-mysql"),
FLYWAY_POSTGRESQL("flyway-postgresql"),
FRONTEND_MAVEN_PLUGIN("frontend-maven-plugin"),
FRONTEND_MAVEN_PLUGIN_CACHE("frontend-maven-plugin-cache"),
FRONT_HEXAGONAL_ARCHITECTURE("front-hexagonal-architecture"),
NODE_GRADLE_PLUGIN("node-gradle-plugin"),
GATEWAY("gateway"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,11 @@ Feature: Frontend server module
Then I should have files in "src/main/java/tech/jhipster/chips/wire/frontend/infrastructure/primary"
| RedirectionResource.java |

Scenario: Should apply frontend-maven-plugin-cache module
When I apply "frontend-maven-plugin-cache" module to default project with maven file
| packageName | tech.jhipster.chips |
Then I should have "checksum-maven-plugin" in "pom.xml"

Scenario: Should apply frontend server gradle module
When I apply "node-gradle-plugin" module to default project with gradle build
| packageName | tech.jhipster.chips |
Expand Down
Loading

0 comments on commit ccb75e3

Please sign in to comment.