У меня есть два проекта, скажем, A и B, в одном каталоге dir
. B является родительским проектом для своего модуля C. C зависит от A. Структура каталога:
dir/
A/
B/
C/
Я использую метод этот, создаю проект с модулями и показываю, что C зависит от A. После этого Netbeans запускается чтобы увидеть пакеты A в C, например. он не показывает отсутствующих пакетов, дает подсказки по использованию классов из A в C. Если я ставлю A как модуль B, mvn clean install
говорит, что maven реактор нашел правильный порядок компиляции проектов и компилирует их в порядке A, B, C. mvn dependency:tree
показывает, что groupB:C:jar:0.0.1
имеет дочерний узел groupA:A:jar:0.0.1:compile
.
Я не уверен, может ли A быть модулем B, потому что у A есть другой родитель (Spring boot). Таким образом, я пробую другой вариант: удалить A из модулей B, затем mvn clean install
в A, чтобы (я предполагаю) созданный им jar попал в локальное репо. Оба варианта подходят для maven и Netbeans, но не для компилятора. Во время компиляции C не видит пакеты A.
Я сделал mvn clean install
в любом из трех проектов. Зависимость в C должна иметь точные свойства A, иначе в Maven возникнет ошибка зависимости. Кажется, что и механизм подсказок Netbeans, и Maven думают, что A является библиотекой C. Только компилятор этого не видит. Я предполагаю, что я сделал ошибку новичка. Что это может быть?
Соответствующие фрагменты pom.xml
вовлечены:
A:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>groupA</groupId>
<artifactId>A</artifactId>
<packaging>jar</packaging>
<version>0.0.1</version>
<name>projectA</name>
<description>project A</description>
B: (я пробовал варианты с A, являющимся модулем B, закомментированным или нет)
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.1</version>
<relativePath/>
</parent>
<groupId>groupB</groupId>
<artifactId>B</artifactId>
<packaging>pom</packaging>
<version>0.0.1</version>
<name>projectB</name>
<description>project B</description>
<modules>
<!--module>../A</module-->
<module>C</module>
</modules>
C:
<parent>
<groupId>groupB</groupId>
<artifactId>B</artifactId>
<version>0.0.1</version>
<relativePath>../</relativePath>
</parent>
<groupId>groupB</groupId>
<artifactId>C</artifactId>
<packaging>jar</packaging>
<version>0.0.1</version>
<name>projectC</name>
<description>project C</description>
<dependencies>
<dependency>
<groupId>groupA</groupId>
<artifactId>A</artifactId>
<version>0.0.1</version>
</dependency>
</dependencies>