Как я могу проверить, есть ли у моего jar-файла неразрешенные зависимости? - PullRequest
0 голосов
/ 22 ноября 2011

Я пишу пользовательский инструмент для сборки файлов JAR из нашего дерева сборки.Нам нравится создавать «минимальные» jar-файлы, которые содержат только файлы .class, на которые действительно ссылаются из «корневого» класса (где живет main ()) и т. Д., Рекурсивно следуя зависимостям.

Исторически мысделали это, заставив javac следовать исходным зависимостям, но это означает перекомпиляцию общих файлов много раз.(Мы создаем 60 или 70 отдельных jar-файлов приложений из одного дерева исходных текстов.) Я пишу новую систему сборки, которая компилирует каждый исходный файл только один раз, но это означает, что нам нужно следить за зависимостями, анализируя файлы .class.

Хорошая новость в том, что у меня есть рабочий код, который делает то, что я хочу.Но мне нужно быть абсолютно уверенным Я не облажался, т. Е. Я хочу убедиться, что я создаю внутренне согласованные файлы JAR, где "непротиворечивый" означает, что все неразрешенные ссылки могут быть разрешены с помощью однойиз наших известных сторонних фляг.решаться одним из сторонних банок, переданных на --classpath.Если нет, барф.

Ответы [ 3 ]

2 голосов
/ 22 ноября 2011

Лучше надеяться, что на этом пути нет ничего, кроме отражения, forName и т. Д.

Я использую depfind (если я не использую свои собственные инструменты для правописания Java), которыеможет или не может предоставить вывод способом, который будет полезен для вас. jdepend - это еще один вариант, хотя я никогда не использовал его для чего-либо, кроме зависимостей уровня пакета.

Другие инструменты, такие как ProGuard, удаляют неиспользуемые классы (среди прочего), сте же размышления.

Я очень осторожен с попытками слишком трудно создать минимальные файлы jar;есть точка уменьшения прибыли / повышенного риска.

1 голос
/ 22 ноября 2011

Я почти уверен, что ProGuard - ваш магический инструмент, даже если я не знаю точного синтаксиса вызова.

0 голосов
/ 22 ноября 2011

Однажды несколько лет назад попытка индексировать файл JAR с помощью jar -i вызвала исключение, если были неразрешенные зависимости.Я не могу быстро проверить текущее состояние вещей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...