Html asset versioning should allow fluent deployment


idempiere static assets (js, css) are cached, and in some circumstances cache cause unpredictable error

*Solution: *
Professional web developers implements static asset versioning.
When server static asset changed, server never provide same asset with same name, because maven build automatically generate version depends on strategy eg. suffix. or directory name versioned eg. asset/?/function.js OR asset/function_?.js

examples of 2 deployments
deployment at aug 20 10:06:01h eg. /asset/20200820100601/function.js
deployment at aug 20 14:00:26h eg. /asset/20200820140026/function.js

we have done it in jsp project, however this is depends on core developers policy, so no exact suggestion here how to implement it.




Carlos Ruiz
December 9, 2020, 3:15 PM

Reported by in mattermost


Carlos Ruiz
December 2, 2020, 7:36 PM

Hi ,

Just noticed that the zoom icons in report are broken:

I think is probably because of this ticket?

I tried in, both with and without ZK_THEME_USE_FONT_ICON_FOR_IMAGE


Carlos Ruiz

Heng Sin Low
November 29, 2020, 3:07 PM

Some Theme Migration Note:

  1. Theme resources reside at “src/web/theme/<theme_name>” instead of “/theme/<theme_name”

  2. Within the theme folder, reference to other theme resources must use full path (with “~./” prefix) instead of relative path. For e.g, at “theme/default/zul/login/login-left.zul”, the macroURI value is change from "vendor-logo.zul" to "~./theme/default/zul/login/vendor-logo.zul".

  3. Same goes for resource reference at *.css.dsp. For e.g, at theme/default/css/fragment/grid.css.dsp, “background-image: url(${c:encodeURL('/theme/default/images/EditRecord16.png')})” is replace with “background-image: url(${c:encodeURL('~./theme/default/images/EditRecord16.png')})”. Note the added “~./” prefix.

  4. For versioning, add a dummy javascript-module entry to src/metainfo/zk/lang-addon.xml (see the example entry for default theme. naming of the dummy js is arbitrary but it is probably easier to just use the pattern of idempiere.theme.<theme_name>). For external theme, you can use the same src/metainfo/zk/lang-addon.xml approach (at the src folder of your external theme plugin).

Heng Sin Low
November 29, 2020, 7:10 AM

Created .

Changes is not backward compatible as with the new approach, theme resources is loaded from classpath (src/web/theme/default for default theme) instead of from /theme folder.

Versioning of theme is through the use of dummy javascript-module entry at metainfo/zk/lang-addon.xml (idempiere.theme.default for default theme).

For theme plugin, I’ve created an example of this at (project org.idempiere.zk.iceblue_c.theme, branch IDEMPIERE-4421).

Carlos Ruiz
November 17, 2020, 10:46 AM

Hi ,

opened to cover the javascript case.

So, we could leave this ticket open just for the CSS case (maybe good to edit the subject).

Maybe the link from could be the solution for CSS case.


Carlos Ruiz



Heng Sin Low


Norbert Bede



Tested By


Fix versions