Как настроить зависимость подпроекта в Знатоке, не развертывая банки?

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

У меня есть следующая структура проекта:

parent
   ---sub-project1
   ---sub-project2

sub-project2 должен иметь sub-project1 как зависимость.

Таким образом, у меня есть это в англичанине sub-project2:

 <dependencies>
    <dependency>
         <artifactId>sub-project1</artifactId>
        <groupId>mygroup</groupId>
        <version>1.0-SNAPSHOT</version>
    </dependency>

....

Когда я делаю это, Знаток пробует к dowload sub-project1.jar файл, который не существует, потому что это еще не готово к repo.

Я пытался поместить a <scope>import</scope> в зависимости, но это не работало ни один - тот же результат.

Таким образом, что я должен сделать, чтобы заставить Знатока смотреть на sub-project1 при создании sub-project2?

РЕДАКТИРОВАНИЕ Здесь является некоторыми отрывками англичанина:

Родитель:

<project 
   xmlns="http://maven.apache.org/POM/4.0.0" 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0          
    http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <prerequisites>
      <maven>2.0.9</maven>
   </prerequisites>
   <modules>
    <module>sub-project1</module>
    <module>sub-project2</module>
   </modules>
 ....

sub-project1:

<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <parent>
    <artifactId>parent</artifactId>
    <groupId>mygroup</groupId>
    <version>1.0-SNAPSHOT</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>

  <artifactId>sub-project1</artifactId>
....

sub-project2:

<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <parent>
    <artifactId>parent</artifactId>
    <groupId>mygroup</groupId>
    <version>1.0-SNAPSHOT</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>

   <artifactId>sub-project1</artifactId>

    <dependencies>
     ....
       <dependency>
          <artifactId>sub-project2</artifactId>
          <groupId>mygroup</groupId>
          <version>1.0-SNAPSHOT</version>
          <scope>import</scope>
      </dependency>
  </dependencies>

Ошибка, которую я получаю, когда я добрался mvn clean install на родителе:

[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Compilation failure

С большим количеством классов/пакета, не найденных ошибками

18
задан Pascal Thivent 6 April 2010 в 14:45
поделиться

2 ответа

У вас должен быть мастер-помпон на родительском уровне, в котором вы будете перечислять модули вашего проекта.

  <modules>
    <module>sub-project1</module>
    <module>sub-project2</module>>
  </modules>

В каждом подпроекте вы должны ссылаться на своего родителя:

<parent>
    <artifactId>parent</artifactId>
    <groupId>mygroup</groupId>
    <version>1.0-SNAPSHOT</version>
</parent>

И вы указываете зависимости между проектами точно так же, как вы это делали. Думаю, вы пропустили некоторые шаги, которые я описал.

Изменить: вы должны выполнить чистую установку mvn на родительском уровне.

19
ответ дан 30 November 2019 в 08:10
поделиться

Когда я это делаю, Maven пытается загрузить файл sub-project1.jar, которого не существует, потому что он еще не готов для репо.

Это нормальное поведение, Maven разрешает зависимости через локальный репозиторий, поэтому сначала необходимо установить подпроект1. На самом деле, наиболее распространенный способ справиться с такой ситуацией - запустить сборку реактора (сборку с несколькими модулями) от родителя.

Предположим, вы объединяете модули в родительском каталоге, т.е. у вас есть что-то подобное, объявленное в «родительском» pom.xml :

<modules>
  <module>sub-project1</module>
  <module>sub-project2</module>>
</modules>

Просто cd в родительский каталог и запустите сборка реактора:

$ cd parent
$ mvn install

Maven затем вычислит порядок сборки (вычитается из ориентированного графа, состоящего из модулей и их зависимостей) и запустит install для всех модулей в расчетный порядок (сначала родительский, затем подпроект1 и, наконец, подпроект2 для вашего конкретного примера).

Но не используйте область типа import , вы неправильно ее используете. Убери это.

Обновление: Вопрос был обновлен, пока я отвечал, и показанные POM не иллюстрируют ситуацию, заданную в исходном вопросе (обратная зависимость, вероятная ошибка в идентификаторе артефакта). Но предложенный подход все еще применим. Удалите import в зависимости и запустите сборку реактора из родительского.

10
ответ дан 30 November 2019 в 08:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: