2017-10-06 51 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