2015-10-29 6 views
0

У меня есть вопрос о Maven pom.xml.Использование maven pom tag

добавить зависимости в pom.xml как:

<dependencies> 
    <dependency> 
      <groupId>org.opendaylight.controller</groupId> 
      <artifactId>features-restconf</artifactId> 
      <version>1.2.1-Lithium-SR1</version> 
      <classifier>features</classifier> 
      <type>xml</type> 
      <scope>runtime</scope> 
    </dependency> 
</dependencies> 

Я не могу понять использование < классификатора> и < типа>.

Мои вопросы:

  1. Что такое смысл классификатора и типа
  2. Что такое смысл сферы (исполнения) в то время как тип является XML. Я предполагаю, что xml означает, что maven нуждается в файле xml, но что это значит с runtime? Я думаю, runtime всегда ассоциируется с "добавил к classpath", но зачем xml?

Если я комментирую < типа> Я получил ошибки как:

[ERROR] Не удалось выполнить задачу по испытанию проекта: не удалось разрешить зависимостей для проекта com.ruan: тест: банку: 1,0-ПАНОРАМА: Отказ найти org.opendaylight.controller: Характеристики-restconf: фляги: особенности: 1.2.1-литий-SR1 в http://nexus.opendaylight.org/content/repositories/public/ был кэшируются в локальном хранилище, разрешение не будет повторная попытка до го е интервал обновления opendaylight-зеркало прошло или обновления принуждают -> [Помощь 1]

Если я комментирую < классификатором> Я получил ошибки как:

[ERROR] Не удалось выполнить цель по тестированию проекта: Не удалось разрешить зависимости для проекта com.ruan: test: jar: 1.0-SNAPSHOT: отказ от найти org.opendaylight.controller: features-restconf: xml: 1.2.1-Lithium-SR1 в http://nexus.opendaylight.org/content/repositories/public/ был кэширован в локальном репозитории, разрешение w больная не может быть повторная попытка, пока интервал обновления opendaylight-зеркало не прошло или обновления вынужден -> [Помощь 1]

Если я бег правильно, я получил каталог, как:

haoruan:~/.m2/repository/org/opendaylight/controller/features-restconf $ cd 1.2.1-Lithium-SR1/ 
total 96 
-rw-r--r-- 1 haoruan staff 264B Oct 29 13:58 _remote.repositories 
-rw-r--r-- 1 haoruan staff 397B Oct 29 13:38 features-restconf-1.2.1-Lithium-SR1-features.jar.lastUpdated 
-rw-r--r-- 1 haoruan staff 9.0K Oct 29 13:58 features-restconf-1.2.1-Lithium-SR1-features.xml 
-rw-r--r-- 1 haoruan staff 40B Oct 29 13:58 features-restconf-1.2.1-Lithium-SR1-features.xml.sha1 
-rw-r--r-- 1 haoruan staff 12K Oct 29 13:38 features-restconf-1.2.1-Lithium-SR1.pom 
-rw-r--r-- 1 haoruan staff 40B Oct 29 13:38 features-restconf-1.2.1-Lithium-SR1.pom.sha1 
-rw-r--r-- 1 haoruan staff 397B Oct 29 13:39 features-restconf-1.2.1-Lithium-SR1.xml.lastUpdated 

ответ

0

Как указывает ваш артефакт, вы включаете зависимость от функций-restconf контроллера opendaylight.

Если вы проверить код контроллера в GitHub repostory:

https://github.com/opendaylight/controller/releases/tag/release%2Flithium-sr1 

вы заметите, что есть каталог с именем «функции», который содержит файл pom.xml.Если открыть этот файл pom.xml, вы можете увидеть, что она соответствует артефакту функции-контроллер, и которые имеют Differente модулей:

<module>config</module> 
<module>config-persister</module> 
<module>config-netty</module> 
<module>mdsal</module> 
<module>netconf</module> 
<module>protocol-framework</module> 
<module>akka</module> 
<module>netconf-connector</module> 
<module>restconf</module> 
<module>extras</module> 

И что для каждого из этих модулей, есть подпапка создается внутри имеется каталог , Для каждой подпапки есть feature.xml по следующему пути: /src/main/resources/features.xml

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

Для получения дополнительной информации о том, что смысл каждого pom.xml тега:

https://maven.apache.org/pom.html 

Там, вы будете читать:

классификатор: классификатор позволяет различать артефакты, которые были построены от того же ПОМ, но отличаются по содержанию. Это необязательная и произвольная строка, которая - если присутствует - добавляется к имени артефакта сразу после номера версии.

Объем: Этот элемент относится к классам задачи под рукой (компиляции и время выполнения, тестирования и т.д.), а также как ограничить транзитивность зависимость. runtime -> эта область указывает, что зависимость не требуется для компиляции, но предназначена для ее выполнения. Он находится в среде выполнения и тестирует пути к классам, но не компилирует classpath.