2017-10-08 2 views
2

S'il vous plaît Aidez-moi à intégrer avec le module ui de noeud et le démarrage de printemps en utilisant gradle.comment intégrer avec npm web app et spring boot avec gradle?

Je veux juste déployer le fichier war avec le fichier jar web.

Ma structure du projet est comme

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

Module api est repos api application java.

Et le module web est une application de nœud npm.

Je veux faire ce senario.

  1. Si je tape ./gradlew clean build

  2. puis :web projet compilez d'abord et faire dist répertoire et fichier make jar.

  3. Ensuite, le projet :api fait la guerre avec ce fichier jar. Je vais déployer api war sur le serveur.

Peut-être que l'étape ci-dessus n'est pas bonne parce que je ne suis pas bon.

Comment devrais-je faire du code pour le faire? Je dois écrire un script dans un fichier build.gradle. Il existe un seul fichier build.gradle. Je dois utiliser seulement ce fichier.

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) 
} 

Répondre

3

Jetez un oeil à la Gradle Node Plugin.

inclure dans vos dépendances de construction:

buildscript { 
    ... 

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

Appliquer le plugin:

apply plugin: 'com.moowork.node' 

Configurer pour l'adapter à la structure de votre projet:

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

Fournir une tâche Gradle pour exécuter NPM:

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

Vous pouvez trouver un exemple de travail avec une application Angular intégrée dans une construction Gradle here.