Создание исполняемого банку с пружиной в структуре неортодоксальных пакетов [дубликат]

Могу я просто добавить; люди всегда предполагают, что это компьютерная проблема, но если вы считаете своими руками (база 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 пальцами на каждой руке спросит, почему ваша десятичная математика была сломана ...

13
задан Ben 28 January 2016 в 14:53
поделиться

1 ответ

Позвольте мне начать, как вы, но я немного нахожу вещи:

.
├── 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, который уменьшает время сборки резко.

16
ответ дан Lii 3 September 2018 в 13:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: