2017-10-06 90 views
2

我想在Hybris扩展中的external-dependencies.xml中设置我的依赖项。问题是它只是加载我在那里指定的库,并没有加载库在运行时需要处理的依赖关系。hybris的maven不下载传递依赖项

例如Aixs2内核加载Axiom-api和impl和adb等。在一个正常的Maven项目中,我不需要逐一指定它们中的每一个。

有没有什么办法可以让Hybris理解其他人呢?

回答

3

SAP款Hybris 6.4+

是的,你可以通过在扩展project.properties文件覆盖maven.download.options参数做到这一点英寸它的默认值等于:如果您添加到您的扩展project.properties

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

maven.download.options=-DoverWriteReleases=true -DoverWriteSnapshots=true -DoverWriteIfNewer=true 

SAP平台款Hybris会下载所有的依赖关系(也传递的)。当然,此更改仅适用于您的分机(请勿更改位于核心分机中的project.properties文件的内容)。


SAP 6.3款Hybris和传递依赖的较旧

排除在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="[email protected]{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 [email protected]{libfolder} ${maven.download.options}" /> 
    <jvmarg line="${env.MAVEN_OPTS} ${env.JAVA_OPTS}" /> 
</artifact:mvn> 

下一个在hybris/bin/platform/project.properties定义属性

maven.download.options=-DoverWriteReleases=true -DoverWriteSnapshots=true -DoverWriteIfNewer=true 

最后执行步骤从6.4+的解决方案。


警告: SAP平台款Hybris提供了大量的库,所以可能是一些你传递依赖的是已经上市。这就是为什么禁用传递依赖关系的下载的原因。我认为最好手动指定它们而不是下载所有内容(避免版本差异)。

+0

看来这个解决方案可能适用于6.5和6.2,无论我尝试它没有工作。 –

+1

我为6.2添加了一个解决方案,但仍然最安全的想法是手动指定所有传递依赖项。 – agabrys