Java 如何告诉gradle在构建时在项目中安装npm?
我的java web应用程序的angular 4 UI仅依赖于以下几个捆绑包。我从webapps根目录运行了以下命令。应用程序运行良好。我想知道最佳实践,因为我是新手Java 如何告诉gradle在构建时在项目中安装npm?,java,angular,gradle,npm-install,Java,Angular,Gradle,Npm Install,我的java web应用程序的angular 4 UI仅依赖于以下几个捆绑包。我从webapps根目录运行了以下命令。应用程序运行良好。我想知道最佳实践,因为我是新手 npm install rxjs npm install @angular/core@4.4.6 @angular/common@4.4.6 @angular/compiler@4.4.6 @angular/platform-browser@4.4.6 @angular/platform-browser-dynamic@4.4.6
npm install rxjs
npm install @angular/core@4.4.6 @angular/common@4.4.6 @angular/compiler@4.4.6 @angular/platform-browser@4.4.6 @angular/platform-browser-dynamic@4.4.6 @angular/router@4.4.6 @angular/forms@4.4.6 --save
npm install typescript@2.4.2 --save
npm install plugin-typescript@5.2.7 --save
我指的是systemjs.config.js
中安装的捆绑包,如下所示:
paths: {
'npm:' : 'node_modules/'
},
map: {
'@angular/core' : 'npm:@angular/core/bundles/core.umd.js'
.
.
}
查询:
war中的整个node\u模块
node\u modules
保存在项目根目录中而不是webapps中,我如何从systemjs.config.js
npm install@angular/cli
node\u模块
,如何从systemjs.config.js
中引用它(我更喜欢将其保存在project中,以免干扰服务器中使用不同版本的其他应用程序)build.gradle
中包括什么,以便在gradle构建时下载所需的捆绑包正如@Oliver Charlesworth所说,Gradle有他的局限性,但您可以创建自定义Gradle任务 例如:
task npmInstall(type: Exec) {
workingDir 'src/main/webapp'
commandLine 'npm', 'install'
}
将生成依赖项添加到war
生成步骤中
war {
dependsOn npmBuild
}
正如Tim Hovius所说:您可以创建自己的任务 如果不希望它一直执行,可以添加OnlyIf子句 (正式文件: 或 例如,在build.gradle中
task doSomething {
doLast {
...
}
}
doSomething.enabled = (some condition goes here)
Gradle对JS生态系统没有天生的理解。你可以尝试一下,但根据我的经验,它有点有限。问题是每次都要运行
npm install
。因此理想情况下,你希望找到某种方法来指示任务何时最新。你是对的,但依赖项会被下载一次,所以只有第一次执行任务需要花费一些时间。
task doSomething {
doLast {
def file = new File("dummy.txt")
if (file.exists()) {
project.exec {
commandLine 'someCommand', 'parameter'
}
}
}
}
task doSomething {
doLast {
...
}
}
doSomething.enabled = (some condition goes here)