如何使用gradle与npm web应用程序和spring boot集成?

时间:2017-10-08 09:38:41

标签: node.js spring-boot gradle webpack

请帮我集成节点ui模块和使用gradle的Spring启动。

我只想用web jar文件部署war文件。

我的项目结构就像

myproject
    api
        src/main/java
        src/main/resources
        build/libs
    web
        <--- node files
        dist
        build/libs
    gradle
    build.gradle
    gradlew
    gradlew.bat
    settings.gradle

api模块是rest-api java应用程序。

web模块是npm node app。

我想做这个事件。

  1. 如果我输入./gradlew clean build

  2. 然后:web项目先编译并制作dist目录,然后制作jar文件。

  3. 然后:api项目与此jar文件发生争执。我将api war部署到服务器。

  4. 也许上面的步骤不对,因为我不擅长。

    我应该如何编写代码呢? 我必须在一个build.gradle文件中编写脚本。 只有一个build.gradle文件。我只能使用这个文件。

    buildscript {
      ext {
        springBootVersion = '1.5.7.RELEASE'
      }
      repositories {
        mavenCentral()
            maven { url 'http://repo.spring.io/plugins-release'}
            maven { url "https://plugins.gradle.org/m2/" }
    
      }
      dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
            classpath 'io.spring.gradle:propdeps-plugin:0.0.9.RELEASE'
            classpath "com.moowork.gradle:gradle-node-plugin:1.2.0"
      }
    }
    
    subprojects {
        apply plugin: 'java'
        apply plugin: 'eclipse'
    
        group = 'com.example'
        version = '0.0.1-SNAPSHOT'
        sourceCompatibility = 1.8
    
        repositories {
            mavenCentral()
        }
    }
    
    
    project('api') {
        apply plugin: 'org.springframework.boot'
    
        apply plugin: 'war'
        apply plugin: 'propdeps'
    
      dependencies {
            compile project(':web')
    
        compile('org.springframework.boot:spring-boot-starter-web')
        runtime('org.springframework.boot:spring-boot-devtools')
        compileOnly('org.projectlombok:lombok')
        testCompile('org.springframework.boot:spring-boot-starter-test')
    
            optional('org.springframework.boot:spring-boot-configuration-processor')
      }
    
        compileJava.dependsOn(processResources)
    }
    
    project('web') {
        apply plugin: 'com.moowork.node'
    
        node {
            version = '6.11.4'
            npmVersion = '3.10.10'
            download = true
            distBaseUrl = 'https://nodejs.org/dist'
        }
    
        task nodeBuild(type: NpmTask) {
            args = ['run', 'build']
        }
    
        jar {
            from ("dist/")
            into ("${rootProject.project('api').projectDir}/src/main/resources/")
            includeEmptyDirs = true
        }
        clean {
            delete 'dist/'
        }
    
        nodeBuild.dependsOn(npm_install)
        build.dependsOn(nodeBuild)
    }
    

1 个答案:

答案 0 :(得分:3)

查看Gradle Node Plugin

将其包含在构建依赖项中:

EditText

应用插件:

buildscript {
  ...

  dependencies {
    classpath "com.moowork.gradle:gradle-node-plugin:1.1.1"
  }
}

将其配置为适合您的项目结构:

apply plugin: 'com.moowork.node'

提供Gradle任务以运行NPM:

node {
  version = '6.10.2'
  npmVersion = '3.10.6'
  download = true
  workDir = file("${project.buildDir}/node")
  nodeModulesDir = file("${project.projectDir}")
}

您可以在Gradle版本here中找到一个集成Angular应用的工作示例。