Как передать опцию maven "--also-make" через pom.xml в командную строку - PullRequest
0 голосов
/ 16 декабря 2018

Скажем, есть родительский проект A, в модулях которого есть модули B и C.

Project A
    |-pom.xml
    |----------->ModuleB
    |               |->pom.xml
    |----------->ModuleC
    |               |->pom.xml

<modules>
    <module>B</module>
    <module>C</module>
</modules>

Сам модуль C имеет некоторую зависимость, которая принадлежит только этому подмодулю.Эта зависимость должна быть построена перед модулем C, поэтому я хочу вызвать опцию "-am" (--also-make), когда для C. вызывается "mvn install".

Maven выполняется удаленно, всеесть файлы пом.Задание на сборку запускается на удаленном Jenkins, оно использует текущий профиль в проекте. Родительский pom, должен использоваться только этот профиль.

Я думаю, что это можно сделать в pom модуля C, в конфигурации maven-compiler-plugin, например?

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
            <source>${jdk.source}</source>
            <target>${jdk.target}</target>
            **<arguments>-am</arguments>** <!--smth like this maybe?-->
        </configuration>
    </plugin>

Я также думал о создании другого файла pom.xml, который бы содержал только подмодуль C и его зависимость в правильном порядке, и который использовался бы вместо текущего подмодуля C в родительском pom,но сначала нужно попробовать опцию -am.Кроме того, сейчас я не совсем понимаю, куда поместить этот новый пом, потому что мы уже на уровне родительского уровня A.

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

Upd: ниже приведена менее упрощенная структура текущего проекта.

Project A (maven parent for B, C, D)
    |-pom.xml
    |----------->ModuleB
    |               |->pom.xml
    |----------->folder
        |----------->folder
            |----------->ModuleC
            |               |->pom.xml
    |----------->ModuleD
    |               |->pom.xml

<modules>
    <module>B</module>
    <!-- <module>D</module> | initially was here, now needs to be only C's dependency -->
    <module>C</module>
</modules>

1 Ответ

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

- также опция-make может использоваться, когда указанные проекты также перечислены в разделе модулей агрегатора (реактора) pom.xml.Поскольку у вас нет необходимых проектов в разделе модулей, вы не можете использовать его в текущей настройке.

Вы можете просто добавить дополнительные проекты в раздел текущих модулей, и это решит вашу проблему.(Вам не нужно беспокоиться о порядке написания модулей, Maven создаст их в правильном для вас порядке. И вам не нужно использовать также make-файл)

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

Также родительский пом и агрегаторный пом - это разные понятия.

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