Как мне включить тестовый jar-файл зависимости в развертывание проекта Maven?

У меня есть два проекта, foo и foo-web под com.example группа. foo-web зависит от foo .

Чтобы иметь возможность разрабатывать UI-часть приложения без зависимости от внешних сервисов, в foo были реализованы фиктивные DAO (они возвращают статические данные, поэтому нам не нужно подключаться к базам данных и т. Д.).

От нас требовалось переместить фиктивные классы в src / test / java . Это означает, что они не развертываются с foo.jar для войны, построенной из веб-проекта.Я нашел эти инструкции на сайте maven, но, похоже, они мне не подходят.

В foo pom.xml у меня есть:

        
          maven-jar-plugin
          
            
              test-jar
              test-compile
              
                test-jar
              
            
          
        

При запуске mvn install на foo-web , в цель foo Я бы получил два jar-файла: foo-1.0.0-SNAPSHOT.jar и foo-1.0.0-SNAPSHOT-tests.jar . Они оба отлично устанавливаются в локальном репозитории maven.

Раньше зависимость foo-web выглядела так:


    com.example
    foo
    1.0.0-SNAPSHOT

И это запускало развертывание foo-1.0.0-SNAPSHOT.jar во время войны. Теперь я хочу также развернуть jar-файл -tests , желательно только для «локального» профиля.

Я пробовал сделать это разными способами:


    local
    
        
            com.example
            foo
            1.0.0-SNAPSHOT
            test-jar
        
    

Это приводит к развертыванию исходного jar-файла с другим именем: com.example-foo.jar и не развертывает тестовый jar-файл. Я также пробовал использовать вместо в зависимости, но он по-прежнему делает то же самое. Я попытался использовать указанную выше зависимость вне профиля (наряду с другими), но она по-прежнему ведет себя так же.

Если я добавлю к основной зависимости (без добавления другой зависимости), я получу развернутую тестовую банку (с тем же именем, что и выше), но исходный код, естественно, не быть развернутым.

Единственное отличие от того, что написано в документации, состоит в том, что для тестовой зависимости не указана область видимости. Работает ли это только для тестовой области ? Можно как-то иначе развернуть тестовые классы.

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

Спасибо!


Обновление:

Я пробовал еще несколько способов, но все равно не работает.

Я добавил еще одно выполнение в maven-jar-plugin в проекте foo (зависимость, а не основной веб-проект), в котором я надеялся заставить maven компилировать тестовые классы в той же самой банке. в качестве основных и ссылаются на большой пакет другим классификатором. Я не мог заставить его работать:


  local-build
  package
  
    jar
  
  
    batman
    ${basedir}/src/test/java 
    
        **
    
  

jar был создан с помощью классификатора batman , но я не смог найти способ заставить его включать тестовые классы в jar ] Цель.

Сделав это, я понял, что это не зависит от отношения test-jar type / tests classifier / test scope. Когда я попытался указать новый jar, который я создаю, помимо основного, я получил то же поведение, что и при попытке включить jar -tests . Я проверил локальный репозиторий maven, и все банки из зависимого проекта устанавливаются нормально, поэтому проблема заключается в разрешении зависимостей основного проекта.

tl; dr

Все сводится к вопросу, можно ли включить одну и ту же зависимость в несколько классификаторов. Из того, что я видел до сих пор, ответ отрицательный - я всегда получаю jar com.example-foo , когда указываю одну и ту же зависимость несколько раз с разными классификаторами.

35
задан Alex Ciminian 27 October 2011 в 14:14
поделиться