Вот способ сделать это в Linux за пределами Maven, используя strace.
$ strace -o opens.txt -f -e open mvn dependency:tree > /dev/null
$ perl -lne 'print $1 if /"(.*pom\.xml)"/' opens.txt
Первая строка запускает mvn dependency:tree
в режиме strace, запрашивая strace для вывода в файл opens.txt
всех вызовов системного вызова open(2)
после любых разветвлений (поскольку Java является многопоточным). Этот файл выглядит примерно так:
9690 open("/etc/ld.so.cache", O_RDONLY) = 3
9690 open("/lib/libncurses.so.5", O_RDONLY) = 3
9690 open("/lib/libdl.so.2", O_RDONLY) = 3
Вторая строка просит Perl напечатать любой текст внутри кавычек, который заканчивается в pom.xml. (Флаг -l
обрабатывает печать новых строк, -n
оборачивает одинарные кавычки кода в цикле, который просто читает любые файлы в командной строке, а -e
обрабатывает сам скрипт, который использует регулярное выражение для поиска интересных вызовов открыт.)
Было бы неплохо, если бы у меня был такой способ: -)