【发布时间】:2020-04-24 10:53:37
【问题描述】:
我有 2 个相对简单的 Gradle 6.1.1 配置,一个是使用 https://plugins.gradle.org/plugin/com.github.node-gradle.node 构建一个 react 应用程序,另一个是基于 https://plugins.gradle.org/plugin/com.bmuschko.tomcat 并在嵌入式 tomcat 中运行一个简单的 wicket 应用程序。
npm 任务的第一个配置是:
apply plugin: 'com.github.node-gradle.node'
node {
version = '12.16.0'
download = true
workDir = file "$project.buildDir/nodejs"
}
task "npmBuild"( type:NpmTask ) {
args = [ 'run', 'build' ]
}
并在 Windows 10 中产生以下输出:
>gradlew.bat npmBuild
Starting a Gradle Daemon (subsequent builds will be faster)
> Task :npmBuild
> layer-selection@0.1.0 build .....
> react-scripts build
Creating an optimized production build...
Compiled with warnings.
...
Search for the keywords to learn more about each warning.
To ignore, add // eslint-disable-next-line to the line before.
File sizes after gzip:
90.99 KB build\static\js\2.17f9cda1.chunk.js
28.68 KB build\static\css\2.2f7f14af.chunk.css
3.43 KB build\static\js\main.1150707e.chunk.js
778 B build\static\js\runtime-main.989054bd.js
177 B build\static\css\main.f7c0afb8.chunk.css
...
Find out more about deployment here:
bit.ly/CRA-deploy
此时任务持续了大约。 20 秒,然后在 CPU 负载低于 1% 的情况下挂起 3 分钟并继续:
BUILD SUCCESSFUL in 3m 18s
2 actionable tasks: 1 executed, 1 up-to-date
奇怪的是,在另一台 Win10 机器上的类似项目上运行相同的配置会导致干净运行而不会冻结。
还有任务:
task "npm-install"( type:NpmTask ) {
args = [ 'install' ]
}
task "npm-set-proxy"( type:NpmTask ) {
args = [ 'config', 'set', 'https-proxy', 'http://www.www.www:80/' ]
}
显示相同的额外 3 分钟行为。
第二个配置如下:
apply plugin: 'com.bmuschko.tomcat'
ext.tomcatVersion = '9.0.30'
dependencies {
// some deps
tomcat "org.apache.tomcat.embed:tomcat-embed-core:$tomcatVersion",
"org.apache.tomcat.embed:tomcat-embed-logging-juli:9.0.0.M6",
"org.apache.tomcat.embed:tomcat-embed-jasper:$tomcatVersion",
"org.apache.tomcat:tomcat-jdbc:$tomcatVersion",
"org.apache.tomcat:tomcat-dbcp:$tomcatVersion"
'org.postgresql:postgresql:42.2.12'
'log4j:log4j:1.2.17'
}
tomcat {
httpProtocol = 'org.apache.coyote.http11.Http11Nio2Protocol'
ajpProtocol = 'org.apache.coyote.ajp.AjpNio2Protocol'
httpPort = 8088
}
并在Win10中产生输出:
>gradlew.bat tomcatRun
> Configure project :
> Task :compileJava
> Task :processResources UP-TO-DATE
> Task :classes
> Task :tomcatRun
此时它再次挂起大约 3 分钟,CPU 负载低于 18%,然后继续:
LOG .......
LOG 2020-04-24 12:45:10,971 [Execution worker for ':'] INFO : - ActiveMq URL tcp://localhost:61620
Started Tomcat Server
The Server is running at http://localhost:8088/racy10
<=========----> 75% EXECUTING [4m 2s]
因此(根据我的 POV)无缘无故地在某些任务之后或之前 gradle 执行挂起 3 分钟。
欢迎任何提示和想法!
TIA
【问题讨论】:
-
在没有 Gradle 的情况下,
npm run build需要多长时间?我认为您可能会在那里度过大部分“冻结”时间。 -
npm run build最多需要 20 秒 -
尝试使用
--info和/或--debug运行构建。愿这会给你一个线索。 -
@thokuest 对 gradle 用户来说没有什么特别之处。我在 gradle 论坛上发布了一个带有一些痕迹 discuss.gradle.org/t/… 的问题
-
对于此类问题,我总是会创建一个build scan 并检查一下。
标签: java node.js tomcat gradle embedded-tomcat