Во-первых, используйте подстановочные знаки для создания classpath:
<additionalClasspathElements>
<additionalClasspathElement>
/path/to/lib/*.jar
</additionalClasspathElement>
</additionalClasspathElements>
Вы должны использовать эти свойства:
<useManifestOnlyJar>false</useManifestOnlyJar>
<useSystemClassLoader>false</useSystemClassLoader>
Потому что взгляните на ForkConfiguration.java:
if ( useManifestOnlyJar )
{
File jarFile;
try
{
jarFile = createJar( classPath );
}
catch ( IOException e )
{
throw new SurefireBooterForkException( "Error creating archive file", e );
}
cli.createArg().setValue( "-jar" );
cli.createArg().setValue( jarFile.getAbsolutePath() );
}
else
{
cli.addEnvironment( "CLASSPATH", StringUtils.join( classPath.iterator(), File.pathSeparator ) );
final String forkedBooter = ForkedBooter.class.getName();
cli.createArg().setValue( shadefire ? new Relocator().relocate( forkedBooter ) : forkedBooter );
}
Вы хотите, чтобы classpath соединялся и добавлялся к CLI, а не к JAR-файлу только для манифеста ...
Это должно работать для простых зависимостей. Но если вы хотите загрузить что-то большое, то, что использует classloader, я бы порекомендовал, что делает bmargulies. Потому что ты бы боролся с этим тяжело imho :-) Смотри здесь, почему .
Для вдохновения Я написал установщик зависимостей , который устанавливает jar-файлы в локальный репозиторий maven и генерирует определение pom со всеми этими зависимостями, чтобы вы могли использовать себя как зависимость (которая помещает все его зависимости в classpath - переходные зависимости) ... лучший способ пойти имхо. Это довольно общий Mojo, его не обязательно использовать на Liferay. Надо просто немного поиграть с этим.