Проект Maven в Netbeans: как добавить зависимости как в «Зависимости», так и в «Тестовые зависимости»? - PullRequest
4 голосов
/ 15 февраля 2012

У меня есть проект Maven в среде IDE Netbeans 7.1.

Я хотел бы добавить одну и ту же зависимость как к Dependencies, так и к Test Dependencies.

. Добавление одного удаляет его издругой.

Дублирование зависимости в pom.xml и включение в один из них:

<scope>test</scope>

.. тоже не работает.

Справка!

Подробнее:

Предположим, у меня есть проекты MyProject и MyDependency.

MyProject содержит MyDependency в качестве области по умолчанию (т.е.Зависимость compile scope):

<dependencies>
          <dependency>
                    <groupId>my.group.id</groupId>
                    <artifactId>AnArtifactId</artifactId>
                    <version>1.0-SNAPSHOT</version>
          </dependency>
</dependencies>

MyProject содержит несколько классов в папке Source Packages (т.е. MyProject/src/main/...), которые ссылаются на классы в пакетах MyDependency source .Они работают отлично;Netbeans не показывает красные флаги ошибок, и эти классы успешно компилируются.

MyProject содержит несколько классов в папке Test Packages (т.е. MyProject/src/test/...), которые ссылаются на классы в MyDependency test пакеты.Netbeans отображает красные флаги ошибок в MyProject для этих ссылок.

MyDependency был очищен, собран и сохранен в локальном репозитории Maven с использованием mvn clean install -DskipTests.Выполнение этой же команды для MyProject вызывает ошибки только в тестовых классах;нетестовые классы компилируются нормально.

Ответы [ 2 ]

2 голосов
/ 15 февраля 2012

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

<dependencies>
          <dependency>
                    <groupId>my.group.id</groupId>
                    <artifactId>AnArtifactId</artifactId>
                    <version>1.0-SNAPSHOT</version>
          </dependency>
          <dependency>
                    <groupId>my.group.id</groupId>
                    <artifactId>AnArtifactId</artifactId>
                    <version>1.0-SNAPSHOT</version>
                    <scope>test</scope>
                    <type>test-jar</type>
          </dependency>
</dependencies>

Указание только <scope>test</scope> будет означать, что jar, содержащий исходные пакеты MyDependency, должен использоваться в качестве зависимости для тестовых пакетов MyProject.

Однако, указав <type>test-jar</type> тестовый jar (то есть jar, содержащий тестовые пакеты) для MyDependency, используется в качестве зависимости для тестовых пакетов MyProject.

0 голосов
/ 15 февраля 2012

Dependencies автоматически Test Dependencies, но не наоборот.

...