为什么我的ant构建器构建了我的某个依赖项的过时版本?

时间:2016-11-28 01:31:18

标签: eclipse ant

我正在研究两个java项目。项目A使用项目B作为引用库。我需要在一个jar文件中从这两个项目中导出我的代码。为此,我在项目A中创建了一个lib/文件夹,并自动将项目B导出到该文件夹​​。然后,我自动使用类似这样的构建文件导出项目A,这样lib/文件夹中的所有jar文件都包含在最终的jar中:

<?xml version="1.0" encoding="UTF-8"?>
<project name="projectA" default="makejar" basedir=".">
    <target name="makejar" description="Create a jar for the project">
        <jar destfile="/destination/file/path/projectA.jar">
            <fileset dir="bin/"></fileset>
            <zipgroupfileset dir="./lib" includes="**/*.jar"/>
        </jar>
   </target>
</project>

这已经好几个月了。然而,几个小时前,它开始只导出一个过时的B版本。我反编译了lib/文件夹中的代码并确定B导出确实是最新的。但是,目标文件中的反编译代码包含B的过时版本。

我试过了:

  • 重启eclipse
  • 清理/重建所有项目
  • 删除目的地的现有jar文件
  • lib/删除B,重新导出B,并重新配置A
  • 的构建路径
  • 窗口 - &gt;显示视图 - &gt;问题

如何诊断此问题?如果您有更好的方法来管理依赖关系,那么我就不必将开发时间的30%投入到这样的事情中。

1 个答案:

答案 0 :(得分:0)

如果有人遇到这个问题,我会发布我在这里找到的解决方案。我认为这是一个提出这个问题的错误地方,但我感到非常绝望。

在我的问题中,我只给出了我的设置的大大简化版本。实际上,我有10个项目,其中许多项目相互依赖。

在这种情况下,问题是Project C也是A {'1}}文件夹的一部分,也依赖于Project B.但是,我在Eclipse中关闭了C,所以C不是&# 39;自动导出。由于某种原因,我的蚂蚁构建者允许C的引用在编译时覆盖A对B的引用。