AEM 6.1 Sightly Java类不会在构建时更新

时间:2015-11-05 19:12:51

标签: java aem sightly

我最近开始在AEM 6.1中使用Sightly,它允许Java文件与组件位于同一文件夹中并使用WCMUse类。但是,我注意到每当我执行Maven构建时,涉及对其中一个Java文件的更改,页面功能的操作就像Java类没有被更改一样,尽管crx中的Java文件确实包含了这些更改。作为一种解决方法,我已经能够修改crx中的Java文件,保存它,然后将其修改回来并再次保存以更新功能,但我在所有实例上都没有这个功能。

任何人都知道如何在构建期间或之后强制重新编译组件中的Sightly Java?

3 个答案:

答案 0 :(得分:2)

要验证的一些事项:

1-在进行maven构建/部署时是否更改了软件版本?有时,如果你的zip或jar中没有-SNAPSHOT,那么当maven部署时,AEM不会更新代码。

2-在CRX / DE中有一个/ var / classes / sightly你可以删除已编译的类,我想即使在系统控制台中也有一个条目

希望得到这个帮助。

答案 1 :(得分:1)

Bambara实际上帮助我找到了我需要的答案。事实证明/ var / classes文件夹保存已编译的正常文件,但它在构建时自然不会重新编译。在构建时删除该文件夹,然后运行使用正确代码的页面强制重新编译并显示新功能。

答案 2 :(得分:0)

希望其他人能够回答为什么会发生这种情况以及如何避免这种情况。面对这种情况,我开始认为将Java代码放入组件文件夹并不是一个好主意。使用带有Services / Core捆绑的maven多模块项目,然后所有Java代码都可以去那里。从视图中调用它只需要使用完全限定的类名(包括包)。将Java放入服务包具有以下好处

  • 允许扩展类。出于某种原因,从组件文件夹扩展类时,编译是不可预测的。
  • 更轻松的IDE设置。视图模块中组件文件夹中的Java类具有Sling特定的文件夹结构,因此让IDE提供代码辅助需要额外的工作。
  • Sling文件夹约定遵循URI实践,可能有破折号,Java包不能有破折号... import apps.my-cool-project.components.pages.base.Header; //不会编译