Основные вопросы:

Как включить в classpath все jar-библиотеки из указанного каталога (например, lib/)?

Необходимо в секцию configuration описываемого артефакта classpath-maven-plugin добавить следующие строки:

        <configuration>
            ...
            <path>lib/*.jar</path>
            <isMask>true</isMask>
            ...
        </configuration>
Параметр path указывает на маску поиска всех jar-библиотек в каталоге lib/ (относительный путь от корня вашего проекта), а параметр isMask = true укажет плагину classpath-maven-plugin, что передаваемый параметр path является маской для поиска файлов.

[top]


Как включить в classpath все jar-библиотеки из указанного каталога, включая подкаталоги?

Помимо параметров, описанных в предыдущем вопросе, необходимо добавить в секцию configuration описываемого артефакта classpath-maven-plugin параметр withSubDir = true:

        <configuration>
            ...
            <path>lib/*.jar</path>
            <isMask>true</isMask>
            <withSubDir>false</withSubDir>
            ...
        </configuration>
В этом случае, описываемый плагин будет искать все jar-библиотеки (маска *.jar), начиная с каталога lib/, и включая все его подкаталоги (параметр withSubDir = true).

[top]


Как управлять подключением jar-библиотеки, если через dependency она уже подключена (возможно, другой версии)?

В описываемом плагине существует возможность управлять такими коллизиями, как совпадение jar-библиотек, уже подключенных через dependency, c библиотеками, подключаемыми при помощи classpath-maven-plugin. За это отвечает параметр overlapDependencyMatch в секции configuration:

        <configuration>
            ...
            <overlapDependencyMatch>true</overlapDependencyMatch>
            ...
        </configuration>
Если параметр выставлен в true, то все найденные при помощи описываемого плагина библиотеки, при совпадении с уже имеющимися в dependency (вне зависимости от версий совпавших артефактов), пропишутся в classpath взамен dependency-библиотек. Если же параметр равен false (значение по умолчанию), то в classpath останутся dependency-библиотеки.

[top]

Дополнительно:

Как записать полученный classpath в файл или переменную проекта без непосредственного подключения jar-библиотек?

В описываемом плагине существует возможность не переопределять classpath вашего проекта напрямую, а записать полученную classpath-строку в файл или переменную проекта (с последующим доступом к ней через ${variableName}). Для этого параметр assignProjectClasspath выставляется в false, и указываются выходные параметры для записи classpath-строки:

        <configuration>
            ...
            <assignProjectClasspath>false</assignProjectClasspath>
            <outputFile>${project.build.directory}/classpath.txt</outputFile>
            <outputProperty>variableName</outputProperty>
            ...
        </configuration>
В качестве выходного параметра в который будет помещена classpath-строка могут выступать:
outputFile - файл на диске;
outputProperty - переменная вашего проекта.

[top]


Как включить вывод ошибки, если ни одной jar-библиотеки не найдено (для одного path)?

Вывод ошибки с остановкой дальнейшей работы плагина при остутствии найденных jar-библиотек для отдельного входного параметра конфигурации path задается в секции configuration при помощи параметра errorIsEmptyPath = true:

        <configuration>
            ...
            <errorIsEmptyPath>true</errorIsEmptyPath>
            ...
        </configuration>
Вышеуказааное относится как к поиску по маске (isMask = true), так и для указания конкретной jar-библиотеки во входных параметрах поиска (либо для одиночного параметра path, либо для каждого path из набора в секции paths).

[top]