Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ant 在一个依赖项问题上发布多个常春藤模块_Ant_Ivy - Fatal编程技术网

Ant 在一个依赖项问题上发布多个常春藤模块

Ant 在一个依赖项问题上发布多个常春藤模块,ant,ivy,Ant,Ivy,我用常春藤来管理一堆相互依赖的deb文件。我正在为每个deb生成常春藤文件,并在需要时添加依赖项。我正在尝试发布,但这需要我先做一个解决步骤 我无法解决,因为没有一个模块在常春藤回购协议中。这些是运行时依赖项,我正在使用它们来从ivy repo中提取一个deb文件的配置 我尝试了ivy src附带的“多项目”示例,发现如果您试图发布“大小”项目,也会以同样的方式失败;我之前做了一个ant清理所有,以模拟没有工件/元数据作为repo。我注意到它正在使用() 这似乎不起作用。我使用生成的列表按顺序执

我用常春藤来管理一堆相互依赖的deb文件。我正在为每个deb生成常春藤文件,并在需要时添加依赖项。我正在尝试发布,但这需要我先做一个解决步骤

我无法解决,因为没有一个模块在常春藤回购协议中。这些是运行时依赖项,我正在使用它们来从ivy repo中提取一个deb文件的配置

我尝试了ivy src附带的“多项目”示例,发现如果您试图发布“大小”项目,也会以同样的方式失败;我之前做了一个
ant清理所有
,以模拟没有工件/元数据作为repo。我注意到它正在使用
()

这似乎不起作用。我使用生成的列表按顺序执行发布,并获得相同的问题

为什么构建列表返回的文件集与构建列表中的文件集相同

    <target name="publish-shared" depends="" description="--> Publish project's artifacts to SHARED repository">
            <ivy:buildlist reference="ivy.dep.files">
                    <fileset dir="${ivy.build.dir}" includes="**/ivy.xml"/>
            </ivy:buildlist>
            <for param="ivy.dep.file" list="${toString:ivy.dep.files}" delimiter=":">
                    <sequential>
                            <antcall target="publish-shared-onemod" inheritAll="true" inheritRefs="true">
                                    <param name="ivy.dep.file" value="@{ivy.dep.file}" />
                            </antcall>
                    </sequential>
            </for>
    </target>
    <target name="publish-shared-onemod">
            <ivy:resolve />
            <ivy:publish resolver="shared" artifactspattern="${target.dir}/[artifact].[ext]" status="integration" />
    </target>

更新: 我不得不撤销构建列表

但非常奇怪的是,当我指定一个根模块时(例如:
),它不需要相反的代码。我一定是做错了什么,但在出现错误之前,我将使用反向操作。

与其从父构建脚本发布,不如让每个子模块执行自己的ivy解析和发布

该任务将确定正确的构建顺序,然后每个子模块将递增地构建下一个模块的依赖项:

<target name="build-list">
    <ivy:buildlist reference="build-path">
        <fileset dir="." includes="modules/**/build.xml"/>
    </ivy:buildlist>
</target>

<target name="publish" depends="build-list">
    <subant target="publish" buildpathref="build-path" />
</target>

注:

  • 该任务比“for”任务更简单,后者是对ant contrib的外部依赖

我不能按照您建议的方式进行操作,因为我没有针对每个模块的ant脚本。其他信息:我正在通过CMake流程生成debian PKG。ivy.xml文件还生成了它们的长边。正因为如此,我的项目的每一部分都没有build.xml文件。我希望在构建目录的根目录下使用一个ant脚本来解决这个问题。我尝试了这个方法,在echo语句中得到了等价的输出
ivy.dep.files=${toString:ivy.dep.files}***************tmp=${toString:tmp}