hybris 的 maven 不下载传递依赖项

hybris's maven doesn't download transitive dependencies

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

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

有什么方法可以让 Hybris 理解获取其余部分吗?

SAP Hybris 6.4+

是的,您可以通过覆盖扩展 project.properties 文件中的 maven.download.options 参数来执行此操作。它的默认值等于:

-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 平台提供了很多库,因此您的某些传递依赖项可能已经可用。这就是禁用传递依赖项下载的原因。我认为手动指定它们而不是下载所有东西是个好主意(你会避免版本差异的问题)。