Intershop 代码部署工作流程

Intershop code deploy workflow

我不确定这是否是一个有效的问题,但是在您需要停止应用程序服务器之前最少需要更改多少代码,运行 gradlew publishgradlew deployCartridges 然后启动应用服务器?

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

代码更改是指 Java 代码? 在开发模式下,您可以启用管道代码的重新加载。为此,Intershop 提供了一个特殊的类加载器。

如果您修改任何其他内容,您需要重新启动服务器类,除非您使用 JRebel 或其他可以检测代码修改的类加载器。

你当然必须用 "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

这些设置通常在eserver/server/share/system/config/cluster 下的development.properties 文件中。

还要确保您的环境设置为开发。文件 eserver/server/share/system/config/cluster/environment.properties 应配置如下:environment=development。此设置使 intershop 加载您在 development.properties 文件中的设置。

禁用页面缓存(在 SMC 中),包括 SLDSystem(此处缓存 urlrewriting)。我已经比我愿意承认的更多地陷入了这个陷阱。

使用此设置,您只需 edit/save 并刷新浏览器即可 isml/pipelines/pagelet、查询文件、webforms、filebundles、urlrewriting 和本地化标签。基本上不是 java 的一切。当谈到 java 时,事情变得有点复杂。

对于简单的管道,您可以 运行 gradlew publish 并且它应该重新加载。但是,它不会重新加载它所依赖的其他 类 已被修改。有时它根本不重新加载,我不得不承认,我不知道为什么会这样。对于组件框架中的新管道和更改,您总是需要compile/restart intershop。

就像 Rainer 提到的 Jrebel 可以重新加载你的普通 java 类 我也可以强烈推荐它。但是,您需要为此获得许可证。