首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Liferay 7主题热部署

Liferay 7主题热部署
EN

Stack Overflow用户
提问于 2017-06-28 16:16:57
回答 3查看 1.7K关注 0票数 2

我使用Blade创建了一个主题,如这里所述,基/7-0/主题-模板。因此,该项目使用Gradle,生成war文件,我可以将其复制到救生筏中的deploy文件夹中。

在救生筏7中是否有一种方法,当我更改像css文件这样的静态资源时,在开发时几乎立即就会看到这种变化吗?

我找到的一个解决方案是,每次创建一个新的主题war文件,并将其部署在救生筏中,但将其设置为开发模式,如这里所述,基本/7-0/使用-开发人员-模式与主题。这需要很长时间才能成为一个可接受的解决办法。

我正在考虑创建一个gradle任务,该任务复制已更改为救生圈中特定文件夹的任何静态文件。然后,当页面刷新时,就会捕获更改。问题是,救生筏7附带了OSGi,除了ROOT之外,tomcat/webapp下什么都没有。我真的不明白现在如何使用OSGi为模板文件提供服务。

如果我不能使用救生筏主题来实现这一点,那么有什么解决方案吗?我可能也有js或css文件在那里。

有人能给我指明正确的方向吗?或者至少告诉我我想做的事情是否可以完成。谢谢

EN

回答 3

Stack Overflow用户

发布于 2017-06-29 21:55:03

当使用watch任务Liferay主题任务时,它使用OSGi/GoGo接口部署主题,使用本地工作副本的构建文件夹作为源。

进行更改时,监视任务将重新启动OSGi模块。您的更改可能需要3秒才能出现。

我想在Gradle身上也可以做类似的事情。

票数 1
EN

Stack Overflow用户

发布于 2017-07-19 12:57:11

Liferay缓存所有主题的css文件,有时甚至在部署之后。这个缓存存储在两个地方:

liferay-home/tomcat-8.0.32/work/Catalina/localhost/ROOT/css/http_/o/custom-theme-or-portlet

liferay-home/work/custom-portlet

我的开发环境是远程的,所以我创建一个gradle任务来删除每个新部署之前的文件夹。我使用SSH级插件进行部署,并通过示例在主题项目中创建build.gradle:

代码语言:javascript
复制
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)

如果你的环境是本地的,那就更容易了。你可以调整分级任务。在主题根文件夹中创建这两个文件非常重要:

(如果您有unix ),gulp_build.sh:

代码语言:javascript
复制
#!/usr/bin/env bash
gulp clean
gulp build

(如果您有窗口) gulp_build.bat:

代码语言:javascript
复制
@echo off

gulp build

exit

最后,执行刀片gw deployToServerDev (或gradle deployToServerDev),下一个是工作流:

  1. 执行removeServerCache任务,删除主题静态文件缓存。
  2. 执行buildThemeByGulp任务,执行gulp清理和gulp构建任务(生成war)。
  3. 部署war文件以部署救生筏文件夹。
票数 0
EN

Stack Overflow用户

发布于 2018-03-30 12:33:20

在命令提示符下在主题目录上执行gulp watch命令。

我希望这能帮到你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44807788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档