是否可以从具有相同jar名称的不同目录发布jar并控制通过配置使用哪个?

时间:2015-07-01 14:06:31

标签: ant ivy

我正在尝试将一些常春藤依赖管理添加到遗留系统的构建过程中,因此我们可以在下游项目和开发环境中以比我们目前更好的方式管理我们生产的人工制品的使用。然而,我们的一个构建(让我们称之为模块-X)在两个不同的目录中产生两个不同版本的jar文件,用于基于批处理和基于浏览器的应用程序以及两者使用的一些常见工件。即:

  • bin \ batch \ DataObjects.jar - 批处理过程使用
  • bin \ browser \ DataObjects.jar - 基于浏览器使用 申请
  • bin \ common * - 批处理和浏览器使用的jar

我想设置常春藤:发布所以我们可以使用browser \ DataObjects.jar,当依赖于带有浏览器配置的module-X和使用批量配置时的批量\ DataObjects.jar,这是可能的使用单个模块?或者我最好拥有多个ivy.xml模块描述符并将它们作为单独的模块发布/使用?

1 个答案:

答案 0 :(得分:2)

您的发布管理计划最能回答这个问题。这些文件是否一起发布并且应该具有相同的版本号?另一方面,如果每个工件都有自己的生命,并且可以单独发布,那么最好建议使用单独的模块。

为了帮助决定,请问自己以下问题。如果更改源文件,则会导致需要重新编译这两个二进制文件?如果是,一起释放它们。如果没有那么可能更容易单独发布它们。

最后,是的,当将多个文件作为同一模块的一部分发布时,可以设置两个配置,以便在依赖关系映射中单独下载每个文件。

<ivy-module version="2.0" xmlns:m="http://ant.apache.org/ivy/maven">
   <info organisation="org.demo" module="myfiles"/>

   <configurations>
      <conf name="default" extends="master,sources,javadoc"/>
      <conf name="master" description="contains only the artifact published by this module itself, with no transitive dependencies"/>
      <conf name="sources" description="this configuration contains the source artifact of this module, if any."/>
      <conf name="javadoc" description="this configuration contains the javadoc artifact of this module, if any."/>
   </configurations>
   <publications>
      <artifact name="myfile" type="jar" ext="jar" conf="master"/>
      <artifact name="myfile" type="source" ext="jar" conf="sources" m:classifier="sources"/>
      <artifact name="myfile" type="javadoc" ext="jar" conf="javadoc" m:classifier="javadoc"/>
   </publications>
   <dependencies>
   ..
   </dependencies>
</ivy-module>