gpt4 book ai didi

maven - hybris 的 maven 不下载传递依赖

转载 作者:行者123 更新时间:2023-12-01 11:18:56 27 4
gpt4 key购买 nike

我正在尝试在 Hybris 扩展中的 external-dependencies.xml 中设置我的依赖项。问题是它只加载我在那里指定的库,而不加载库在运行时需要使用的依赖项。

例如 Aixs2-kernel 加载 Axiom-api 和 impl 和 adb 等等。而在一个普通的 maven 项目中,我不需要一一指定它们。

有什么方法可以让 Hybris 理解获取其余的内容吗?

最佳答案

SAP Hybris 6.4+

是的,您可以通过覆盖 maven.download.options 来做到这一点。扩展中的参数 project.properties文件。它的默认值等于:

-DoverWriteReleases=true -DoverWriteSnapshots=true -DoverWriteIfNewer=true -DexcludeTransitive=true

如果您添加到您的扩展 project.properties该行:
maven.download.options=-DoverWriteReleases=true -DoverWriteSnapshots=true -DoverWriteIfNewer=true

SAP Hybris 平台将下载所有依赖项(也是可传递的)。当然,此更改仅适用于您的扩展(请不要更改位于核心扩展中的 project.properties 文件的内容)。

SAP Hybris 6.3 及更早版本

传递依赖的排除在 hybris/bin/platform/resources/ant/mavenTasks.xml 中硬编码文件(宏 updateLibFolder)。唯一可能的解决方案是在 SAP Hybris 平台上打补丁。您可以更改此代码:
<artifact:mvn pom="@{dependencyFile}" fork="true" failonerror="true" mavenVersion="3.2.5">
<arg value="dependency:copy-dependencies" />
<arg value="-DoutputDirectory=@{libfolder}" />
<arg value="-DoverWriteReleases=true" />
<arg value="-DoverWriteSnapshots=true" />
<arg value="-DoverWriteIfNewer=true" />
<arg value="-DexcludeTransitive=true" />
</artifact:mvn>

到:
<artifact:mvn pom="@{dependencyFile}" fork="true" failonerror="true" mavenVersion="3.2.5">
<arg line="dependency:copy-dependencies -DoutputDirectory=@{libfolder} ${maven.download.options}" />
<jvmarg line="${env.MAVEN_OPTS} ${env.JAVA_OPTS}" />
</artifact:mvn>

接下来定义一个属性
maven.download.options=-DoverWriteReleases=true -DoverWriteSnapshots=true -DoverWriteIfNewer=true

hybris/bin/platform/project.properties最后从 6.4+ 的解决方案中执行步骤。

警告: SAP Hybris 平台提供了大量库,因此您的一些传递依赖项可能已经可用。这就是为什么禁用传递依赖项的下载的原因。我认为手动指定它们而不是下载所有内容是个好主意(您将避免版本差异的问题)。

关于maven - hybris 的 maven 不下载传递依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46599669/

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