Локальная установка Maven MultiModule не обновляется - PullRequest
0 голосов
/ 03 февраля 2020
Project A
   --Module B    
      --pom.xml
   --Module C    
      --pom.xml    
pom.xml

Я работаю с многомодульным проектом, где у проекта A, модуля B и модуля C есть свои файлы pom. Модуль A и Модуль B ссылаются на файл ProjectA pom.

Я использую ModuleA как зависимость в pom-файле moduleB.

Я добавил несколько пакетов в moduleA и выполнил mvn clean install

Он обновил мой репозиторий .m2 последними внесенными мною изменениями.

Затем я сделал mvn clean install на moduleB Однако модуль B по-прежнему не распознает последние изменения в модуле A.

Я попробовал следующее, но мне не удалось

  1. Удаление папки .m2 и выполнение maven clean install
  2. Сборка mvn clean install в папке root
  3. Использование Intellij, аннулирование кэша и перезапуск, включение снимков обновлений и т. Д. c

1 Ответ

0 голосов
/ 03 февраля 2020

Модуль A и модуль B ссылаются на файл pom ProjectA

ProjectA должен иметь упаковку "pom" и быть "агрегатором" других модулей. Его pom.xml должен выглядеть следующим образом:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.foo.bar</groupId>
    <artifactId>myartifactname</artifactId>
    <version>0.1-SNAPSHOT</version>
    <packaging>pom</packaging>
    <modules>
      <module>ModuleB</module>
      <module>ModuleC</module>
    </modules>
</project>

ProjectA не должен содержать никаких исходных файлов, поэтому нет смысла объявлять зависимость от него в модулях B и C.

Однако модуль A pom. xml может содержать определения, общие для всех модулей (например, конфигурации, свойства плагина и т. Д. c.). В этом случае вы можете использовать наследование в модулях B и C. Например, модули B и C (но не A) могут иметь «родительский» раздел, в котором они будут объявлять ProjectA как «родительский», следовательно, наследуя вышеупомянутые определения.

Я использую ModuleA как зависимость в pom-файле moduleB

Опять же, как я объяснил выше, это не имеет смысла. ProjectA не является модулем java, и, поскольку в нем есть упаковочный модуль, из этого модуля нет реального артефакта (read jar).

...