2013-04-15 4 views
2

Я новичок в Maven, я пытаюсь использовать Maven с Spring, Hibernate в моем проекте. После перехода по ссылке Spring и Hibernate, я обнаружил, что «нет необходимости явно указывать зависимых либералов в файле POM.xml для таких освобождающихся общин Apache».Нужно ли Maven явно указывать зависимость, зависящую от Spring/Hibernate?

Мои вопросы таковы: если мои другие части проекта относятся к освобождению от Apache, например commons-io, СЛЕДУЕТ Я указать эту зависимость в файле POM.xml?

ответ

1

Вы должны определить эти зависимости в Maven, которые использует ваш проект. Например, даже если какая-то библиотека зависит от коммон-io, но если ваш код нуждается в этом, вы должны прямо определить commons-io в своем pom.xml

Вам не следует беспокоиться о зависимости библиотек, которые вы определили в своем pom.xml. Мейвен сделает это за вас.

+0

Значит ли это, если код, который пишут мне напрямую, ссылается на common-io, они должны быть явно определены в POM.xml, хотя Spring также может также зависеть от common-io? – pengpenglin

+0

Кроме того, если версия общедоступного кода напрямую зависит от другой, используется одна используемая пружина. что будет делать maven? обе версии будут загружены или выбрать последнюю версию? спасибо !! – pengpenglin

+0

Да для первого комментария. Второй комментарий - Maven автоматически выбирает последнюю версию, если это конфликт версий. –

0

Maven используется, чтобы избежать проблемы с запуском JAR-файлов, зависящих от других файлов JAR. Конечно, вы не должны использовать maven для этого, но вы должны. Maven автоматически загрузит зависимые файлы JAR требуемого файла JAR. Например, файл JAR менеджера гибернатных сущностей имеет более 100 зависимостей, и maven выполняет эту работу для вас.

В любом случае, даже если вы добавите файл commons-io в путь сборки/путь к классам проекта maven, а затем обновите конфигурацию проекта, maven вышвырнет его.

0

Вы можете предоставить Lib имя на сайте, как mvnrepository.com, чтобы увидеть, что это зависит от того (например, взглянуть на раздел под названием «Этот артефакт зависит от ...» в случае spring-webmvc библиотеки). Эти зависимости (от которых зависит ваш артефакт) называются transitive dependencies. Вам не нужно указывать их в pom.xml, так как maven решит их для вас.

0

Для удобства чтения вы должны указать только те зависимости в своем модуле, которые вы полагаетесь непосредственно на . Вы хотите, чтобы JUnit тестировал ваше программное обеспечение, только объявляйте JUnit; вам нужно спящий режим использовать ORM, объявить спящий режим и т. д. Оставь все остальное Мейвену.

И в большинстве случаев вы должны указать, что вы собираетесь использовать в самом модуле, в котором хотите его использовать. Поэтому, если вы хотите использовать зависимость в более чем одном модуле, подумайте о переносе его в блок зависимости dependencyManagement в родитель пОМ и ссылаться на него оттуда в модуле вы хотите его.

родительский pom.xml

<dependencyManagement> 
    <dependencies> 
     <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.10</version> 
     <scope>test</scope> 
     </dependency> 
    </dependencies> 
</dependencyManagement> 

ребенок pom.xml

<dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
    </dependency> 
</dependencies> 

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

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