2010-04-22 3 views
1

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

Изучая весну, чтобы все было просто, добавьте все банки (даже те, которые я никогда не использовал) в путь к классам.

Сейчас, по большей части, я предполагаю, какие банки включать. Например, я знаю, в моем файле конфигурации яровой, у меня есть:

<tx:annotation-driven /> 
<context:annotation-config /> 
<aop:aspectj-autoproxy /> 

Так что, я думаю, мне нужно: пружинный контекстное xxxjar, весна-TX-xxxjar, весна-АОП-xxxjar

Спасибо.

ответ

3

Я вижу только две возможные альтернативы. Либо:

  • «знать, что вы делаете» и добавить необходимые зависимости перед фактом ~ или ~
  • В сомнении, не добавляйте зависимость, пусть все удастся, и добавить зависимость после факт
+1

Невозможность ухудшения зависимости и отказа от работы может быть хуже, поскольку вы можете не узнать о пропавшей зависимости до самого худшего возможного времени. Например, скажем, что некоторая библиотека была использована для отправки почты в случае критической ошибки - вы никогда не узнаете об этом до тех пор, пока эта ошибка не произойдет (и даже тогда, может быть, нет - вы не получили бы почту!). Короче говоря, ни одно из этих предложений не является * систематическим *. – Avi

+3

@Avi Вы можете захотеть этого, но это невозможно полностью автоматизированным способом. Инструменты могут помочь немного (например, «mvn dependency: analysis»), но они не будут учитывать учетные данные во время выполнения. Таким образом, это дает вам ручную настройку класса и тестирования регрессии (при условии, что у вас есть тесты с высоким охватом). В конце, * «знаю, что вы делаете» * - ваше лучшее оружие, нравится вам это или нет. –

+0

@Avi В контексте * этого вопроса я предполагаю, что OP использует (например, во время тестов) то, что он добавляет к своей конфигурации контекста Spring (или, я думаю, он не добавит их). Теперь, если ваш контекст отличается, не стесняйтесь задавать другой вопрос. И если у вас есть лучший ответ на этот ** вопрос, не стесняйтесь публиковать его. –

3

Для общей проблемы определения того, какие JAR (-ы) содержат классы и связанные с ними зависимости, вы можете попробовать http://www.jarvana.com/jarvana/. Он принимает имя класса в качестве входных данных и выплевывает кучу зависимостей Maven, которые вы можете использовать для получения указанного класса.

Для весны, в частности, я считаю, что вам придется обратиться к ее документации. Если у вас есть поддержка IDE для Maven, вы можете просто просто заполнить весеннюю группуId (org.springframework) и активировать автозаполнение внутри <artifactId></artifactId>, чтобы узнать, какие JAR доступны. В основных разделах весенних документов обычно есть свои отдельные банки.

Как я уже убедился, другим хорошим индикатором, который вам нужен отдельный JAR, являются пространства имен XML, используемые в вашем файле applicationContext.xml. Например, вот корень XML узел из проекта с использованием АОП, ПРД и бобы:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:aop="http://www.springframework.org/schema/aop" 
xmlns:tx="http://www.springframework.org/schema/tx" 
xsi:schemaLocation=" 
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd 
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd" 
default-autowire="byName"> 

В приведенном выше примере будет означать, что вам нужно весенне-бобы, весна-АОП и пружинно-TX JARs (Spring, JAR именование довольно непротиворечиво). Я не уверен, что это всегда верно, но это должно хотя бы дать вам указание.

1

Простой способ полностью забыть о файлах JAR - использовать nexus.

Если вы являетесь корпорацией, вы можете настроить свой собственный сервер Nexus. Если нет, используйте общедоступный сервер, например http://repository.sonatype.org (примечание: я еще не использовал это, так как у нас есть свои) и поиск библиотеки. После того, как вы нашли библиотеку, скопируйте/вставьте раздел <dependency> ... </dependency> в свой файл POM, и вы хорошо пойдете.

Я забыл, как мы связали maven с сервером nexus, но это не слишком сложно. Сделайте немного поиска, и вы золотые. Больше не беспокоиться о файлах JAR!

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