предисловие
Вчера читатель спросил меня о моем опыте работы и случайно задал интересный вопрос, а именно:
"примерно означает": Недавно компания多模块
В разработке из-за взаимозависимости модулей очень напрягает каждый раз упаковывать.Паковать надо один за другим по зависимостям.Есть ли способ избавить от неприятностей?
на самом деле игратьMaven
Все мои друзья знают, что проблему можно решить одной командой.
зависимости
Предположим, что есть многомодульный проект, родительский проектP
содержит три подмодуляA
,B
,C
, три модуля имеют следующие зависимости:
-
A
полагатьсяB
,C
. -
B
полагатьсяC
.
родительский проектP
изpom.xml
следующее:
.....
<modules>
<module>A</module>
<module>B</module>
<module>C</module>
</modules>
.....
A
модульныйpom.xml
следующее:
....
<dependency>
<groupId>xxx.xxxx</groupId>
<artifactId>B</artifactId>
<version>xxxx</version>
</dependency>
.....
B
модульныйpom.xml
следующее:
....
<dependency>
<groupId>xxx.xxxx</groupId>
<artifactId>C</artifactId>
<version>xxxx</version>
</dependency>
.....
C
модульныйpom.xml
следующее:
....
Что вы будете делать?
Теперь продукт должен выйти в интернетA
, как вы его упаковываете?
Самое простое, что можно придумать, это упаковать их отдельно и выполнить следующие команды:
mvn clean install C
mvn clean install B
mvn clean package A
Вышеупомянутые три модуля упаковываются по очереди, и это занимает не менее пяти минут, не так ли?
Дело в том, что для его упаковки мне нужна только следующая команда:
mvn clean package -pl A -am -P test -DskipTests=true
Есть ли что-то глубокое в приведенной выше команде?-P
укажите среду,-DskipTests=true
пропустить тест, но-pl
а также-am
что это?
Ответ определенно-pl
а также-am
эти два параметра.
Обязательные параметры
Из приведенных выше примеров важно знать, что-pl
а также-am
Что означают эти два параметра? следующее:
параметр | иллюстрировать |
---|---|
-pl |
Необязательно, укажите проекты для обработки, несколько через запятую, значение равноartifactId
|
-am | Необязательно, также обработайте параметр pl, чтобы указать зависимые модули модуля. |
-amd | Необязательно, также обрабатывайте модули, зависящие от модуля, указанного параметром pl. |
-N | необязательный, означает, что подмодули не рекурсивны |
Как это, понимаете? Не слишком ли это непонятно, ха-ха....
Не волнуйтесь, давайте разберемся с этим через несколько команд (все в родительском проектеP
запускать в корневом каталоге).
mvn clean install -pl A -am
работает на родительскомP
, подмодульA
а такжеA
зависит от модуляB
,C
выполнение модуляmvn clean install
работать.
После успешного выполнения этой команды вы можете увидетьP
,A
,B
,C
Все четыре модуля устанавливаются локально.
mvn clean install -pl C -am
работает на родительскомP
, подмодульC
выполнение модуляmvn clean install
работать.
После успешного выполнения этой команды вы можете увидетьP
,C
Оба модуля устанавливаются локально.
так как
C
модуль"не зависеть от"два других подмодуля, поэтомуA
,B
Модуль не будет выполнять соответствующую команду.
mvn clean install -pl C -amd
работает на родительскомP
, подмодульC
и зависит отC
модуль Б、
C模块执行
операция чистой установки mvn.
После успешного выполнения этой команды вы можете увидетьP
,A
,B
,C
Все четыре модуля устанавливаются локально.
mvn clean install -N
Только родительский проект будет упакованP
, его подмодули не будут выполнять связанные операции.
Как насчет этого? Это следует понимать под приведенной выше командой.
Суммировать
По мере того, как размер проекта будет постепенно расти, не только вышеуказанные модули, но и изучение вышеуказанных команд увеличат эффективность более чем в два раза.