Подпроект не получает зависимости от Super POM - PullRequest
0 голосов
/ 09 января 2020

Я получил следующий сценарий: diag-parent (Super POM) и diag-domain (дочерний)

SUPER-POM:

<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>de.dbsystel.udg</groupId>
        <artifactId>udg-super-pom</artifactId>
        <version>2.0.3</version>
        <relativePath/>
    </parent>

    <groupId>de.db.udg.diagnose.udg-diagnose</groupId>
    <artifactId>diag-parent</artifactId>
    <packaging>pom</packaging>
    <version>1.20.16-SNAPSHOT</version>
    <name>${project.artifactId}</name>

    <modules>
        <module>diag-domain</module>
    </modules>

    <dependencyManagement>
        <dependencies>

            <dependency>
                <groupId>de.db.kolt.alice</groupId>
                <artifactId>alice</artifactId>
                <version>2.2.1</version>
                <scope>compile</scope>
            </dependency>

            <dependency>
                <groupId>org.primefaces</groupId>
                <artifactId>primefaces</artifactId>
                <version>7.0</version>
            </dependency>

            <!-- PrimeFaces File Upload utils -->
            <dependency>
                <groupId>commons-fileupload</groupId>
                <artifactId>commons-fileupload</artifactId>
                <version>1.2.1</version>
            </dependency>

            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>2.6</version>
            </dependency>
...
</dependencies>
    </dependencyManagement>

дочерний POM:

    <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>de.db.udg.diagnose.udg-diagnose</groupId>
    <artifactId>diag-parent</artifactId>
    <version>1.20.16-SNAPSHOT</version>
  </parent>

  <artifactId>diag-domain</artifactId>
  <packaging>jar</packaging>
  <name>${project.artifactId}</name>
...
</project>

Компиляция модуля diag-domain приводит к:

Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project diag-domain: Compilation failure: Compilation failure:
[ERROR] /D:/Projekte/FA-DIAGNOSE/UDG-DIAGNOSE/branches/Richface_Migration/impl/diag-domain/src/main/java/de/db/udg/diagnose/udgdiag/domain/base/ToManyAssociationModel.java:[13,28] package org.primefaces.model does not exist

Очевидно, он не извлекает любую зависимость от diag-parent. Даже мой репозиторий .m2 пуст.

Эффективная помпа diag-domain:

<!-- ====================================================================== -->
<!--                                                                        -->
<!-- Generated on 2020-01-09T11:13:57                                       -->
<!--                                                                        -->
<!-- ====================================================================== -->

<!-- ====================================================================== -->
<!--                                                                        -->
<!-- Effective POM for project                                              -->
<!-- 'de.db.udg.diagnose.udg-diagnose:diag-domain:jar:1.20.16-SNAPSHOT'     -->
<!--                                                                        -->
<!-- ====================================================================== -->

<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>

  <parent>
    <groupId>de.db.udg.diagnose.udg-diagnose</groupId>
    <artifactId>diag-parent</artifactId>
    <version>1.20.16-SNAPSHOT</version>
  </parent>

  <groupId>de.db.udg.diagnose.udg-diagnose</groupId>
  <artifactId>diag-domain</artifactId>
  <version>1.20.16-SNAPSHOT</version>
  <name>diag-domain</name>
  <description>domain objects</description>

  <dependencyManagement>
    <dependencies>
      ...
      <dependency>
        <groupId>org.primefaces</groupId>
        <artifactId>primefaces</artifactId>
        <version>7.0</version>
        <scope>compile</scope>
      </dependency>
      ...
</dependencyManagement>
    </dependencies>
</project>

Ответы [ 2 ]

3 голосов
/ 09 января 2020

Записи внутри <dependencyManagement> не являются зависимостями. Это просто стандартные версии для зависимостей.

Зависимости должны быть в теге <dependencies> за пределами из <dependencyManagement>.

2 голосов
/ 09 января 2020

Поскольку вы использовали только dependencyManagement, зависимости не импортируются. Вам нужен раздел <dependencies> в дочернем pom, и там вы вводите зависимость.

<depenencyManagement> используется только для обозначения некоторых версий зависимостей для всего использования субмодуля.

См. https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Management

Когда у вас есть набор проектов, которые наследуются от общего родителя, можно поместить всю информацию о зависимости в общем POM и иметь более простые ссылки на артефакты в детском ПОМ

...