Maven - не обнаруживается при компиляции основного модуля - PullRequest
0 голосов
/ 27 августа 2018

Я работал над проектом и решил написать код API и реализовать его на других модулях, следуя этой архитектуре:

project [core]:
---- src/
---- pom.xml
---- module [parent-1]:
-------- src/
-------- pom.xml

По сути, parent-1 должен затенять и реализовывать core src , но когда я пытаюсь скомпилировать, maven просто выбрасывает кучу ошибок компиляции, что говорит основной источник не найден.

[ERROR] package com.core.manager does not exists
[ERROR] cannot find symbol: class Manager
so on...

основной проект pom.xml

<groupId>com.core</groupId>
<artifactId>core</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>8</source>
                <target>8</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>3.1.1</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

<modules>
    <module>parent-1</module>
</modules>


<dependencies>
    <dependency>
        <groupId>org.mongodb.morphia</groupId>
        <artifactId>morphia</artifactId>
        <version>1.3.2</version>
        <scope>compile</scope>
    </dependency>
</dependencies>

родительский модуль pom.xml

<parent>
    <artifactId>core</artifactId>
    <groupId>com.core</groupId>
    <version>1.0-SNAPSHOT</version>
</parent>

<modelVersion>4.0.0</modelVersion>

<artifactId>parent-1</artifactId>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>8</source>
                <target>8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

<dependencies>
    <dependency>
        <groupId>com.core</groupId>
        <artifactId>core</artifactId>
        <version>1.0-SNAPSHOT</version>
        <scope>compile</scope>
    </dependency>
</dependencies>

Я использую mvn install , я также пробовал mvn package и mvn compile (только потому, что почему бы и нет).

Спасибо за ответ и извините за мой слабый английский.

1 Ответ

0 голосов
/ 27 августа 2018

Я никогда не видел использование родительского и модульного pom вместе. Я не знаю, если это правильный подход. Существует два типа модулей maven:

  • parent pom содержит определения плагинов, версии артефактов, свойства. Все они могут быть повторно использованы в дочерних модулях.
  • артефакт - после сборки он создаст банку / войну / ухо

Я бы увидел этот проект так:

parent [parent]:// parent of the project
 --project [core]: // core artifact
 ------ src/
 ------ pom.xml
 --module [parent-1]: // artifact that uses core
 ------src/
 ------pom.xml

Итак, ваш родительский пом будет иметь два модуля:

<modules>
    <module>core</module>
    <module>parent-1</module>
</modules>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...