Как добавить локальный проект (не jar) как зависимость к проекту Maven

2

У меня есть два проекта Maven, которые я добавил в один проект Intellij Idea как два модуля. Проект В зависит от проекта А.

Вот упрощенные версии их файлов pom.xml.

Проект А:

<?xml version="1.0" encoding="UTF-8"?>
<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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.group</groupId>
    <artifactId>a</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>
    </dependencies>
</project>

Проект B:

<?xml version="1.0" encoding="UTF-8"?>
<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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.group</groupId>
    <artifactId>b</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>com.group</groupId>
            <artifactId>a</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>
</project>

Проект А легко компилируется, поскольку он не имеет никакой зависимости. Но Project B зависит от проекта A, и поскольку я не говорю maven, как его найти, он не может быть скомпилирован с mvn package. Но если я не ошибаюсь, это было возможно с помощью меню Intellij Idea "Meven Projects", поскольку для Intellij Idea оба проекта известны.

Но прямо сейчас, по какой-то неизвестной причине, я не могу скомпилировать проект B даже в Intellij Idea. Когда я это делаю, он подсказывает:

[ERROR] Failed to execute goal on project b: Could not resolve dependencies for project com.group:b:jar:1.0-SNAPSHOT: Could not find artifact com.group:a:jar:1.0-SNAPSHOT -> [Help 1]

Мой вопрос в том, как включить один проект в другой как его зависимость? Обратите внимание, что я не ищу локальную инъекцию зависимостей в maven, так как я хочу, чтобы это работало в будущем, когда я загружаю свои пакеты в какой-то репозиторий.

  • 2
    Вы делали чистую установку mvn на свой проект? Если нет, mvn установите ваш проект 'a' в локальный репозиторий, откуда он сможет найти 'a' при попытке собрать b. По сути, mvn ищет «a» в локальном репо, поэтому до тех пор, пока вы не установите его в локальном репо с помощью mvn install, он не может быть найден
Теги:
maven
intellij-idea

1 ответ

5
Лучший ответ

Ваш проект B зависит от проекта A, и вы уже указали это как зависимость в вашем файле pom. Единственная причина, по которой проект B не может найти проект A, может быть вызван тем, что артефакт проекта не установлен в вашем локальном репозитории.m2. Таким образом, вам нужно сначала выполнить mvn-чистую установку вашего проекта A, которая создаст артефакт в вашем хранилище maven. Затем вы должны использовать артефакт A в проекте B.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню