Ошибка maven: зависимость элемента не может иметь детей-символов

Я не уверен, что произошло, но POM для моего проекта больше не работает. Он жалуется на элемент зависимостей. Неужели зависимость больше не существует? Что означает эта ошибка? Чтобы быть ясным, я не изменял POM, он просто не работает.

Точное сообщение об ошибке - cvc-complex-type.2.3: Element 'dependency' не может иметь символ (дочерние элементы), поскольку тип содержимого этого типа является только элементом.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>


  <groupId>com.medfusion</groupId>
  <artifactId>Estatements-core</artifactId>
  <version>14.6.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>Estatements-core</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
<build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>1.6</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <transformers>
                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                  <mainClass>com.group.id.Launcher1</mainClass>
                </transformer>
              </transformers>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-release-plugin</artifactId>
        <version>2.3.2</version>
      </plugin>
    </plugins>
  </build>
<repositories>
    <repository>
        <id>nexus-qhg-dev</id>
        <name>Medfusion repo</name>
        <url>http://maven.qhg.local/nexus/content/groups/qhg-dev</url>
    </repository>
</repositories>

<dependencies>
  <dependency>
    <groupId>com.intuit.health</groupId>
    <version>14.6.0-SNAPSHOT</version> 
    <artifactId>notification-reference</artifactId>    
  </dependency> 
  <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
  </dependency>
  <dependency>
    <groupId>com.intuit.health</groupId>
    <version>ihg-depot-trunk-SNAPSHOT</version>
    <artifactId>attachment-reference</artifactId>
  </dependency>
  <dependency>
    <groupId>com.intuit.health</groupId>
    <version>ihg-depot-trunk-SNAPSHOT</version>
    <artifactId>eCommunication-core</artifactId>    
  </dependency> 
</dependencies>

</project>

Ответ 1

Как упоминалось в комментарии Powerlord, эта ошибка связана с неправильным анализом XML файла, поскольку между a/some есть странные и скрытые символы <dependency>...</dependency> тег (ы). Эти символы могут поступать из папок с копиями из Интернета.

Чтобы решить проблему, удалите все пробелы и символы новой строки между определениями тегов <dependency>...</dependency> и верните их в свой редактор.

Ответ 2

Недавно я столкнулся с этой проблемой и ошибкой, показанной в xsi: schemaLocation файла pom.xml, и это была проблема копирования и вставки с разных веб-сайтов, представляющих невидимый непространственный характер. Чтобы проверить, какая строка имеет скрытый символ, я беру копию файла pom и вставляю ее в пустой файл слова и включаю "Показывать маркер абзаца и другое форматирование".

Ответ 3

Это связано с тем, что, как говорили другие, в pom.xml вставляются непечатаемые, но недопустимые символы XML, обычно между элементами XML. В моем случае это часто происходит, когда я копирую и вставляю из другого места, обычно документацию, статью, учебник и т.д. В моем браузере.

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

Ответ 4

Это потому, что вы пытались скопировать, вставить зависимости из Интернета, и есть некоторые специальные или скрытые символы, которые вызывают ошибки этого типа. Поэтому сначала скопируйте в текстовый файл, затем вставьте его в код, чтобы избежать ошибок такого типа.