具有多个构建(配置文件)的模块的常春藤存储库结构?

时间:2012-02-09 01:45:52

标签: ant ivy

我正在使用Ant和Ivy在.NET商店中进行依赖关系管理并取得了很大成功,但我无法找到解决此问题的方法。我的问题涉及具有多个不同配置文件的模块的存储库结构(缺少 一个更好的术语)。例如,我试图在存储库中设置的模块(它是第三方库 - Castle)已经针对不同版本的.NET平台进行了编译。此分发具有以下目录结构:

  • net35 / Castle.Core.dll
  • net40clientprofile / Castle.Core.dll
  • SL3 / Castle.Core.dll
  • SL4 / Castle.Core.dll

我的ivysettings.xml文件的文件解析器设置如下:

<filesystem name="fs.resolver" cache="nn.repo.cache">
    <ivy pattern="${repository.dir}/[organisation]/[module]/[shortRevision]/[revision]/ivy.xml" />
    <artifact pattern="${repository.dir}/[organisation]/[module]/[shortRevision]/[revision]/[artifact].[ext]" />
</filesystem>

起初,我认为可以使用配置,但没有 取得很大进展。如何在Ivy.xml文件中多次指定具有相同名称的工件?我认为你不能。另外,如果我在存储库中添加子目录,我会 必须修改ivysettings.xml中的工件模式吗?

Ivy建议使用此模块的建议方法是什么? 这个模块的Ivy.xml文件是什么样的?怎么会 需要为此修改ivysettings.xml文件吗?

希望我不必为同一版本的库的每个不同编译创建单独的模块。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

在常春藤中,您可以将extra attributes添加到模块工件中。

项目设置:

|-- build.xml
|-- ivysettings.xml
|-- ivy.xml
`-- repository
    `-- myorg
        `-- Castle
            `-- 1.0
                |-- ivy.xml
                |-- net35
                |   `-- Castle.Core.dll
                |-- net40clientprofile
                |   `-- Castle.Core.dll
                |-- sl3
                |   `-- Castle.Core.dll
                `-- sl4
                    `-- Castle.Core.dll

<强>的ivy.xml

使用配置映射选择要下载的工件:

 <ivy-module version="2.0">
    <info organisation="org.demo" module="demo"/>
    <dependencies>
        <dependency org="myorg" name="Castle" rev="1.0" conf="default->net35"/>
    </dependencies>
</ivy-module>

<强> ivysettings.xml

工件模式包含名为“profile”的extra attribute

<ivysettings>
    <settings defaultResolver="local"/>
    <resolvers>
        <filesystem name="local">
            <ivy pattern="${ivy.settings.dir}/repository/[organisation]/[module]/[revision]/ivy.xml" />
            <artifact pattern="${ivy.settings.dir}/repository/[organisation]/[module]/[revision]/[profile]/[artifact].[ext]" />
        </filesystem>
    </resolvers>
</ivysettings>

<强>库/ MYORG /城堡/ 1.0 /的ivy.xml

extra attribute“profile”用于区分模块中的工件。这些配置用于启用客户端模块的配置映射。

<ivy-module version="2.0" xmlns:e="http://ant.apache.org/ivy/extra">
    <info organisation="myorg" module="Castle" revision="1.0" status="release"/>
    <configurations>
        <conf name="net35"/>
        <conf name="net40clientprofile"/>
        <conf name="sl3"/>
        <conf name="sl4"/>
    </configurations>
    <publications>
        <artifact name="Castle.Core" type="dll" e:profile="net35" conf="net35"/>
        <artifact name="Castle.Core" type="dll" e:profile="net40clientprofile" conf="net40clientprofile"/>
        <artifact name="Castle.Core" type="dll" e:profile="sl3" conf="sl3"/>
        <artifact name="Castle.Core" type="dll" e:profile="sl4" conf="sl4"/>
    </publications>
</ivy-module>