Определение зависимостей проекта Java в Eclipse - PullRequest
3 голосов
/ 24 августа 2011

Это невероятно глупый вопрос, я знаю ... Но я нахожусь в процессе преобразования Java-проекта, когда-то созданного с помощью Ant, для этого вместо Apache Maven. Один из шагов, которые я прочитал для достижения этой цели, заключался в том, чтобы поместить все JAR-файлы, необходимые для проекта, в файл pom.xml в качестве зависимости. Теперь, поскольку я не совсем знаком с этим проектом, есть ли какая-либо настройка свойства, на которую я мог бы взглянуть, чтобы ясно увидеть все зависимости JAR? Я знаю, что некоторые из них находятся в каталоге WEB-INF \ lib, но, глядя на оригинальный файл build.xml для Ant, кажется, что их больше, чем те, которые он пытался добавить. Опять же, я очень новичок во всех этих концепциях, но я просто надеялся на простой способ определить, какие зависимости есть у Java-проекта, чтобы я мог добавить их - или их Maven-эквивалент - в pom.xml файл. Есть предложения?

Редактировать : Вот часть того, что меня смущает. Когда я открываю файл WAR для проекта, который пытаюсь развернуть с помощью Apache Tomcat, это единственные файлы JAR, которые я могу найти ...

images
META-INF
util
WEB-INF
    > classes
    > lib
        > jtds-1.2.4.jar
        > jw-core-web-1.2.0.jar
    > web.xml
blah.jsp
blah.jsp
blah.jsp

Полагаю, мне нужны эти два файла, по крайней мере. Но когда я открываю файл build.xml, я нахожу следующий раздел:

<!-- Jars listed here are added to the generated war file -->
<fileset id="bundle.jars" dir="WebRoot/WEB-INF/lib">
    <include name="base.jar"/>
    <include name="ldap.jar"/>
    <include name="junit.jar"/>
    <include name="titan.jar"/>
    <include name="activation.jar"/>
    <include name="javamail-1.2.jar"/>
    <include name="commons-httpclient.jar"/>
</fileset>

Конечно, я не видел ни одного из этих jar-файлов в файле WAR, кратко раскрытом выше. Кроме того, системная библиотека JRE указана в моем Package Explorer вместе со списком файлов JAR. Теперь мне нужно добавить их в свой список зависимостей? Вот что у меня есть:

JRE System Library
    > resources.jar
    > rt.jar
    > jsse.jar
    > jce.jar
    > charsets.jar
    > dnsns.jar
    > dns_sd.jar
    > localedata.jar
    > sunjce_provider.jar

Ответы [ 3 ]

1 голос
/ 24 августа 2011

Если ваш проект настроен в Eclipse, то вы должны иметь возможность просматривать все зависимости в представлении Project Explorer. Они должны быть на пути сборки для правильной компиляции.

На стороне Ant я бы предположил, что необходимые jar-файлы для среды выполнения будут скопированы где-то вместе с остальной частью сборки. Это особенно верно, если ваш проект встроен в WAR.

Если ничего не копируется, то лучше всего выследить все файлы компиляции и времени выполнения, тщательно отсканировав файл build.xml. Это то, что вы, вероятно, должны делать в любом случае, если вы конвертируете его в Maven. Я полагаю, что ключевые части для поиска - это задачи javac и java Ant.

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

0 голосов
/ 24 августа 2011

Природные зависимости Eclipse Java обычно определяются в файле project/.classpath.Контейнерные зависимости (целевые серверы) будут перечислены как kind="con";это обеспечит такие вещи, как зависимости сервлетов API.

Зависимости веб-модуля (WST) определены в project/.settings/org.eclipse.wst.common.component («виртуальные» lib файлы каталогов).

Если ваша WAR является частью EAR-файла, вы также можете проверить атрибут * classpath project/WebContent/META-INF/MANIFEST.MF.

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

Я должен добавить, что такие вещи являются подробностями реализации, правильными с Eclipse Helios, но могут быть изменены.


Обратите внимание, что Maven иМуравьи разные звери.Maven может предоставлять переходные зависимости по мере необходимости, в то время как скрипты Ant могут определять их явно.

Вам не нужно добавлять библиотеки JRE в ваш файл pom.xml (хотя вам может потребоваться установить версию Java).Учитывая, что JUnit находится в списке зависимостей скрипта Ant, это больше похоже на список зависимостей модульного теста, чем на список времени выполнения.

0 голосов
/ 24 августа 2011

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

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

С уважением, Стефан

...