我有一个相当大的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;
实体。