我有一個相當大的ivy.xml,其中包含許多配置,這些配置對於許多項目都是相同的。如何在ivy.xml中包含文件?
我想把這個大的重複部分放到一個通用的包含文件中。不知何故,我找不到任何文件描述這可以做到。
任何人有一個想法,這是否可行?
編輯:經過一番進一步的思考,我認爲這是不可行的目的。常春藤文件是一個有凝聚力的單元,不應該包含基於文件的引用,只能引用其他常春藤模塊...
我有一個相當大的ivy.xml,其中包含許多配置,這些配置對於許多項目都是相同的。如何在ivy.xml中包含文件?
我想把這個大的重複部分放到一個通用的包含文件中。不知何故,我找不到任何文件描述這可以做到。
任何人有一個想法,這是否可行?
編輯:經過一番進一步的思考,我認爲這是不可行的目的。常春藤文件是一個有凝聚力的單元,不應該包含基於文件的引用,只能引用其他常春藤模塊...
可以創建一個常春藤元模塊,這取決於(在本例中的文件名common.xml
相對於由XML解析器包含XML文件來解決。也可以使用絕對file:
協議URI)。在所有的這些共同的包,然後讓你的所有其他項目的解決通過傳遞依賴的公共庫:
<?xml version="1.0"?>
<ivy-module version="2.0">
<info organisation="com.example" module="common-libs"/>
<configurations>
<conf name="runtime" transitive="true" visibility="public" />
<conf name="master" transitive="true" visibility="public" />
<conf name="compile" transitive="true" visibility="public" />
<conf name="default" transitive="true" visibility="public" extends="master" />
</configurations>
<dependencies>
<dependency org="oracle" name="ojdbc14_g" rev="10.2.0.3"
conf="compile->compile(*),master(*);runtime->runtime(*);master->master(*)"/>
<dependency org="tomcat" name="servlet-api" rev="6.0.16"
conf="compile->compile(*),master(*);runtime->runtime(*);master->master(*)"/>
<dependency org="junit" name="junit" rev="4.3"
conf="compile->compile(*),master(*);runtime->runtime(*);master->master(*)"/>
</dependencies>
</ivy-module>
而對於一個典型的項目:
<?xml version="1.0"?>
<ivy-module version="2.0">
<info organisation="com.example" module="myproject"/>
<configurations>
<conf name="runtime" transitive="true" visibility="public" />
<conf name="master" transitive="true" visibility="public" extends="runtime"/>
<conf name="compile" transitive="true" visibility="public" />
<conf name="default" transitive="true" visibility="public" extends="master" />
</configurations>
<dependencies>
<dependency org="com.example" name="common-libs" rev="latest.release"
conf="compile->compile(*),master(*);runtime->runtime(*);master->master(*)"/>
</dependencies>
</ivy-module>
這裏我使用的是來自POM-> Ivy翻譯的Maven解析器的傳統配置命名約定,儘管您可以用任何對您有意義的方式映射配置名稱。我傾向於使用ivy:install任務將Maven模塊複製到我們的常青藤資源庫中,因此我大部分都使用默認的ivy.xmls。如果您使用的是IvyRoundup,那麼您主要需要以傳遞方式映射「默認」配置。
如果您使用的是來自ant的ivy,並且您正在運行Ant 1.6或更高版本,則可以使用<import>
任務將構建文件片段包含在您的ant構建文件中。引用的文件必須是完整的Ant構建文件,但:
<?xml version="1.0"?>
<project name="my-project" default="usage" basedir=".">
<target name="setup">
...
</target>
<import file="./common.xml"/>
...
</project>
你也可以使用標準的XML語法從ivy.xml
或build.xml
文件中:
<?xml version="1.0"?>
<!DOCTYPE project [
<!ENTITY common SYSTEM "common.xml">
]>
<project name="my-project" default="usage" basedir=".">
<target name="setup">
...
</target>
&common;
...
</project>
這將字面上包括common.xml
內容你已經放置了&common;
實體。