具有多个构建(概要文件)的模块的Ivy存储库结构



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

  • net35/CastleCore.dll
  • net40客户端配置文件/CastleCore.dll
  • sl3/Castle.Core.dll
  • sl4/CastleCore.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文件?

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

提前感谢您的帮助。

在ivy中,您可以为模块工件添加额外的属性。

项目设置:

|-- 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"的额外属性

<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>

repository/myorg/Castle/1.0/vivy.xml

额外的属性"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>

相关内容

  • 没有找到相关文章

最新更新