2014-10-17 268 views
1

免責聲明:我使用Ant +艾維是一個新手解決常春藤依賴

我有以下Eclipse配置:

項目A取決於項目BProjectC

項目B取決於項目C

每個項目都擁有ivy.xml文件。

項目A有一個build.xml文件是這樣的:

(...) 

<ivy:resolve file="../ProjectC/ivy.xml" /> 
<ivy:cachepath pathid="ivy.deps.default" conf="default" /> 
<ivy:cachefileset setid="ivy.deps.default.fileset" conf="default"/> 


<ivy:resolve file="../ProjectB/ivy.xml" /> 
<ivy:cachepath pathid="ivy.deps.default" conf="default" /> 
<ivy:cachefileset setid="ivy.deps.default.fileset" conf="default"/> 


<ivy:resolve file="ivy.xml" /> 
<ivy:cachepath pathid="ivy.deps.default" conf="default" /> 
<ivy:cachefileset setid="ivy.deps.default.fileset" conf="default"/> 

<path id="classpath"> 
    <fileset dir="${webroot}/WEB-INF/lib" erroronmissingdir="no"> 
     <include name="*.jar"/> 
    </fileset> 
    <fileset dir="${libraries}" erroronmissingdir="no"> 
     <include name="*.jar"/> 
    </fileset> 
    <path refid="ivy.deps.default"/> 
</path> 

    (...) 

<javac destdir="c:/abc" includeantruntime="yes" classpathref="ivy.deps.default"> 
         <src path="../ProjectC/src"/> 
         <classpath refid="classpath"/> 
        </javac> 

(... Compile ProjectB ...) 
(... Compile ProjectA ...) 

因此,運行在錯誤的build.xml這個結果,他說,項目C不能編譯,因爲它缺少的是應該有一個* .jar文件已通過ivy:resolve命令解決。

我的問題是:

  • 如何使一個build.xml自動從子項目檢索的依賴,並編譯所有的子項目?
+1

我會建議保持每個項目與自己的常青藤文件分開。讓每個項目都是獨立的,並將其jar發佈到共享存儲庫中,而不是嘗試解決其他項目中的依賴關係。最後,對於多模塊項目,您可以使用ivy buildlist任務根據每個模塊的常青藤文件中記錄的相互依賴關係,以正確的順序構建每個模塊。 – 2014-10-20 21:04:34

+1

另請參閱:http://stackoverflow.com/questions/4106143/ivy-simple-shared-repository/4110220#4110220 – 2014-10-20 21:07:40

回答

1

看起來你對每個項目都有一個ivy文件,但是你沒有每個項目的構建文件。正如Mark在上述評論中所說的,每個項目都應該單獨構建。

例如:

  • 構建項目B像你的驅動器上的 「SharedLibrary」 的目錄。 (漂亮的小JAR文件)
    • 注意ProjectB的IVY文件。它集組織,工件名稱,版本等
  • 添加「SharedLibrary」你常青藤<resolvers>列表,以便IVY查找依賴有
  • 添加項目B的項目A的依賴(使用著名信息來自ProjectB的常春藤)

這應該讓你脫穎而出!

專業提示:不要使用「SharedLibrary」目錄,而應考慮使用諸如Artifactory之類的東西來管理工件並從中拔出。

相關問題