Как распространить бинарную зависимость в maven? - PullRequest
1 голос
/ 05 ноября 2011

Я пытаюсь преобразовать проект из ant в maven.

Модульные тесты зависят от стороннего бинарного фляги, который недоступен ни в каких общедоступных репозиториях maven.

Какя заставлю maven справиться с этой ситуацией?Я нашел два решения, ни одно из которых не является приемлемым.Во-первых, использовать системную зависимость;это не работает, потому что a) зависимость должна быть только для тестов, и b) зависимость не найдена eclipse после генерации проекта eclipse.

Второй - вручную установить зависимость в локальном хранилище.,Кажется, это рекомендуемый способ.Я не хочу этого делать, потому что я хочу, чтобы пользователи могли создавать и тестировать с помощью простого mvn test.Если пользователям необходимо прочитать документ и скопировать / вставить некоторые команды оболочки, чтобы иметь возможность собирать и тестировать, то что-то не так.

Полагаю, будет нормально, если сам maven установит зависимость в локальном репозитории как частьсборки - возможно ли это, и если да, то как?

Aled.

Ответы [ 2 ]

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

Прежде всего, я бы использовал менеджер репозитория, такой как nexus, и установил туда эту зависимость.

Однако есть и другое решение. Вы можете включить этот сторонний jar в свой проект, и с помощью тестового плагина вы можете настроить его для включения в classpath, например:

 <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.10</version>
    <configuration>
      <additionalClasspathElements>
        <additionalClasspathElement>path/to/additional/resources</additionalClasspathElement>
        <additionalClasspathElement>path/to/additional/jar</additionalClasspathElement>
      </additionalClasspathElements>
    </configuration>
  </plugin>

Кстати, я надеюсь, что вы знаете, что maven выполняет плагин surefire для запуска тестов по умолчанию в жизненном цикле.

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

Вы можете посмотреть install: install-file . Вы можете выполнить его на ранней стадии вашего проекта (validate или initialize) с помощью стандартными средствами .

Во-вторых, если это не удастся из-за отсутствия зависимости в том же проекте, есть еще несколько вариантов. Один из них - вызвать плагин ant через antrun для установки артефакта.

Или создайте дополнительный модуль, не зависящий от вашего артефакта, который будет выполняться до основного модуля, и попросите этот модуль установить артефакт, как описано ранее.

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