Сборка Maven не может найти символы и пакеты из JAR в локальном хранилище - PullRequest
1 голос
/ 22 мая 2019

Maven, похоже, знает о utilities-20190520.jar и вносит его в сборку, однако при компилировании потребления кода пакеты и символы utility-20190520.jar не может быть найден.Обратите внимание, что многие другие сторонние JAR (например, org.apache.common-io , NiFi JAR и т. Д.) Получаются Maven и код использует их без ошибок.

Iиметь несколько модулей:

. pipeline (parent)
+-- shared
`-- other modules

Родитель (или супер) pom.xml определяет эту зависимость для использования всеми подмодулями:

<dependency>
  <groupId>com.acme</groupId>
  <artifactId>utilities</artifactId>
  <version>20190520</version>
</dependency>

Выполнение mvn dependency:tree compile(в родительском подкаталоге) Я вижу

...
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ pipeline ---
[INFO] com.acme.nifi.pipeline:pipeline:pom:2.0.0
[INFO] +- com.acme:utilities:jar:20190520:compile    (my JAR)
[INFO] +- org.apache.nifi:nifi-api:jar:1.9.2:compile (NiFi JAR)
...

- кажется, что utilities.jar получен из локального репозитория, затем он переходит к компиляции первого (под) модуля:

[INFO] com.acme.nifi.pipeline:shared:jar:2.0.0
...
[INFO] +- com.acme:utilities:jar:20190520:compile    (my JAR again)
...
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] /home/russ/sandboxes/pipeline/shared/src/main/java/com/acme/DeferringXmlParsingFilter.java:[10,33] package com.acme.xml does not exist
...
[ERROR] /home/russ/sandboxes/pipeline/shared/src/main/java/com/acme/nifi/processor/DeferringXmlParsingFilter.java:[61,70] cannot find symbol
  symbol:   class Tag
  location: class com.acme.nifi.processor.DeferringXmlParsingFilter

Компилятор жалуется, что не знает пакета com.acme.xml или com.acme.xml.Tag , класса в этом пакете- несмотря на то, что, по всей видимости, utilities-20190520.jar , содержащий их, присутствует.

Я отношусь к utilities-20190520.jar как и любой другой JAR,он находится в ~ / .m2 / хранилище , у меня есть спецификация <repository> для него, settings.xml настроен правильно - действительно, многоприходят ее JAR. Вот мой JAR в локальном хранилище:

~/.m2/repository
+-- com
    +-- acme
        +-- utilities
            +-- 20190520
                +-- utilities-20190520.jar
                +-- utilities-20190520.pom
                +-- etc.

Мысли?

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