Maven верный плагин режим вилки - PullRequest
24 голосов
/ 06 июля 2010

По умолчанию плагин maven surefile запускает тесты в изолированной (разветвленной) среде. Вы можете переопределить это поведение с помощью следующей конфигурации:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <configuration>
        <forkMode>never</forkMode>
      </configuration>
    </plugin>
  </plugins>
</build>

Если вам нужно отладить ваши тесты, вы должны использовать этот фрагмент конфигурации. Или вы можете просто запустить maven build следующим образом:

$ mvn -Dmaven.surefire.debug tests

Запустится отладчик на порту 5005.

Мой вопрос: какие преимущества имеет стратегия разветвления и почему она выбрана в качестве стратегии по умолчанию для сборки maven? Разве не поддельная стратегия не является более простой и поэтому должна использоваться по умолчанию (maven - соглашение по инструменту конфигурации, правильно)?

Ответы [ 2 ]

16 голосов
/ 06 июля 2010

Мой вопрос: какие преимущества имеет стратегия разветвления и почему она выбрана в качестве стратегии по умолчанию для сборки maven?

По умолчанию Surefire разветвляет ваши тесты с использованием JAR-файла только для манифеста.ИМО, основные преимущества в том, что:

  1. обеспечивает изолированную среду с каким-то "правильным" путем к классам.
  2. защищает сам процесс maven (что хорошо, особенно если Maven запущен встроенным в вашу среду IDE ).

Разве стратегия nonForking не является более простой и поэтому должна использоваться по умолчанию?

Прямо для чего?Легкая отладка внутри IDE?Я полагаю, что это не было первоначальным намерением (и я предпочитаю подключать удаленный отладчик, если возникает необходимость, и для обеспечения безопасности основного процесса Maven).

См. Также

1 голос
/ 20 октября 2010
Режим разветвления

помогает загрузить системный путь к классу, если он установлен в значение «true» или «один раз». Но иногда установка fork mode = true выдает ошибки типа «слишком длинная строка команды» или «есть ошибки теста», если используется плагин maven-surefire 2.5 Чтобы избежать этой ошибки, рекомендуется использовать ser forkmode = никогда при использовании плагина suefire 2.5

...