проблема строения верблюда - PullRequest
0 голосов
/ 21 декабря 2008

У меня есть простое приложение, использующее netbeans для разработки и maven для сборки и все такое. Мое приложение использует верблюд, настроен весенний XML. Я хотел создать исполняемый файл jar с зависимостями, поэтому я использую плагин maven-assembly с дескриптором 'jar-with-deps'. Баночка построена нормально, но я думаю, что поскольку все зависимости развернуты и некоторые из них имеют те же ресурсы в тех же путях, что и другие, они перезаписывают друг друга. Я проверил это, просматривая флягу с winrar, и я нашел многократные вхождения одного и того же файла во многих местах. Я думаю, что это неразрешимо с помощью некоторой простой конфигурации maven, потому что я не могу остановить зависимость, требующую ресурс по определенному пути, который также используется другой зависимостью. Кстати, приложение работает нормально внутри NetBeans. Также я видел многократные случаи моих прикладных классов. Это более странно, но я не могу понять, почему.

В общем, я хочу знать, если:

  1. Есть ли какое-нибудь простое решение, которое находит такие конфликты и, по крайней мере, сообщает о них, если не исправляет их? (и как)

  2. Могу ли я сказать архиватору (в maven) не разворачивать deps, а просто включить jar в родительский jar, а затем просто включить jar в путь к классам манифеста и как? Решит ли это проблему или будет иметь тот же результат?

  3. Почему в одном и том же пути несколько классов моих приложений встречаются одновременно?

Чтобы получить представление о проблеме, текущий результирующий jar при просмотре с WinRAR имеет 3 экземпляра 'log4j.properties' в корневом пути и 7 экземпляров файла 'spring.schemas' в meta-inf / path , назвать несколько.

1 Ответ

1 голос
/ 18 января 2009

Я не думаю, что можно сжать все .jar в один .jar. Многие из этих .jars имеют ресурсы в своем файле .jar (log4j.properties, весенние XML-файлы), которые находятся в той же папке, поэтому произойдет конфликт.

Лучше предоставить стартовые скрипты, которые могут запустить ваше приложение, установив classpath. И я помню, что либо в JDK1.5, либо в 1.6 вы можете установить папку в качестве пути к классам, и она будет включать все jar-файлы из этой папки.

...