2017-10-08 3 views
2

ノードuiモジュールとspring bootをgradleを使って統合してください。npm web appとspringleとの統合方法は?

warファイルをweb jarファイルにデプロイしたいだけです。モジュールは残り-APIのJavaアプリケーションです

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

よう

マイプロジェクト構造です。

webモジュールはnpmノードアプリケーションです。

私はこのシナリオをしたいと思います。

  1. 私は./gradlew clean build

  2. を入力した場合、:webプロジェクトが最初にコンパイルしdistディレクトリを作成し、その後jarファイルを作ります。

  3. そして、:apiプロジェクトはこのjarファイルと戦います。私はapi warをサーバーに配備します。

私はそれがうまくないので、上記の手順は正しくない可能性があります。

これを行うにはどうすればよいですか? 私は1つのbuild.gradleファイルにスクリプトを書く必要があります。 build.gradleファイルは1つのみです。私はこのファイルだけを使用しなければなりません。

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

答えて

3

Gradle Node Pluginをご覧ください。

は、ビルドの依存関係でそれを含める:それはあなたのプロジェクトの構造に合わせて

apply plugin: 'com.moowork.node' 

設定:

buildscript { 
    ... 

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

は、プラグインを適用

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) 

アンダーグラウンドビルドhereにアングルアプリを統合した実例が見つかります。

関連する問題