我有一个关于我今天在工作中遇到的事情的问题。
我有两个使用 ant 构建脚本构建的项目。
让我们称他们为 projectA 和 projectB。
ProjectA 构建 projectA.jar,projectB 构建 projectB.war 和 projectB.ear。
ProjectB.war 在 web-inf lib 目录中包含 projectA.jar。
在 projectB 中有一个 lib 目录,它包含 projectA.jar。
在这个构建场景中,projectB 的构建文件直接从 projectA 中拉入 projectA.jar,它还从 projectB lib 目录中拉入 projectA.jar(我知道不好的做法,但我继承了这个项目,并且正在修复它:)) .
所以当war和后续的ear文件构建时,在projectb.war的web-inf lib目录下有两个projectA.jar文件。
所以第一个问题是:
ant是怎么把war文件放在一起的?我想如果它使用临时目录来存储要打包的文件,我将无法拥有两个同名的文件?
第二:
当我在 OC4J 上部署它并查看包含已展开的 ear/war 文件的目录时,正如我所料,只有 1 个 projectA.jar 文件。它如何确定使用哪个文件,并不重要?我只是好奇。
这是问题的根源,因为项目 A 在不同机器上的构建方式不同,这本身就是另一个问题。但是从两者中选择的 jar 始终是一致的,来自一台机器的构建总是可以工作,而来自另一台机器的构建则不能。
谢谢你的帮助。