Создание многомодульного проекта с использованием Intellij & Maven - PullRequest
0 голосов
/ 07 мая 2018

У меня есть структура проекта, в которой есть основной инструмент и REST API для взаимодействия и настройки этого инструмента.

У меня есть такая структура пакета:

com.example.api -> contains API definitions
com.example.commons -> contains module common to both core and api
com.exmaple.core -> contains the core module

Это в первую очередь приложение Spring Boot, и оба будут работать в разных контейнерах. Так что API и Core jar будут разными.

Как мне создать многомодульный проект с такой структурой, чтобы я мог также использовать модуль commons в обоих подпакетах (core & api). Предложения по настройке Maven и IntelliJ в такой среде?

Является ли мой шаблон правильным? Существуют ли другие хорошо известные шаблоны для такого рода структуры проекта?

1 Ответ

0 голосов
/ 07 мая 2018

Вы можете создать проект с несколькими модулями Maven. Вот пример того, как вы должны настроить свои модули:

Создайте родительский pom.xml следующим образом (обратите внимание, что я не добавляю spring-boot-starter-parent в качестве родительского для проекта, я добавляю зависимости Spring Boot с spring-boot-dependencies):

<?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.example</groupId>
    <artifactId>parent</artifactId>
    <packaging>pom</packaging>
    <version>1.0.0-SNAPSHOT</version>

    <modules>
        <module>example-commons</module>
        <module>example-core</module>
        <module>example-api</module>
    </modules>

    <dependencyManagement>
        <dependencies>

            <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-dependencies -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>1.5.3.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

        </dependencies>
    </dependencyManagement>

    <dependencies>

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>1.5.3.RELEASE</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-test -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <version>1.5.3.RELEASE</version>
        </dependency>

    </dependencies>

</project>

И не исполняемый модуль 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">
    <parent>
        <artifactId>parent</artifactId>
        <groupId>com.example</groupId>
        <version>1.0.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>example-commons</artifactId>

</project>

, тогда как pom.xml исполняемого модуля будет выглядеть так (обратите внимание, spring-boot-maven-plugin присутствует только здесь для этой зависимости):

<?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">
    <parent>
        <artifactId>parent</artifactId>
        <groupId>com.example</groupId>
        <version>1.0.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>example-core</artifactId>

    <build>
        <plugins>
            <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-maven-plugin -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>1.5.3.RELEASE</version>
                <configuration>
                    <executable>true</executable>
                </configuration>
            </plugin>

        </plugins>
    </build>

    <dependencies>

        <dependency>
            <groupId>com.example</groupId>
            <artifactId>example-commons</artifactId>
            <version>1.0.0-SNAPSHOT</version>
        </dependency>

    </dependencies>

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