2014-10-02 46 views
0

如何通過makepom任務將IVY轉換爲Maven配置?Apache Maven到Maven:MakePom任務

1)例如IVY「默認」的配置在其Maven Scope沒有等價的:

我明白......你可以把在一代人的任務,makempom會做以下等價:

<ivy:makepom ..... conf=」default,compile,runtime」> 

    <mapping conf="default" scope="compile"/> 
    <mapping conf="compile " scope="compile"/> 
    <mapping conf="runtime" scope="runtime"/> 
</ivy> 

2)但是,當你在IVY動態配置,例如,與本IVY配置會發生什麼,例如 「myConf」:

<configurations defaultconf="default->default"> 
    <conf name="default" description="shortcut to runtime and master dependencies"/> 
    <conf name="compile" description="Used ONLY at compile time" /> 
    <conf name="myConf" description="Not required at compile time BUT required for execution and so deployed to a server"/> 

</configurations> 

這種情況下從IVY翻譯到Mave有什麼可能?特別是如果沒有「n」個不同的配置,似乎沒有必要用相應的範圍將「n」個conf配置到makepom任務中。我也注意到,如果你不把任何東西在任務makepom,該generared PON沒有範圍始終被投入可選:

<dependency> 
    <groupId>org.apache.commons</groupId> 
    <artifactId>commons-lang3</artifactId> 
    <version>3.3</version> 
    <optional>true</optional> 
</dependency> 

這行家代碼從ivy文件導致其中公地lang3庫置於「默認」設置:

<dependency org="org.apache.commons" name="commons-lang3" rev="3.3" conf="default->default"/> 

回答

0

我自己回答。

只能使用Maven Scopes。如果在常春藤任何configurantion,它沒有自己的Maven的等效範圍,你必須定義等同於Maven的範圍爲makepom任務,

例如:

+1

正確的。我也會看到反向關係。常青藤如何解釋遠程Maven POM文件和範圍。請參閱:http://stackoverflow.com/questions/7104364/how-are-maven-scopes-mapped-to-ivy-configurations-by-ivy/7116577#7116577與常春藤配置相比,Maven在這方面不太靈活。最好理解這些限制,然後調整你的用法以適應它們。 – 2014-10-05 15:32:35