我试图在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
Run Code Online (Sandbox Code Playgroud)
如果将扩展名添加到扩展名中,则project.properties该行:
maven.download.options=-DoverWriteReleases=true -DoverWriteSnapshots=true -DoverWriteIfNewer=true
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
至:
<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>
Run Code Online (Sandbox Code Playgroud)
接下来定义一个属性
maven.download.options=-DoverWriteReleases=true -DoverWriteSnapshots=true -DoverWriteIfNewer=true
Run Code Online (Sandbox Code Playgroud)
在hybris/bin/platform/project.properties最后做从6.4+的解决步骤。
警告: SAP Hybris平台提供了很多库,因此您的某些传递依赖项可能已经可用。这就是为什么禁用传递依赖项的原因。我认为最好手动指定它们而不是下载所有内容(这样可以避免版本差异带来的问题)。
| 归档时间: |
|
| 查看次数: |
636 次 |
| 最近记录: |