我想在Hybris擴展中的external-dependencies.xml中設置我的依賴項。問題是它只是加載我在那裏指定的庫,並沒有加載庫在運行時需要處理的依賴關係。hybris的maven不下載傳遞依賴項
例如Aixs2內核加載Axiom-api和impl和adb等。在一個正常的Maven項目中,我不需要逐一指定它們中的每一個。
有沒有什麼辦法可以讓Hybris理解其他人呢?
我想在Hybris擴展中的external-dependencies.xml中設置我的依賴項。問題是它只是加載我在那裏指定的庫,並沒有加載庫在運行時需要處理的依賴關係。hybris的maven不下載傳遞依賴項
例如Aixs2內核加載Axiom-api和impl和adb等。在一個正常的Maven項目中,我不需要逐一指定它們中的每一個。
有沒有什麼辦法可以讓Hybris理解其他人呢?
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提供了大量的庫,所以可能是一些你傳遞依賴的是已經上市。這就是爲什麼禁用傳遞依賴關係的下載的原因。我認爲最好手動指定它們而不是下載所有內容(避免版本差異)。
看來這個解決方案可能適用於6.5和6.2,無論我嘗試它沒有工作。 –
我爲6.2添加了一個解決方案,但仍然最安全的想法是手動指定所有傳遞依賴項。 – agabrys