Maven Multi Module Project ищет модули в хранилище, а не строит их - PullRequest
0 голосов
/ 04 июля 2018

У меня есть многомодульный проект MVN, в котором есть 1 агрегаторный pom, другой родительский pom и 3 других модуля, как указано ниже:

проект-все -проект-родитель -проект-общий -проект-охранение -проект-WebAPP

project-WebApp зависит от общего проекта и обслуживания проекта.

Когда я запускаю чистую установку на project-all, он пытается загрузить модули из репозиториев вместо их сборки.

Насколько я понимаю, многомодульный проект заключается в том, что он запускает установку и на всех модулях, но это не то, что происходит.

Если я запускаю чистую установку на всех модулях по отдельности, то чистая установка по проекту будет работать нормально. Это также работает, когда я запускаю сборку mvn в Eclipse с выбранным параметром Resolve Workspace Artifacts.

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

Я что-то упустил, каков будет процесс запроса mvn для сборки этих модулей вместо их поиска в хранилище.

Пом для проекта все:

<?xml version="1.0" encoding="UTF-8"?>
<groupId>com.midtier.api</groupId>
<artifactId>project-all</artifactId>
<version>1.0</version>
<packaging>pom</packaging>

<name>project-all</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>


<modules>
    <module>project-parent</module>
    <module>project-data</module>
    <module>project-maintenance</module>
    <module>project-WebApp</module>
</modules>

POM для проекта-родителя:

<?xml version="1.0" encoding="UTF-8"?>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.9.RELEASE</version>
</parent>

<groupId>com.midtier.api</groupId>
<artifactId>project-parent</artifactId>
<packaging>pom</packaging>
<version>1.0</version>


<name>${project.artifactId}</name>
<description>${project.artifactId}</description>
<url>http://maven.apache.org</url>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <elasticsearch.version>6.2.4</elasticsearch.version>
    <jsonsimple.version>1.1.1</jsonsimple.version>
    <slf4j-version>1.7.25</slf4j-version>
</properties>

<dependencyManagement>
<!--Dependencies Here-->
</dependencyManagement>

Пом для проекта-веб-приложения:

    <?xml version="1.0" encoding="UTF-8"?>
<project>
    <parent>
        <groupId>com.midtier.api</groupId>
        <artifactId>project-parent</artifactId>
        <version>1.0</version>
    </parent>

    <groupId>com.rbc.midtier.api</groupId>
    <artifactId>project-webapp</artifactId>
    <packaging>jar</packaging>
    <version>${project.parent.version}</version>

    <name>${project.artifactId}</name>
    <description>${project.artifactId}</description>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>com.midtier.api</groupId>
            <artifactId>project-data</artifactId>
        </dependency>
        <dependency>
            <groupId>com.midtier.api</groupId>
            <artifactId>project-maintenance</artifactId>
        </dependency>

    </dependencies>
</project>

project-data и project-maintenance похожи на project-web app, но не имеют внутренних зависимостей.

Опять же, я хочу просто запустить команду clean install для всех, и вам не нужно беспокоиться о сборке любого из модулей по отдельности.

1 Ответ

0 голосов
/ 04 июля 2018

Мне кажется, проблема в том, что вы определяете родителя как модуль. Когда вы запускаете «clean», родительский объект, используемый другими модулями, все еще недоступен, поэтому Maven пытается найти его в хранилище. Лучше определить родительскую информацию в Project-All POM, потому что на этапе сборки родительский должен быть доступен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...