gpt4 book ai didi

java - 使用 Gradle/Gretty 中的就地 Web 应用程序和 Assets 管道快速重新加载

转载 作者:太空宇宙 更新时间:2023-11-04 12:49:03 26 4
gpt4 key购买 nike

我正在使用 Gretty 通过 gradle appRun 运行我的 Web 应用程序。我也在使用the Gradle Asset Pipeline plugin将我的 Less 文件编译为 CSS。

我想与 Gretty's Fast reload feature 集成这样当我更改 Less 文件时,它会自动编译它并将 CSS 复制到就地 Web 应用程序。

我已经在我的 build.gradle 文件中使用 Gretty 的 onScanFilesChanged 设置实现了一个解决方案:

buildscript {
dependencies {
classpath 'org.akhikhl.gretty:gretty:1.2.4'
classpath 'com.bertramlabs.plugins:asset-pipeline-gradle:2.7.0'
classpath 'com.bertramlabs.plugins:less-asset-pipeline:2.7.0'
}
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'war'
apply plugin: 'org.akhikhl.gretty'
apply plugin: 'com.bertramlabs.asset-pipeline'

dependencies {
// ...
}

assets {
excludes = ['bootstrap/**']
}

war.dependsOn assetCompile

gretty {
servletContainer = 'tomcat8'
enableNaming = true
contextPath = '/'

// This affects the war task as well
webappCopy {
from 'build/assets', { into 'stylesheet' }
}

afterEvaluate {
prepareInplaceWebAppFolder.dependsOn assetCompile
}

scanDir "src/assets"
fastReload "src/assets"
onScanFilesChanged { List<String> files ->
if (files.findAll { it.endsWith ".less" }.size() > 0) {
assetCompile.compile()
}
}
}

有没有一种更简洁的方法可以做到这一点,并且在 build.gradle 文件中不涉及太多代码?

最佳答案

您所描述的行为是 Gretty 默认执行的行为。 documentation状态:

fastReload: When set to true (the default), webAppDir folder (which is typically src/main/webapp) is set as being fast-reloaded. That means: whenever some files within webAppDir are changed, these files are copied into running web-app without web-app restart.

这意味着,src/main/webapp 子目录中的任何更改都会触发 Gretty 的快速重新加载,但在此目录之外进行的任何更改都会触发服务器重新启动。

解决问题的更明智的方法是将 gradle assetsCompile 的输出路径覆盖到 src/main/webapp 的子目录,或者在 build.gradle 文件中将复制任务 Hook 到它,如下所示:

task copyAssets(type: Copy) {
from buildDir + '/assets'
into webAppDir + '/stylesheet'
}

copyAssets.shouldRunAfter assetsCompile

关于java - 使用 Gradle/Gretty 中的就地 Web 应用程序和 Assets 管道快速重新加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36027940/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com