Maven иерархия нескольких модулей - PullRequest
0 голосов
/ 06 декабря 2018

Я не уверен, как структурировать мой многомодульный проект Maven.В основном у меня есть 4 различных модуля.

  1. main модуль
  2. input-handler модуль
  3. output-handler модуль
  4. utilsmodule

Модули input-handler и output-handler в основном используют одни и те же зависимости - некоторые библиотеки ввода-вывода, библиотеки JUnit, библиотеки DI и т. д.

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

Наконец, main модуль ведет себя как модуль драйвера.Он должен включать в себя input-handler и output-handler и координировать их во время выполнения для достижения общей функциональности.

Моя идея состояла в том, чтобы сделать main родительским проектом, а затем output-handler и input-handler в качествеего подмодули, таким образом они наследовали бы некоторые общие зависимости - но тогда main должен включать свои собственные подмодули для их использования - что похоже на проблему циклических зависимостей.

Какова будет правильная структура для этого

1 Ответ

0 голосов
/ 07 декабря 2018

Поместите ваши модули в одну папку (это будет родительский проект), затем создайте файл pom.xml в этой папке, содержимое должно выглядеть следующим образом:

<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>parent-project-id</groupId>
    <artifactId>simple-parent</artifactId>
    <packaging>pom</packaging>
    <version>1.0</version>
    <name>Multi Chapter Simple Parent Project</name>

    <modules>
        <module>utils</module>
        <module>input-handler</module>
        <module>output-handler</module>
        <module>main</module>
    </modules>
</project>

После этого вы можете запустить mvn clean install в папке родительского проекта, и ваши модули будут скомпилированы в нужном вам порядке.

...