0

在开发过程中,我们需要更改捆绑包中特定文件的内容,并且能够在应用程序中看到更改的文件内容,而无需重新编译/重新捆绑/重新安装捆绑包。Bundle.getEntry()每次应用程序需要其内容时,都会读取文件。

使用 Eclipse PDE 和 Equinox 很简单,因为从 Eclipse 环境启动的 OSGi 框架将项目文件夹视为未打包的包。每次应用程序读取资源内容时,都会反映项目文件夹中文件的更改。

如果我理解正确,bndtools 总是在检测到资源更改时重新打包捆绑包。但是对于具有数百个资源文件的项目,它需要太多时间。是否有可能实现与 Eclipse PDE 中类似的行为?最好在 Apache Felix 中?我们仅在开发/调试期间并且仅当应用程序从 IDE 启动时才需要此类功能。资源在生产中永远不会改变。

具体来说——在我们的应用程序中,有很多 LESS 文件被编译成几个 CSS。CSS 在任何 LESS 文件更改后立即生成。这是通过 gulp 和 node.js 实现的。当页面重新加载时,我们需要(几乎)立即看到更改的 CSS 文件。请注意,我们没有使用 OSGi HTTP 服务。

4

2 回答 2

0

我有一些应用程序在其中使用捆绑资源进行开发,并且效果很好。(请参阅使用此模型的OSGi enRoute。)只要包不是那么大,它们就可以在亚秒级时间内构建。所以最好的建议是看看你是否可以将你的代码/资源分解成多个更小的模块。越小,它构建的越快。

如果这确实是一个问题,并且我认为这是一种绝望的尝试,您当然可以更改调用代码getEntry以查看文件系统。在开发模式下(通过配置管理员设置),您可以从那里获取它。

于 2016-08-01T09:39:27.787 回答
0

不,这是不可能的。

如果 Bndtools 打包时间过长,则可能表明您的包太大,您应该尝试更多地模块化。

于 2016-07-26T19:50:59.680 回答