Ivy 如何分别发布模型和完整项目工件?

Ivy 如何分别发布模型和完整项目工件?,ivy,Ivy,ivy如何支持在多个阶段发布项目工件 假设我们有项目A和B,A依赖于B的模型,而B依赖于A的模型。(通常循环依赖并不是那么直接,但是这个例子很有用。我们的项目相对松散耦合,通过模型相互发送消息)模型本身不依赖任何东西,所以我可以轻松地构建这些工件。然而,虽然我可以构建moduleA-models.jar,但在获得moduleB-models.jar之前,我无法构建moduleA.jar。(当然,visa国际组织也同样适用于模块B。) 所以我想分两个阶段出版。我正是这么做的。我有一个ant目标构建

ivy如何支持在多个阶段发布项目工件

假设我们有项目A和B,A依赖于B的模型,而B依赖于A的模型。(通常循环依赖并不是那么直接,但是这个例子很有用。我们的项目相对松散耦合,通过模型相互发送消息)模型本身不依赖任何东西,所以我可以轻松地构建这些工件。然而,虽然我可以构建moduleA-models.jar,但在获得moduleB-models.jar之前,我无法构建moduleA.jar。(当然,visa国际组织也同样适用于模块B。)

所以我想分两个阶段出版。我正是这么做的。我有一个ant目标构建模型,然后发布“模型”常春藤形态。我运行所有构建/发布模型的项目。然后我返回并开始构建项目代码的其余部分。请注意,“返回并构建项目代码的其余部分”意味着一个新的发布调用。。。这一次使用的是所有工件,而不仅仅是模型工件

不管常春藤是什么。。有点不高兴。例如,它有时会看到模块A的“已发布”ivy.xml中只有模型jar,然后可能会发现模块A的更新ivy.xml中有模型jar和非模型jar。大体上,我可以通过“changing=“true”依赖标志来解决这个问题

然而,最近,即使是这样,我也失败了,艾薇正试图建立一个无序的项目,因此失败了。此外,我偶尔也会遇到项目版本缺失的问题(这又是因为在同一个构建周期内,它会看到一个项目的ivy.xml的两个不同版本)


那么这里推荐的方法是什么?可能是单独的常春藤项目(在相同的文件结构中)

为什么不构建一个公共模块来构建和发布包含消息模型类的jar呢

├── build.xml
├── common
│   ├── build.xml
│   ├── ivy.xml
│   └── src
|       ..
├── module1
│   ├── build.xml
│   ├── ivy.xml
│   └── src
|       ..
└── module2
    ├── build.xml
    ├── ivy.xml
    └── src
        ..
然后,每个模块都可以依赖于这些常见依赖项:

<dependency org="myproj.common" name="module1-model" rev="1.0"/>

根生成文件可以使用该任务根据ivy文件依赖关系确定模块生成顺序

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

<target name="build" depends="determine-build-order">
    <subant target="build" buildpathref="build-path" />
</target>


您所说的“模型”是什么意思?你是在问常春藤对多模块构建的支持吗。。简单的豆子。就我而言,协议缓冲区。你的问题仍然让人困惑。。。。我怀疑你想发布不止一种类型的工件?Ivy使用配置支持这一点。因此,“默认”配置可用于组合“module11.jar”和“module1 model.jar”工件。第二个“模型”配置将只包含第二个工件。模块的ivy文件中的这种设置将使客户机能够下载两个工件或仅下载模型工件作为依赖项。令人困惑举一个你正试图解决的问题的实例会很有帮助。你是对的。。我在提出这个问题时做得很差。现在编辑任务。(评论空间不足!)