我不确定这是否是一个有效的问题,但是在您需要停止应用程序服务器,运行gradlew publishgradlew 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类,我也强烈推荐它。但是,您需要为此获得许可证。

10-05 17:47