3
我的目標是要劃定項目傳遞依賴成若干不渡套:如何減去常春藤依賴集
- 系統(罐已經存在於J2EE容器;具有明確的固定版本手動列出)
- 提供(罐被複制到J2EE容器;手動列出)
- 耳(罐子待包裝耳/ lib下,其餘部分)內
我下面列出當前的解決方案有一定的shortco mings:
- 必須排除系統和由不是已經明確排除可能會意外地得到耳朵
- 一個
- 新的第三方傳遞DEPS提供從耳朵的conf一個庫,有時不得不增加明確
override
複製庫名稱和版本
是否有一些方法可以消除這些缺點?
這將是很好能夠以某種方式定義一個的conf爲他人的依賴集減法的結果(優美解決衝突): 耳=運行 - 系統 - 提供。
也許<conf name="ear" extends="runtime,!system,!provided"/>
符號在IVY-982得到修復時可以被支持。
尋找適用的實際解決方案。
即使願意考慮切換到gradle,如果它有一個解決方案。
<?xml version="1.0" encoding="UTF-8"?>
<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
<info organisation="example.com" module="parent"/>
<configurations defaultconfmapping="compile->@;runtime->@;system->master;provided->runtime;ear->runtime;test->test(default)">
<conf name="compile"/>
<conf name="runtime" extends="compile"/>
<conf name="ear" extends="runtime" description="Libs to be packed inside ear"/>
<conf name="provided" description="Libs to copy to j2ee container"/>
<conf name="system" description="Libs already present in j2ee container"/>
<conf name="test" extends="ear,provided,system" description="Simulate container environment. Used by unit tests to catch dependency compatibility problems."/>
</configurations>
<dependencies>
<dependency org="log4j" name="log4j" rev="1.2.15" force="true" conf="system"/>
<dependency org="commons-collections" name="commons-collections" rev="3.1" force="true" conf="system"/>
<dependency org="commons-lang" name="commons-lang" rev="2.2" force="true" conf="system"/>
<dependency org="org.apache.velocity" name="velocity" rev="1.7" force="true" conf="provided"/>
<dependency org="org.slf4j" name="slf4j-api" rev="1.5.6" force="true" conf="provided"/>
<dependency org="org.slf4j" name="slf4j-log4j12" rev="1.5.6" force="true" conf="provided"/>
<!-- ... -->
<dependency name="module1" rev="latest.integration" conf="runtime,ear,provided,test"/>
<dependency name="module2" rev="latest.integration" conf="runtime,ear,provided,test"/>
<!-- ... -->
<exclude org="commons-collections" conf="ear,provided"/>
<exclude org="commons-lang" conf="ear,provided"/>
<exclude org="org.apache.velocity" conf="ear"/>
<!-- TODO: negation not working: https://issues.apache.org/jira/browse/IVY-982 -->
<!--<exclude org="org.slf4j" conf="*, !provided"/>-->
<exclude org="org.slf4j" conf="ear,test"/>
<!-- ... -->
<override org="org.slf4j" rev="1.5.6"/>
<override org="commons-collections" module="commons-collections" rev="3.1"/>
<override org="commons-lang" module="commons-lang" rev="2.2"/>
<!-- ... -->
</dependencies>
</ivy-module>
Sample項目源進行實驗,可以在IVY-1443附件中找到。
如果您不知道解決方案,請對此評論投贊成票,但請考慮此類功能請求。沉默讓我感到害怕。 ) – Vadzim
這是如何提供排除可以用maven完成:http://stackoverflow.com/questions/1459021/excluding-provided-dependencies-from-maven-assembly – Vadzim
它似乎有可能與gradle:http:// stackoverflow.com/questions/15507215/copy-dependencies-excluding-some-configuration/ – Vadzim