什么是buildout:zcml选项?

时间:2015-05-20 22:09:16

标签: plone buildout zcml

在我的一个项目中' buildout.cfg文件我有这样的东西:

[buildout]
...
zcml =
    my.package
    plone.reload
...

一切正常但我仍然对某些包裹在这里需要列出的原因以及其他人为什么不这样做感到困惑。

它的目的是什么?

在进行一些研究时,我最终在https://pypi.python.org/pypi/munin.zope/2.1上说如果你使用z3c.autoinclude和plone(+3.3)你不需要它

这是否意味着如果分发在其setup.py上有z3c.autoinclude slug,即

entry_points="""
# -*- Entry points: -*-
[z3c.autoinclude.plugin]
target = plone
""",

你不必关心buildout:zcml

2 个答案:

答案 0 :(得分:5)

与[buildout]部分中的[instance] recipe = plone.recipe.zope2instance eggs = Plone zcml = ${buildout:zcml} 参数相关的没有固有功能,而不是定义*.php?page=%20%209999%20%20 的方便位置。

通常,[instance]部分会引用它:

*.php?page=  9999  

The use of buildout:zcml similar to buildout:eggs is an anti-pattern, IMO

答案 1 :(得分:1)

在buildout配置文件中,System.out可以通过两种方式使用:

  • 指定具有预定义功能的名称的值
  • 为值指定名称以避免复制和粘贴。

name=value是第二种情况的一个例子。

换句话说,使用buildout:zcml的唯一原因是需要在不同的地方使用它的价值。

但是,当我需要重用buildout:zcml时,我宁愿在zcml部分中定义它。并在另一部分重用该值。