Ошибка CruiseControl «Обнаружен неиспользуемый узел» при добавлении xmlns в узел Project - PullRequest
5 голосов
/ 14 июля 2011

Я пытаюсь использовать функциональность препроцессора Cruise Control , чтобы разбить мою конфигурацию на более мелкие многократно используемые участки.Я могу использовать отличную функцию включения из корневого узла cruisecontrol, например, так:

<cruisecontrol xmlns:cb="urn:ccnet.config.builder">
    <cb:include href="child.config" />
</cruisecontrol>

Если я попытаюсь использовать другое включение в дочерней конфигурации (например, так):

<project name="TestProject" xmlns:cb="urn:ccnet.config.builder">    
    <cb:include href="grandchild.config" />
</project>

Я получаю следующую ошибку:

ThoughtWorks.CruiseControl.Core.Config.ConfigurationException: Обнаружен неиспользуемый узел: xmlns: cb = "urn: ccnet.config.builder"

Если я удаляю оператор пространства имен xmlns, я получаю эту ошибку вместо:

ThoughtWorks.CruiseControl.Core.Config.ConfigurationException: файл конфигурации содержит недопустимый xml: E: \ Build \ Config \ AppRiver.Tools.BuildAutomation \ CruiseControl \ ccnet.config ---> System.Xml.XmlException: 'cb' - это необъявленное пространство имен.

И, наконец, если я уберу префикс "cb" втег, я получаю эту ошибку

Unused node detected:     Unused node detected: <define buildFile="CP.WEB.Dev.SanityCheck.CI.build" />

У меня нет идей - любая помощь приветствуется!

Ответы [ 4 ]

5 голосов
/ 09 августа 2012

Чтобы использовать <cb:include>, тег <cb:include> должен иметь определенное пространство имен xml И включенные файлы должны начинаться с элемента с определенным в нем пространством имен xml. Это в документации, но его легко пропустить.

<cruisecontrol xmlns:cb="urn:ccnet.config.builder">
  <cb:include href="projectFile.xml" xmlns:cb="urn:ccnet.config.builder"/>
</cruisecontrol>

projectFile.xml

<cb:config-template xmlns:cb="urn:ccnet.config.builder">
  <project>
      ...
  </project>
</cb:config-template>

Кроме того, если вы добавляете информацию о версии ccnet, как указано здесь , вам необходимо также включить это пространство имен во включаемый файл.

Итак, ccnet.config выглядит так:

<cruisecontrol xmlns:cb="urn:ccnet.config.builder" xmlns="http://thoughtworks.org/ccnet/1/8">
  <cb:include href="projectFile.xml" xmlns:cb="urn:ccnet.config.builder"/>
</cruisecontrol>

и projectFile.xml изменятся на

<cb:config-template xmlns:cb="urn:ccnet.config.builder" xmlns="http://thoughtworks.org/ccnet/1/8">
  <project>
      ...
  </project>
</cb:config-template>
2 голосов
/ 10 июня 2014

Это не обязательно проблема с тем, как вы включаете файл Это более общая ошибка. Я столкнулся с проблемой, когда случайно пропустил тег в выражении управления исходным кодом.

Я думаю, что это означает, что вставленный вами xml не был понят элементом, который вы пытались использовать в

У меня случайно было это (которое работает для управления несколькими источниками):

<cb:define name="Hg">
    <repo>$(repo)</repo>
    <executable>$(hgExePath)</executable>
    <branch>default</branch>
    <workingDirectory>$(dir)</workingDirectory>
</cb:define>

Используется примерно так:

<cb:define name="SourceControl">
    <sourcecontrol type="hg">
        <cb:Hg repo="$(repo)" dir="." />
    </sourcecontrol>
</cb:define>

Поскольку sourcecontrol (собственный ccnet) уже указывал type = "hg", он не ожидал увидеть элемент hg

1 голос
/ 06 сентября 2011

Круиз-контроль выдает ошибку, если xmlns помещен в тег проекта. Это похоже на ошибку. Теперь я перешел с круиз-контроля на Хадсон и очень доволен им.

1 голос
/ 14 июля 2011

Попробуйте удалить включенного внука из тегов проекта.Кроме того, мы включаем xmlns: cb = "urn: ccnet.config.builder" в наш тег Include.

<cb:include href="grandchild.config" xmlns:cb="urn:ccnet.config.builder"/>
...