Intershop代码部署工作流程

uni*_*dit 1 java intershop

我不知道这是否是一个有效的问题,但什么是代码变化最少的,你需要停止应用程序服务器,运行前gradlew publish,gradlew deployCartridges然后启动应用程序服务器?

我尚不清楚我可以在多大程度上进行代码更改。首选的开发工作流程是什么?

Wil*_*tse 5

首先,请确保已正确配置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
Run Code Online (Sandbox Code Playgroud)

这些设置通常位于下的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类,我也强烈推荐它。但是,您需要为此获得许可证。