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