2013-04-22 3 views
1

Я подготовил некоторые классы использования. Я планировал сделать их как банку и распространить ее на нужные проекты.Проблема создания и использования пользовательского файла jar

Мои классы использования используют уже существующий пользовательский код, предоставляемый в виде файла jar.

Мой код зависит от WHI "MainUtil.jar" внутренне dependends на Java Servlet, Commons IO, Общин кодек и так далее .....

Моя POM зависимость выглядит, как показано ниже.

<dependency> 
    <groupId>com.solutions</groupId> 
    <artifactId>sol-core</artifactId> 
    <version>2.3</version>   
</dependency> 
<dependency> 
    <groupId>org.apache.cxf</groupId> 
    <artifactId>cxf-rt-ws-security</artifactId> 
    <version>${cxf.version}</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.cxf</groupId> 
    <artifactId>cxf-rt-ws-policy</artifactId> 
    <version>${cxf.version}</version> 
</dependency> 
<dependency> 
    <groupId>org.bouncycastle</groupId> 
    <artifactId>bcprov-jdk16</artifactId> 
    <version>1.46</version> 
</dependency> 

Когда я упаковываю свою банку, это выглядит нормально.

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

Файлы jar файла commonc-codec не включены в пакет проекта при упаковке. И код, требующий этого общего кодека, терпит неудачу.

Когда я в явном виде включаю зависимость от общего количества кодов, все работает по-разному.

Мое замешательство заключается в том, почему я должен явно добавлять зависимость кодека, когда я должен быть разрешен Maven на основе POM пользовательских файлов jar. И почему проблема происходит только с кодеком общего пользования, но не с другой зависимостью.

+0

В проекте, в котором вы добавляете свой собственный jar, есть ли какая-либо зависимость, уже использующая java-файл кодека? – user1760178

+0

Да. Common-codec уже ссылается на одну из существующих зависимостей в этом проекте. Имеет ли это какое-либо влияние? – 2013-04-25 19:15:38

ответ

0

Ваш код зависит от всех других банок. Когда вы создаете банку для своего проекта, файл jar не содержит всех зависимых классов jar.

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

+0

Не могли бы вы показать, как вы определили свою зависимость от общедоступного кодека? –

0

Проблема с вами DEPENDENCY решения является,

существующей зависимости в проекте может иметь некоторое управление зависимостью от этой баночки. Именно по этой причине старая банка имеет приоритет над вашей пользовательской зависимостью. Забавляйте добавление исключения в уже существующую банку для этой банки с общим кодеком.

как

<dependency> 
<... Your existing dependency ..> 
    <exclusions> 
      <exclusion> 
       <groupId>commons-codec</groupId> 
       <artifactId>commons-codec</artifactId> 
      </exclusion> 
     </exclusions> 
</dependency> 

Используйте эту команду и проверьте, как ваша зависимость разрешения.

mvn dependency:resolve 

Тогда все должно быть хорошо.

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