Необязательная зависимость для Maven, когда артефакт не существует - PullRequest
0 голосов
/ 01 июля 2019

Я не знаю, может ли Maven действовать таким образом:

  1. Артефакт не существует или недоступен

  2. Пометить этот артефакт как необязательный

... Я пытаюсь создать не существующую зависимость, пометить ее как необязательную и создать сборку с Maven в Eclipse ... но этокажется, что это не нравится ..:

    <dependency> 
        <groupId>com.x.y</groupId>
        <artifactId>myOptionalArtifact</artifactId>     
        <optional>true</optional>   
    </dependency>

..... но Maven падает ... ....

BUILD FAILURE Не удалось найти артефакт com.xy: myOptionalArtifact: jar: 1.0

Я начинаю догадываться, что дополнительный тег НЕ может использоваться в этом смысле ???

Ответы [ 2 ]

2 голосов
/ 02 июля 2019

Maven рассматривает все зависимости, которые вы перечислите в разделе <project><dependencies> вашего POM, как требуется для сборки вашего проекта;поэтому любой сбой при обнаружении одной из этих зависимостей приводит к сбою сборки, и это ожидаемое поведение.

Тег <optional>, на который вы ссылаетесь, используется, когда ваш проект является зависимостью другого проекта, указывая Maven, чтонеобязательные зависимости должны автоматически исключаться при разрешении транзитивных зависимостей в вашем основном проекте.

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

Необязательные зависимости - если проект Y зависит от проекта Z, владелецПроект может пометить проект Z как необязательную зависимость, используя элемент «необязательно».Когда проект X зависит от проекта Y, X будет зависеть только от Y, а не от необязательной зависимости Y от Z. Владелец проекта X может затем явно добавить зависимость от Z по своему усмотрению.(Может быть полезно думать о дополнительных зависимостях как о «исключенных по умолчанию».)

2 голосов
/ 01 июля 2019

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

Необязательный или предоставленный не поможет.Артефакт остается на пути к классам, поэтому Maven пытается загрузить его.

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