gpt4 book ai didi

java - 有没有一种简单的方法可以在 surefire-plugin 测试类路径上添加 jar

转载 作者:行者123 更新时间:2023-11-29 03:52:36 25 4
gpt4 key购买 nike

有这个属性 additionalClasspathElements 但不幸的是它不处理带有 jars 的目录

这个问题真的很难处理...我想到的唯一方法是创建一个准备类路径的 mojo,但我不知道接下来会发生什么

在我的 pom 定义中创建一个包含 175 个 jar 的列表看起来很有趣。它在 additionalClasspathElements 中有 525 行

我需要启动一个不使用 maven 的大型项目。由于 175 个库的版本兼容性,声明它们几乎是不可能的。恕我直言,直接从项目的类路径加载它们是唯一的方法

最佳答案

首先,使用通配符来制作类路径:

<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,而不是仅包含 list 的 JAR...

这应该适用于简单的依赖项。但是如果你想启动一些大的东西,一些使用类加载器的东西,我会推荐 bmargulies 做的事情。恕我直言,因为您会与那场艰苦的战斗作斗争 :-) See here why .

如需灵感,I wrote a dependency installer将 jars 安装到本地 Maven 存储库并生成具有所有这些依赖项的 pom 定义,以便您可以将其自身用作依赖项(将其所有依赖项放在类路径上 - 传递依赖项)......恕我直言的最佳方式。它是一个非常通用的 Mojo,不一定要在 Liferay 上使用。你只需要稍微玩一下它。

关于java - 有没有一种简单的方法可以在 surefire-plugin 测试类路径上添加 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8016344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com