1

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

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

4

2 回答 2

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

这些设置通常development.propertieseserver/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、filebundles、urlrewriting 和本地化标签。基本上不是java的一切。当涉及到 java 时,事情变得有点复杂。

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

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

于 2018-04-21T11:51:37.647 回答
1

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

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

当然,您必须使用“gradlew publish”编译所有这些代码。如果您在配置框架中进行了更改,您还需要重新启动服务器。

在开发过程中,您不需要“gradlew deployCartridges”来更改代码,因为服务器正在从您的项目目录中读取代码。

于 2018-04-21T09:18:33.860 回答