Я создаю общую библиотеку, которая будет использоваться в нескольких приложениях Spring. Я извлек общие классы, которыми я хочу поделиться между этими приложениями, в новое приложение Spring с именем «Common». Я использовал mvn install
в этом приложении, чтобы поместить его в мой локальный репозиторий Maven. В моем основном проекте я добавил зависимость maven с той же версией в pom. xml.
Теперь, если я попытаюсь запустить mvn compile
на моем Основной проект, я получил эту ошибку:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project recruitment: Compilation failure: Compilation failure:
[ERROR] /D:/[...]/application/src/main/java/com/example/application/service/Service.java:[8,37] package com.example.common.exception does not exist
Указывает, что моя общая библиотека отсутствует, и, следовательно, мое приложение не может найти пакет из него.
Если я пытаюсь запустить приложение Spring с основного (с использованием Spring Boot), он запускается отлично и ведет себя как раньше.
Я использую IntelliJ на Windows, maven поставляется с IntelliJ с установкой по умолчанию. Если я проверю свой локальный репозиторий Maven, я найду банку с общей библиотекой. IntelliJ не показывает никаких ошибок при импорте, он распознает мою библиотеку.
Кажется, что есть какой-то конфликт между IntelliJ, который читает pom. xml, чтобы найти библиотеки, импортированные для моего приложение и maven, которые используют один и тот же pom. xml для компиляции моего кода.
Я использовал mvn compile -X
, чтобы получить больше информации, и забавно то, что maven использует общий jar библиотеки из локального репозитория:
[INFO] Changes detected - recompiling the module!
[DEBUG] Classpath:
[DEBUG] D:\[...]\application\target\classes
[DEBUG] C:\[...]\.m2\repository\com\example\common\0.0.1\common-0.0.1.jar
- Есть ли у вас какие-либо идеи, почему я не могу скомпилировать свой проект с помощью maven, когда я могу запустить его как приложение Spring?
Вот моя зависимость в моем pom. xml:
<dependency>
<groupId>com.example</groupId>
<artifactId>common</artifactId>
<version>0.0.1</version>
<scope>compile</scope>
</dependency>
И определение общей библиотеки:
<groupId>com.example</groupId>
<artifactId>common</artifactId>
<version>0.0.1</version>
<name>common</name>
<description>Common project with generic technical modules</description>