2016-11-28 51 views
0

我正在开发两个java项目。项目A使用项目B作为参考库。我需要将这两个项目中的代码导出到一个jar文件中。为此,我在项目A中创建了一个lib/文件夹,并自动将项目B导出到该文件夹​​。我则自动导出项目中有像这样的,使得在lib/文件夹中所有jarfiles中都包含在最终的罐子构建文件:为什么我的蚂蚁生成器构建我的一个依赖关系的过期版本?

<?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
  • 窗口 - >显示视图 - >问题

我该如何去诊断这个问题?如果你有更好的管理依赖关系的方法,可以减少30%的开发时间。

回答

0

关于任何人遇到这个问题的机会,我会发布我在这里找到的解决方案。我想这是问这个问题的错误地方,但我变得绝望了。

在我的问题中,我只给出了我的设置的简化版本。实际上,我有10个项目,其中很多项目都依赖于对方。

在这种情况下,问题是项目C也是A的lib/文件夹的一部分,也依赖于项目B.但是,我在Eclipse中关闭了C,因此C没有被自动导出。由于某种原因,我的蚂蚁构建者允许C的B引用在编译时覆盖A对B的引用。