Skip to content

Commit

Permalink
Merge pull request #9825 from renanfranca/9743-add-missing-frontend-s…
Browse files Browse the repository at this point in the history
…erver-plugin

add missing frontend server plugin
  • Loading branch information
murdos authored May 18, 2024
2 parents 58d4c2f + 31f7558 commit f0f10aa
Show file tree
Hide file tree
Showing 19 changed files with 318 additions and 101 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package tech.jhipster.lite.generator.server.javatool.frontendmaven.application;

import org.springframework.stereotype.Service;
import tech.jhipster.lite.generator.server.javatool.frontendmaven.domain.FrontendJavaBuildToolModuleFactory;
import tech.jhipster.lite.module.domain.JHipsterModule;
import tech.jhipster.lite.module.domain.npm.NpmVersions;
import tech.jhipster.lite.module.domain.properties.JHipsterModuleProperties;

@Service
public class FrontendJavaBuildToolApplicationService {

private final FrontendJavaBuildToolModuleFactory factory;

public FrontendJavaBuildToolApplicationService(NpmVersions npmVersions) {
factory = new FrontendJavaBuildToolModuleFactory(npmVersions);
}

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

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

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,14 @@
import tech.jhipster.lite.module.domain.JHipsterModule;
import tech.jhipster.lite.module.domain.file.JHipsterDestination;
import tech.jhipster.lite.module.domain.file.JHipsterSource;
import tech.jhipster.lite.module.domain.gradleplugin.GradleMainBuildPlugin;
import tech.jhipster.lite.module.domain.mavenplugin.MavenPlugin;
import tech.jhipster.lite.module.domain.npm.NpmVersionSource;
import tech.jhipster.lite.module.domain.npm.NpmVersions;
import tech.jhipster.lite.module.domain.properties.JHipsterModuleProperties;
import tech.jhipster.lite.shared.error.domain.Assert;

public class FrontendMavenModuleFactory {
public class FrontendJavaBuildToolModuleFactory {

private static final String PACKAGE_INFO = "package-info.java";

Expand All @@ -23,18 +24,13 @@ public class FrontendMavenModuleFactory {

private final NpmVersions npmVersions;

public FrontendMavenModuleFactory(NpmVersions npmVersions) {
public FrontendJavaBuildToolModuleFactory(NpmVersions npmVersions) {
this.npmVersions = npmVersions;
}

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

String packagePath = properties.packagePath();

JHipsterDestination mainDestination = toSrcMainJava().append(packagePath);
public JHipsterModule buildFrontendMavenModule(JHipsterModuleProperties properties) {
//@formatter:off
return moduleBuilder(properties)
return commonModuleFiles(properties)
.javaBuildProperties()
.set(buildPropertyKey("node.version"), buildPropertyValue("v" + npmVersions.nodeVersion().get()))
.set(buildPropertyKey("npm.version"), buildPropertyValue(npmVersions.get("npm", NpmVersionSource.COMMON).get()))
Expand All @@ -44,13 +40,6 @@ public JHipsterModule buildModule(JHipsterModuleProperties properties) {
.plugin(antrunPlugin())
.plugin(frontendMavenPlugin())
.and()
.files()
.add(
SOURCE.template("RedirectionResource.java"),
mainDestination.append(REDIRECTION_PRIMARY).append("RedirectionResource.java")
)
.add(SOURCE.template(PACKAGE_INFO), mainDestination.append(REDIRECTION).append(PACKAGE_INFO))
.and()
.build();
//@formatter:on
}
Expand Down Expand Up @@ -174,4 +163,90 @@ private MavenPlugin frontendMavenPlugin() {
)
.build();
}

public JHipsterModule buildFrontendGradleModule(JHipsterModuleProperties properties) {
//@formatter:off
return commonModuleFiles(properties)
.javaBuildProperties()
.set(buildPropertyKey("node.version.value"), buildPropertyValue(npmVersions.nodeVersion().get()))
.set(buildPropertyKey("npm.version.value"), buildPropertyValue(npmVersions.get("npm", NpmVersionSource.COMMON).get()))
.and()
.gradlePlugins()
.plugin(frontendGradlePlugin())
.and()
.gradleConfigurations()
.addTasksTestInstruction(
"""
dependsOn("testNpm")\
"""
)
.and()
.build();
//@formatter:on
}

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

String packagePath = properties.packagePath();

JHipsterDestination mainDestination = toSrcMainJava().append(packagePath);
//@formatter:off
return moduleBuilder(properties)
.files()
.add(
SOURCE.template("RedirectionResource.java"),
mainDestination.append(REDIRECTION_PRIMARY).append("RedirectionResource.java")
)
.add(SOURCE.template(PACKAGE_INFO), mainDestination.append(REDIRECTION).append(PACKAGE_INFO))
.and();
//@formatter:on
}

private GradleMainBuildPlugin frontendGradlePlugin() {
return gradleCommunityPlugin()
.id("com.github.node-gradle.node")
.pluginSlug("node-gradle")
.versionSlug("node-gradle")
.withBuildGradleImport("com.github.gradle.node.npm.task.NpmTask")
.configuration(
"""
node {
download.set(true)
version.set(nodeVersionValue)
npmVersion.set(npmVersionValue)
workDir.set(file(layout.buildDirectory))
npmWorkDir.set(file(layout.buildDirectory))
}
val buildTaskUsingNpm = tasks.register<NpmTask>("buildNpm") {
description = "Build the frontend project using NPM"
group = "Build"
dependsOn("npmInstall")
npmCommand.set(listOf("run", "build"))
environment.set(mapOf("APP_VERSION" to project.version.toString()))
}
val testTaskUsingNpm = tasks.register<NpmTask>("testNpm") {
description = "Test the frontend project using NPM"
group = "verification"
dependsOn("npmInstall", "buildNpm")
npmCommand.set(listOf("run", "test:coverage"))
ignoreExitValue.set(false)
workingDir.set(projectDir)
execOverrides {
standardOutput = System.out
}
}
tasks.bootJar {
dependsOn("buildNpm")
from("build/classes/static") {
into("BOOT-INF/classes/static")
}
}
"""
)
.build();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package tech.jhipster.lite.generator.server.javatool.frontendmaven.infrastructure.primary;

import static tech.jhipster.lite.generator.slug.domain.JHLiteFeatureSlug.*;
import static tech.jhipster.lite.generator.slug.domain.JHLiteModuleSlug.*;

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;

@Configuration
class FrontendJavaBuildToolModuleConfiguration {

@Bean
JHipsterModuleResource frontendMavenModule(FrontendJavaBuildToolApplicationService frontendJavaBuildTool) {
return JHipsterModuleResource.builder()
.slug(FRONTEND_MAVEN_PLUGIN)
.propertiesDefinition(JHipsterModulePropertiesDefinition.builder().addBasePackage().addProjectBaseName().addIndentation().build())
.apiDoc("Frontend Maven Plugin", "Add Frontend Maven Plugin")
.organization(
JHipsterModuleOrganization.builder()
.feature(FRONTEND_JAVA_BUILD_TOOL_PLUGIN)
.addDependency(SPRING_SERVER)
.addDependency(CLIENT_CORE)
.addDependency(MAVEN_JAVA)
.build()
)
.tags("server", "tools")
.factory(frontendJavaBuildTool::buildFrontendMavenModule);
}

@Bean
JHipsterModuleResource frontendGradleModule(FrontendJavaBuildToolApplicationService frontendJavaBuildTool) {
return JHipsterModuleResource.builder()
.slug(NODE_GRADLE_PLUGIN)
.propertiesDefinition(JHipsterModulePropertiesDefinition.builder().addBasePackage().addProjectBaseName().addIndentation().build())
.apiDoc("Frontend Gradle Plugin", "Add node-gradle plugin for building frontend with Gradle")
.organization(
JHipsterModuleOrganization.builder()
.feature(FRONTEND_JAVA_BUILD_TOOL_PLUGIN)
.addDependency(SPRING_SERVER)
.addDependency(CLIENT_CORE)
.addDependency(GRADLE_JAVA)
.build()
)
.tags("server", "tools")
.factory(frontendJavaBuildTool::buildFrontendGradleModule);
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ public enum JHLiteFeatureSlug implements JHipsterFeatureSlugFactory {
DATABASE_MIGRATION("database-migration"),
DOCKERFILE("dockerfile"),
FRONT_BROWSER_TEST("front-browser-test"),
FRONTEND_JAVA_BUILD_TOOL_PLUGIN("frontend-java-build-tool-plugin"),
GITHUB_ACTIONS("github-actions"),
GITLAB_CI("gitlab-ci"),
DEPENDENCIES_UPDATES("dependencies-updates"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ public enum JHLiteModuleSlug implements JHipsterModuleSlugFactory {
FLYWAY("flyway"),
FLYWAY_MYSQL("flyway-mysql"),
FRONTEND_MAVEN_PLUGIN("frontend-maven-plugin"),
NODE_GRADLE_PLUGIN("node-gradle-plugin"),
GATEWAY("gateway"),
GIT_INFORMATION("git-information"),
GITHUB_ACTIONS_MAVEN("github-actions-maven"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ plugins {
// jhipster-needle-gradle-plugins
}

// jhipster-needle-gradle-properties

java {
toolchain {
languageVersion = JavaLanguageVersion.of({{javaVersion}})
Expand All @@ -20,8 +22,6 @@ repositories {
group = "{{packageName}}"
version = "0.0.1-SNAPSHOT"

// jhipster-needle-gradle-properties

val profiles = (project.findProperty("profiles") as String? ?: "")
.split(",")
.map { it.trim() }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ plugins {
// jhipster-needle-gradle-plugins
}

// jhipster-needle-gradle-properties

// jhipster-needle-gradle-plugins-configurations

// Workaround to access the `libs` object in precompiled script plugin
Expand All @@ -17,5 +19,3 @@ dependencies {
// jhipster-needle-gradle-runtime-dependencies
// jhipster-needle-gradle-test-dependencies
}

// jhipster-needle-gradle-properties
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ git-properties = "2.4.2"
protobuf-plugin = "0.9.4"
jacoco = "0.8.11"
sonarqube = "4.4.1.3373"
node-gradle = "7.0.2"

[libraries]
[libraries.checkstyle]
Expand Down
15 changes: 15 additions & 0 deletions src/test/features/server/javatool/frontend-java-build-tool.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
Feature: Frontend server module

Scenario: Should apply frontend server maven module
When I apply "frontend-maven-plugin" module to default project with maven file
| packageName | tech.jhipster.chips |
| baseName | jhipster |
Then I should have files in "src/main/java/tech/jhipster/chips/wire/frontend/infrastructure/primary"
| RedirectionResource.java |

Scenario: Should apply frontend server gradle module
When I apply "node-gradle-plugin" module to default project with gradle build
| packageName | tech.jhipster.chips |
| baseName | jhipster |
Then I should have files in "src/main/java/tech/jhipster/chips/wire/frontend/infrastructure/primary"
| RedirectionResource.java |
8 changes: 0 additions & 8 deletions src/test/features/server/javatool/frontend-maven.feature

This file was deleted.

Loading

0 comments on commit f0f10aa

Please sign in to comment.