Элемент демона плагина Maven Jetty здесь не разрешен

Я пытаюсь настроить файл проекта pom.xml. Я хочу, чтобы он запускал сервер Jetty на этапе тестирования. Чтобы сделать это, я должен добавить элемент «демон» в плагин Jetty, как я сделал ниже, но IntelliJ предупреждает меня: «Элемент-демон здесь не разрешен». Не могли бы вы мне помочь? Какова причина?

<build>
    <plugins>
        <plugin>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-maven-plugin</artifactId>
            <version>9.2.11.v20150529</version>
            <configuration>
                <httpConnector>
                    <port>8083</port>
                </httpConnector>
            </configuration>
            <executions>
                <execution>
                    <id>start-jetty</id>
                    <phase>pre-integration-test</phase>
                    <goals>
                        <goal>run</goal>
                    </goals>
                    <configuration>
                        <scanIntervalSeconds>0</scanIntervalSeconds>
                        <daemon>true</daemon>
                    </configuration>
                </execution>
                <execution>
                    <id>stop-jetty</id>
                    <phase>post-integration-test</phase>
                    <goals>
                        <goal>stop</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

person Arda Güney    schedule 25.01.2016    source источник


Ответы (2)


На самом деле это ошибка IntelliJ Idea. Иногда он неправильно распознает некоторые свойства конфигурации. У плагина есть это свойство, поэтому у вас действительно нет другого выбора, кроме как просто игнорировать ошибку в IDE. Плагин будет работать как положено.

person Dzmitry Paulenka    schedule 25.01.2016
comment
Есть ли ссылка на эту ошибку, которую мы могли бы проголосовать? Очень раздражает необоснованная ошибка, но я не хочу отключать проверку схемы для моего pom.xml. - person Joffrey; 01.04.2016
comment
удар. Я бы тоже хотел, чтобы это было исправлено. - person Johan Tidén; 25.05.2016
comment
Вы уверены, что daemon является разрешенной конфигурацией для цели run? Я вижу это только на deploy-war цели. eclipse.org/jetty/documentation/9.4.x/ - person jordanpg; 21.09.2017

Я знаю, что опоздал на четыре года, но я расследую тот же вопрос.

Если вы обновите зависимость Jetty до 10.0.0, ошибка устранена: daemon больше не выдает эту ошибку.

Однако все становится странно, если вы обновитесь до 11.0.0 (последняя версия на Maven Central):

  • daemon снова начинает выдавать ошибку,
  • scanIntervalSeconds тоже выдает ошибку, чего раньше никогда не было.

Итак, я провел некоторые исследования.

Я подозреваю, что вы взяли свой код из используя причал и maven-failsafe-plugin< /а>.

Я прочитал кое-что из Руководства по программированию Jetty 11 и нашел этот абзац:

Вот пример, который включает сканирование изменений каждые десять секунд и устанавливает путь контекста веб-приложения на /test:

<plugin>
  <groupId>org.eclipse.jetty</groupId>
  <artifactId>jetty-maven-plugin</artifactId>
  <version>{VERSION}</version>
  <configuration>
    <scan>10</scan>
    <webApp>
      <contextPath>/test</contextPath>
    </webApp>
  </configuration>
</plugin>

Кроме того, я нашел другой абзац:

Вот пример использования этапов сборки Maven перед интеграционным тестом и после интеграционного теста для запуска выполнения и завершения Jetty:

<plugin>
  <groupId>org.eclipse.jetty</groupId>
  <artifactId>jetty-maven-plugin</artifactId>
  <version>{VERSION}</version>
  <configuration>
    <scan>10</scan>
    <stopKey>foo</stopKey>
    <stopPort>9999</stopPort>
  </configuration>
  <executions>
    <execution>
      <id>start-jetty</id>
      <phase>pre-integration-test</phase>
      <goals>
        <goal>start</goal>
      </goals>
      <configuration>
        <scan>0</scan>
      </configuration>
    </execution>
    <execution>
      <id>stop-jetty</id>
      <phase>post-integration-test</phase>
       <goals>
         <goal>stop</goal>
       </goals>
     </execution>
  </executions>
</plugin>

Таким образом, я заменил scanIntervalSeconds вхождений на scan. В результате IntelliJ больше не сигнализировал об ошибке при первом появлении. Однако второе вхождение по-прежнему вызывает ошибку.

Что касается daemon...

В старой документации Jetty 9:

Например, вы можете настроить плагин так, чтобы ваше веб-приложение запускалось в начале ваших модульных тестов и останавливалось в конце. Для этого нужно настроить пару сценариев выполнения для плагина Jetty. Вы используете этапы сборки Maven перед интеграционным тестом и после интеграционного теста, чтобы инициировать выполнение и завершение Jetty:

<plugin>
  <groupId>org.eclipse.jetty</groupId>
  <artifactId>jetty-maven-plugin</artifactId>
  <version>{VERSION}</version>
  <configuration>
    <scanIntervalSeconds>10</scanIntervalSeconds>
    <stopKey>foo</stopKey>
    <stopPort>9999</stopPort>
  </configuration>
  <executions>
    <execution>
      <id>start-jetty</id>
      <phase>pre-integration-test</phase>
      <goals>
        <goal>start</goal>
      </goals>
      <configuration>
        <scanIntervalSeconds>0</scanIntervalSeconds>
      </configuration>
    </execution>
    <execution>
      <id>stop-jetty</id>
      <phase>post-integration-test</phase>
       <goals>
         <goal>stop</goal>
       </goals>
     </execution>
  </executions>
</plugin>

daemon здесь даже не упоминается. Так что вполне возможно, что в документации Failsafe есть ошибка, и daemon на самом деле не нужен.

Заключить:

  • Я понятия не имею, почему daemon работало на 10, а не на 11.
  • Вроде и не надо...
person Community    schedule 05.01.2021