我使用Blade CLI创建了一个主题,如https://dev.liferay.com/ja/develop/reference/-/knowledge_base/7-0/theme-template所述。 因此该项目使用 Gradle ,并在构建时生成一个war文件,我可以在liferay中的deploy文件夹中复制该文件。
在liferay 7中是否有一种方法,当我更改像css文件这样的静态资源时,在开发时几乎可以立即看到这种变化?
我找到的解决方案是每次创建一个新的主题war文件并将其部署在liferay中,但将liferay设置为开发模式,如此处所述https://dev.liferay.com/ja/develop/tutorials/-/knowledge_base/7-0/using-developer-mode-with-themes。这需要太多时间才能成为可接受的解决方案。
我正在考虑创建一个gradle任务,将任何已更改的静态文件复制到liferay中的特定文件夹中。然后,当页面刷新时,将捕获更改。问题是liferay 7附带了OSGi,除了ROOT之外,tomcat / webapps下没有任何内容。我真的不明白现在如何使用OSGi提供模板文件。
如果我无法使用liferay主题实现这一目标,那么liferay 7 mvc portlet是否有解决方案?我也可能有js或css文件。
有人能指出我正确的方向,或至少告诉我,我能做什么。感谢
答案 0 :(得分:1)
使用Liferay Theme Tasks的watch
任务时,它使用OSGi / GoGo界面来部署您的主题,使用您当地的工作副本构建文件夹作为源。
进行更改时,监视任务会重新启动OSGi模块。您的更改可能需要3秒才能显示。
我想像Gradle可以做类似的事情。
答案 1 :(得分:0)
Liferay缓存所有主题的css文件,有时甚至在部署之后。此缓存存储在两个位置:
<强> [liferay的家庭] /tomcat-8.0.32/work/Catalina/localhost/ROOT/css/http_/o/custom-theme-or-portlet 强>
<强> [liferay的家庭] /工作/定制的portlet 强>
我的开发环境是远程的,所以我创建了一个gradle任务,在每次新部署之前删除这些文件夹。我正在使用SSH gradle plugin进行部署,我在主题项目中创建了一个build.gradle,例如:
task buildThemeByGulp(type:Exec) {
if (System.getProperty('os.name').toLowerCase(Locale.ROOT).contains('windows')) {
commandLine 'cmd', '/c', 'gulp_build.bat'
}else{
commandLine './gulp_build.sh'
}
}
task deployToServerDev {
doFirst {
println 'Executing gulp build process.'
}
doLast {
ssh.run {
session(remotes.developServer) {
put from: "${cetelemProjectHome}/themes/cetelem-web-theme/dist/cetelem-web-theme.war", into: "/app/liferay-dxp-digital-enterprise-7.0-sp1/deploy"
}
}
}
}
task removeServerCache {
doLast {
println 'Removing cache folders in server'
ssh.run {
session(remotes.developServer) {
execute 'rm -rf /app/liferay-dxp-digital-enterprise-7.0-sp1/tomcat-8.0.32/work/Catalina/localhost/ROOT/css/http_/o/cetelem-web-theme'
execute 'rm -rf /app/liferay-dxp-digital-enterprise-7.0-sp1/work/com.cetelem.web.searcher.portlet-1.0.0'
}
}
}
}
deployToServerDev.dependsOn getTasksByName('removeServerCache',true)
deployToServerDev.dependsOn getTasksByName('buildThemeByGulp',false)
如果你的环境是本地的,那就更容易了。您将调整gradle任务。在主题根文件夹中创建这两个文件很重要:
(如果你有unix那么) gulp_build.sh:
#!/usr/bin/env bash
gulp clean
gulp build
(如果你有窗户) gulp_build.bat:
@echo off
gulp build
exit
最后执行 blade gw deployToServerDev (或 gradle deployToServerDev ),工作流将成为下一个:
答案 2 :(得分:0)
在命令提示符下对主题目录执行gulp watch
命令。
我希望这会对你有所帮助。