我正在从事两个Java项目。项目A使用项目B作为引用库。我需要在一个jarfile中从这两个项目中导出代码。为此,我在项目A中创建了一个lib/
文件夹,并自动将项目B导出到该文件夹。然后,我会自动导出具有这样的构建文件的项目A,因此lib/
文件夹中的所有jarfiles都包含在最终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。
我尝试过:
- 重新启动日食
- 清洁/重建所有项目
- 删除目的地的现有jarfile
- 从
lib/
中删除b,重新出口b,并重新配置我的构建路径 - 窗口 ->显示视图 ->问题
我该如何诊断这个问题?如果您有更好的管理依赖性方法,那么我不必将大约30%的开发时间陷入此类内容。
在其他任何人都遇到的机会上,我将在此处发布我找到的解决方案。我认为这是问这个问题的错误的地方,但我越来越拼命。
在我的问题中,我只给出了我的设置的大量简化版本。实际上,我有10个项目,其中许多项目相互依赖。
在这种情况下,问题是,也是A的lib/
文件夹的一部分,也依赖于项目。但是,我在Eclipse中关闭C,因此C并未自动出口。由于某种原因,我的蚂蚁构建器允许C的引用B覆盖A在编译时a的引用。