簡體   English   中英

如何與npm web應用程序和gradle的spring boot集成?

[英]how to integrate with npm web app and spring boot with gradle?

請幫助我使用gradle與節點ui模塊和Spring Boot集成。

我只想使用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節點應用程序。

我想做這個senario。

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

  2. 然后:web項目首先編譯並創建dist目錄,然后創建jar文件。

  3. 然后:api項目使這個jar文件發動戰爭。 我將api war部署到服務器。

也許上述步驟不正確,因為我不擅長。

我應該如何編寫代碼來做到這一點? 我必須在一個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)
}

看一下Gradle Node插件

將其包括在您的構建依賴項中:

buildscript {
  ...

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

應用插件:

apply plugin: 'com.moowork.node'

配置它以適合您的項目結構:

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

提供Gradle任務以運行NPM:

task build(type: NpmTask) {
    args = ['run', 'build']
}
build.dependsOn(npm_install)

您可以在此處找到將Angular應用程序集成到Gradle構建中的工作示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM