Знаток: Несколько классифицируют с тем же путем, реализованным в другой банке

Я сталкиваюсь с проблемой с наличием, несколько классифицируют с тем же путем (т.е. то же имя, тот же пакет!!!). По некоторым причинам gwt-dev идет со своей собственной версией org.apache.xerces.jaxp.DocumentBuilderFactoryImpl и javax.xml.parsers.DocumentBuilderFactory.

В то же время пружина также зависит от этих классов, но от другой банки. Я не знаю то, что должно быть, но быть похожим xalan & xml-api эти две зависимости, той пружиной зависит от (они, зависимость является дополнительной),

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

Теперь придите к вопросу: Как я могу установить своего АНГЛИЧАНИНА так, чтобы я мог уверенный это, когда когда-нибудь какой-либо код, работающий в моем приложении, затем класс от банки, будет выбран по классу из другой банки?

Спасибо.

6
задан Pascal Thivent 10 April 2010 в 13:41
поделиться

3 ответа

Теперь переходим к вопросу: как мне настроить свой POM так, чтобы я мог быть уверен, что когда-либо любой код, запущенный внутри моего приложения, тогда класс из jar будет выбран над классом из другого jar?

Начиная с Maven 2.0 .9 Maven использует порядок зависимостей в POM для построения пути к классам, так что вы можете манипулировать им. Просто сначала объявите «правильную» банку, и ваше приложение выберет из нее класс.

Из примечаний к выпуску maven 2.0.9:

MNG-1412 / MNG-3111 вводит детерминированный порядок зависимостей в пути к классам. Раньше использовался естественный порядок наборов, что приводило к странным результатам. Теперь порядок сохраняется из вашего pom, а зависимости, добавленные по наследству, добавляются последними. В сборках с конфликтующими или повторяющимися зависимостями это может привести к изменению вывода. Короче говоря, если у вас есть странные проблемы с 2.0.9, посмотрите зависимости, чтобы увидеть, есть ли у вас где-то конфликты.

15
ответ дан 8 December 2019 в 16:00
поделиться

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

  • mvn dependency: tree в вашем проекте, чтобы увидеть, кто зависит от классов, дающих вам проблемы.
  • попробуйте исключить классы, которые, по вашему мнению, вызывают проблемы, отредактировав ваш pom.xml.

надеюсь, что это поможет!

0
ответ дан 8 December 2019 в 16:00
поделиться

Чтобы узнать, какой jar-файл вызывает у вас проблемы: запустите Maven с флагом -X.

Чтобы настроить POM так, чтобы исключить соответствующие банки:

<yourproject.deployment.excludes>
  artifactId1,artifactId2,...
</yourproject.deployment.excludes>

...

 <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
      <execution>
        <id>copy-dependencies</id>
        <phase>package</phase>
        <goals>
          <goal>copy-dependencies</goal>
        </goals>
        <configuration>
          <outputDirectory>${your.lib.for.example}</outputDirectory>
          <overWriteSnapshots>true</overWriteSnapshots>
          <overWriteIfNewer>true</overWriteIfNewer>
          <excludeTransitive>false</excludeTransitive>
          <excludeArtifactIds>${yourproject.deployment.excludes}</excludeArtifactIds>
          <includeScope>compile</includeScope>
        </configuration>
      </execution>
    </executions>
  </plugin>
0
ответ дан 8 December 2019 в 16:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: