Ресурсы для тестирования процессов Maven - PullRequest
1 голос
/ 03 ноября 2011

У меня есть проект maven, который имеет зависимость области тестирования от артефакта.Но по какой-то причине артефакт недоступен в новой среде, в которой я запускаю этот проект.Таким образом, шаг process-test-resources завершается неудачно, поскольку maven не может найти артефакт для копирования.

Кто-нибудь знает способ предотвратить сбой сборки maven, если тестовый артефакт не найден?Или может изменить шаг, чтобы исключить этот артефакт?Я использую флаг -DskipTests = true, поэтому мне кажется, что этот артефакт зависимости тестовой области не должен иметь значения.

Заранее спасибо!

Ответы [ 5 ]

1 голос
/ 03 ноября 2011

Вы можете изменить pom, чтобы он больше не имел этой тестовой зависимости, и удалить все, что ему нужно, или просто найти артефакт.

0 голосов
/ 16 декабря 2013

Использование -Dmaven.test.skip = true даст вам БОЛЬШЕ того, что вам нужно. Это зависит от того, какой плагин вы используете для обработки своих тестовых ресурсов.

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

Например: http://mojo.codehaus.org/exec-maven-plugin/exec-mojo.html

Это имеет конфигурацию пропуска. Внесение следующих изменений в вашу конфигурацию для этого выполнения пропустит это действие.

<configuration>
  ...
  <skip>${maven.test.skip}</skip> 
</configuration>

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

Это действительно полезно для сред разработки, таких как eclipse, где он использует mvn для обновления классов при каждой компиляции. Если вы можете пропустить медленное действие, вы также получите ускорение.

0 голосов
/ 03 ноября 2011

Предполагается, что тесты должны быть успешными для сборки.Вы можете пропустить тесты, но сборка автоматически пропускает тесты только потому, что она не может их запустить, кажется опасной - по крайней мере, это теория и объясняет, почему то, что вы пытаетесь сделать, не легко в maven.

Я никогда не делал этого, но вы могли бы решить проблему с помощью условной сборки и активировать жизненный цикл теста только при наличии зависимости:

    <profiles>
      <profile>
        <activation>
          <-- something relying on dependency presence/absence? -->
        </activation>
        <skipTests>true</skipTests>
      </profile>
    </profiles>

Я не мог найти легкуюспособ активации при наличии зависимости, так что вам, вероятно, придется использовать файловую активацию (ew ....) - для чего, в свою очередь, может потребоваться «поддельный» проект, чтобы попытаться сначала загрузить dep для вас (там можно сделать dep необязательным).

Это может даже усложниться, если skipTests в этом контексте не работает, и вам нужна сборка на основе профиля.

Если это становится достаточно уродливоя бы просто разделил проект на две части (jars / tests) - таким образом, витая логика не «загрязнит» основной проект - и неприятные вещи (antrun - ваш друг!) вТестовый проект не так плох, как этот проект, в конечном счете, не производит ничего, от чего зависят другие.

0 голосов
/ 03 ноября 2011

Если у вас есть файл артефакта, вы можете попытаться установить его вручную в локальный репозиторий.

Это прямо из maven-install-plugin doc

mvn install:install-file  -Dfile=path-to-your-artifact-jar \
                          -DgroupId=your.groupId \
                          -DartifactId=your-artifactId \
                          -Dversion=version \
                          -Dpackaging=jar \
                          -DlocalRepositoryPath=path-to-specific-local-repo

Я бы не рекомендовал это как общее решение, но оно будет работать до тех пор, пока вы не решите проблемы своей среды.

0 голосов
/ 03 ноября 2011

Вы можете попробовать изменить свой параметр на -Dmaven.test.skip=true, но в документации явно не упоминается пропуск управления тестовыми ресурсами в явном виде: см. http://maven.apache.org/plugins/maven-surefire-plugin/examples/skipping-test.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...