2016-03-29 2 views
1

Я пытаюсь исключить ряд артефактов при создании uber-jar с плагином Maven Shade. Ниже конфигурация я использую для этого:Исключая артефакты с плагином Maven Shade, не работает должным образом

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-shade-plugin</artifactId> 
      <version>2.4.3</version> 
      <configuration> 
       <createDependencyReducedPom>true</createDependencyReducedPom> 
       <artifactSet> 
        <excludes> 
         <exclude>com.fasterxml.jackson.core:jackson-core:jar:2.4.5</exclude> 
        </excludes> 
       </artifactSet> 
... 

За исключением пакета без информации о версии работы:

    <exclude>com.fasterxml.jackson.core:jackson-core</exclude> 

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

ответ

0

Думаю, вам просто нужно определить, какую версию джексона вы используете.

Очевидно, что это плохая практика, когда у вас одинаковые зависимости с разными версиями (возможно, транзитивными). В этом случае вы не можете знать, какая версия этой библиотеки окажется в вашем проекте. Вы можете заменить порядок зависимостей в xml, а затем результат будет другим. Звучит неплохо, да?

Так что вам нужно указать - точную версию Джексона в вашем dependencyManagement разделе:

<dependencyManagement> 
    <dependencies> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-core</artifactId> 
     <version>${jackson.version}</version> 
    </dependency> 
... 

Это будет гарантировать, что у вас есть только определенная версия в вашем артефакте, и вам не нужно будет исключить конкретную версию.

Надеюсь, это поможет

+0

Спасибо, Игорь, будучи конкретным использованием управления зависимостями, действительно является решением здесь. Тем не менее, все еще есть ошибка в плагине Maven Shade (или отсутствие ясности в документах), но я предполагаю, что, поскольку есть обходной путь, это еще не конец света. –

Смежные вопросы