首先,使用通配符制作类路径:
<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 );
}
您希望将类路径连接并附加到 CLI,而不是仅清单 JAR ...
这应该适用于简单的依赖关系。但是如果你想启动一些大的东西,使用类加载器的东西,我会推荐 bmargulies 做什么。因为你会努力战斗恕我直言:-)看看这里为什么。
为了获得灵感,我编写了一个依赖安装程序,它将 jars 安装到本地 maven 存储库中,并生成带有所有这些依赖项的 pom 定义,以便您可以将自己用作依赖项(将其所有依赖项放在类路径上 - 传递依赖项)......最好的方法去恕我直言。它是一个非常通用的 Mojo,不必在 Liferay 上使用它。你只需要玩一点。