我正在研究两个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的过时版本。
我试过了:
lib/
删除B,重新导出B,并重新配置A 如何诊断此问题?如果您有更好的方法来管理依赖关系,那么我就不必将开发时间的30%投入到这样的事情中。
答案 0 :(得分:0)
如果有人遇到这个问题,我会发布我在这里找到的解决方案。我认为这是一个提出这个问题的错误地方,但我感到非常绝望。
在我的问题中,我只给出了我的设置的大大简化版本。实际上,我有10个项目,其中许多项目相互依赖。
在这种情况下,问题是Project C也是A {'1}}文件夹的一部分,也依赖于Project B.但是,我在Eclipse中关闭了C,所以C不是&# 39;自动导出。由于某种原因,我的蚂蚁构建者允许C的引用在编译时覆盖A对B的引用。