我不确定这是否是一个有效的问题,但是在您需要停止应用程序服务器,运行gradlew publish
,gradlew deployCartridges
然后启动应用程序服务器之前,最少的代码更改量是多少?
我尚不清楚我可以在多大程度上进行代码更改。
首选的开发工作流程是什么?
最佳答案
首先,请确保已正确配置intershop以重新加载代码。您应该设置以下设置:
# switch auto reload on for all Intershop artifacts
intershop.extensions.CheckSource=true
intershop.queries.CheckSource=true
intershop.pipelines.CheckSource=true
intershop.pagelets.CheckSource=true
intershop.webforms.CheckSource=true
intershop.template.CheckSource=true
intershop.template.CheckSourceModified=true
intershop.template.CompileOnStartup=false
intershop.template.PrintTemplateName=true
intershop.template.PrintTemplateMarker=true
intershop.template.isfilebundle.CheckSource=true
intershop.localization.CheckContent=true
#let intershop run on all cpu cores
intershop.cpu.id=
#dont let session timeout so quickly
intershop.session.TimeOut=60
# switch all preload functionality off
intershop.pipelines.PreloadFromCartridges=
intershop.pipelines.PreloadFromSites=
intershop.pipelets.PreloadFromCartridges=
intershop.webforms.Preload=false
intershop.queries.Preload=false
# Monitor the urlrewrite.properties files for modifications
# and refresh when needed.
intershop.urlrewrite.CheckSource=true
# The time interval in seconds, after which a lookup should be performed
# if CheckSource is "true". 0 means every time (not recommended).
intershop.urlrewrite.CheckSourceInterval=5
这些设置通常在
development.properties
下的eserver/server/share/system/config/cluster
文件中。还要确保您的环境已设置为开发环境。文件
eserver/server/share/system/config/cluster/environment.properties
应该具有以下配置:environment=development
。此设置使intershop将您的设置加载到development.properties
文件中。禁用页面缓存(在SMC中),包括SLDSystem(在此处缓存URLrewriting)。我陷入了这个陷阱,比我想承认的要多。
通过此设置,您可以编辑/保存和刷新浏览器,以获取isml / pipelines / pagelet,查询文件,webforms,filebundle,urlrewrite和本地化标签。基本上不是Java的所有内容。当涉及到Java时,事情变得有些复杂。
对于简单的Pipelet,可以运行
gradlew publish
,它应该重新加载。但是,它不会重新加载它所依赖的其他类。有时候,它根本不会重新加载,我不得不承认,我不知道为什么会这样。对于新的Pipelet和组件框架中的更改,您始终需要编译/重新启动intershop。就像Rainer提到的那样,Jrebel可以重新加载普通的Java类,我也强烈推荐它。但是,您需要为此获得许可证。