Многомодульный проект Maven пытается загрузить внутреннюю зависимость из репозитория - PullRequest
0 голосов
/ 10 июля 2020

У меня есть классический многомодульный проект с перекрестной зависимостью

родительский pom:

<modules>
    <module>mod1</module>
    <module>mod2</module>
</modules>
...
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>grp</groupId>
            <artifactId>mod1</artifactId>
            <version>${project.version}</version>
        </dependency>
...

mod2 pom:

<dependencies>
    <dependency>
      <groupId>grp</groupId>
      <artifactId>mod1</artifactId>
    </dependency>
 ...

Он строит mvn clean install отлично, однако когда CI запускает сонар, используя mvn sonar:sonar ..., maven пытается загрузить mod1 зависимость моментального снимка из репо, который должен быть частью того же реактора.

Downloading from nexus: http://...mod1/1.0.0-SNAPSHOT/maven-metadata.xml

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

Почему?

1 Ответ

0 голосов
/ 10 июля 2020

${project.version} оценивается как другое значение в mod2.pom (в частности, версия проекта mod2). Лучше всего определить свойство в разделе свойств родительского pom и сослаться на него в разделе управления зависимостями.

Пожалуйста, ознакомьтесь с документацией Maven здесь с ключевым объяснением :

One factor to note is that these variables are processed after inheritance as outlined above. This means that if a parent project uses a variable, then its definition in the child, not the parent, will be the one eventually used.
...