Могу я просто добавить; люди всегда предполагают, что это компьютерная проблема, но если вы считаете своими руками (база 10), вы не можете получить (1/3+1/3=2/3)=true
, если у вас нет бесконечности, чтобы добавить 0.333 ... в 0.333 ... так, как и с (1/10+2/10)!==3/10
в базе 2, вы обрезаете ее до 0,333 + 0,333 = 0,666 и, вероятно, округлите ее до 0,677, что также будет технически неточным.
Подсчитайте в тройном, а третья не проблема, может быть, какая-то гонка с 15 пальцами на каждой руке спросит, почему ваша десятичная математика была сломана ...
Позвольте мне начать, как вы, но я немного нахожу вещи:
.
├── modules-root
│ ├── moduleA
│ │ └── pom.xml <--- Module A POM
│ ├── moduleB
│ │ └── pom.xml <--- Module B POM
│ └── pom.xml <--- modules root
└── pom.xml <--- project-root
Начнем с project-root
, который будет выглядеть следующим образом:
<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>org.test</groupId>
<artifactId>project-root</artifactId>
<packaging>pom</packaging>
<version>1.0.0-SNAPSHOT</version>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
<modules>
<module>modules-root</module>
</modules>
</project>
module parent
будет выглядеть так. Я хотел бы подчеркнуть, что это содержит только ссылку на moduleA
и moduleB
и наследует от project-root
:
<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>
<parent>
<groupId>org.test</groupId>
<artifactId>super-pom</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<groupId>org.test.module</groupId>
<artifactId>modules-root</artifactId>
<packaging>pom</packaging>
<modules>
<module>moduleA</module>
<module>moduleB</module>
</modules>
</project>
moduleA
будет выглядеть так. Обратите внимание, что это наследует от module-parent
(parent), который находится на одном уровне выше ...
<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>
<parent>
<groupId>org.test.module</groupId>
<artifactId>module-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>moduleA</artifactId>
<packaging>..</packaging>
<....other dependencies..>
</project>
Если вы используете такую структуру, вы можете просто перейти на уровень project-root
и do:
mvn clean install
Кроме того, вы можете использовать такие вещи:
mvn -pl moduleA ...
... чтобы построить только moduleA (но оставайтесь на уровне project-root
... ).
module-parent
может выглядеть как лишний или лишний в этом примере, но если вы получите больше модулей, вы можете определить дополнительные зависимости через dependencyManagement
или изменить конфигурацию плагина через pluginManagement
, который будет (модуль А, модуль Б, ...). Если ваш проект станет больше, вы получите больше модулей-родителей параллельно ... которые содержат разные части ваших приложений ... и различные намерения, которые могут быть достигнуты с помощью этой структуры.
Еще одна вещь - упомянуть , Я изменил groupId
с org.test
на org.test.module
в родительском модуле. Это иногда полезно, если у вас есть большое количество модулей, потому что groupId
представляет структуру папок в вашем репозитории (как пакеты java в проекте Java) ... это дает вам лучший обзор ...
project-root
- это местоположение для определения общих используемых зависимостей с помощью dependencyManagement
и т. д .... и используемых плагинов, которые должны быть определены с помощью pluginManagement
... или могут использоваться maven-enforcer -plugin для определения общих правил проекта ...
Типичными сценариями такого типа структуры являются проекты Java EE или другие крупные проекты (может быть с 300 ... или 1000 модулями да, они существуют ) ...
Если вы получаете больше модулей, вы можете использовать многопоточную возможность maven и построить свой проект с помощью:
mvn -T 4 clean install
из project-root
, который уменьшает время сборки резко.