hybris的maven没有下载传递依赖

时间:2017-10-06 06:36:19

标签: maven hybris

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

例如Aixs2-kernel加载Axiom-api和impl和adb等等。在正常的maven项目中,我不需要逐个指定每个项目。

有没有办法让Hybris理解其他人?

1 个答案:

答案 0 :(得分:3)

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