Java 蚂蚁战争任务是如何工作的?
我有一个关于我今天在工作中遇到的事情的问题 我有两个用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是如何整理战争文件的?我想,如果它使用一个临时目录来存储要打包的文件,我将无法拥有两个同名的文件 第二: 当我在OC4J上部署它,并查看包含分解的ear/war文件的目录时,正如我所期望的,只有1个projectA.jar文件。它如何确定使用哪个文件,这并不重要?我只是好奇 这是问题的根源,因为projectA在不同的机器上构建的方式不同,这本身就是另一个问题。但是从两台机器中选择的jar总是一致的,一台机器的构建总是可以工作的,而另一台机器的构建则不能Java 蚂蚁战争任务是如何工作的?,java,ant,build,oc4j,ear,Java,Ant,Build,Oc4j,Ear,我有一个关于我今天在工作中遇到的事情的问题 我有两个用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.ja
谢谢你的帮助。战争只是一个zip文件。因此,可以包含两个同名文件。甚至有人这样说: 请注意,Zip格式允许 同一文件的多个文件 完全限定名称,以存在于 单一档案 Ant不使用临时目录来构建WAR。这一切都是在记忆中完成的 由于在Windows中不能存在两个同名文件,因此在提取过程中会忽略其中一个文件。我不确定哪一个被忽略了,但我猜第一个添加的是唯一一个提取的 要避免此类错误,您需要明确排除以下文件之一:
<war destfile="myapp.war" webxml="src/metadata/myapp.xml">
<lib dir="libs">
<exclude name="projectA.jar"/>
</lib>
<lib dir="projectAlibs"/>
...
</war>
...
战争只是一个zip文件。因此,可以包含两个同名文件。甚至有人这样说: 请注意,Zip格式允许 同一文件的多个文件 完全限定名称,以存在于 单一档案 Ant不使用临时目录来构建WAR。这一切都是在记忆中完成的 由于在Windows中不能存在两个同名文件,因此在提取过程中会忽略其中一个文件。我不确定哪一个被忽略了,但我猜第一个添加的是唯一一个提取的 要避免此类错误,您需要明确排除以下文件之一:
<war destfile="myapp.war" webxml="src/metadata/myapp.xml">
<lib dir="libs">
<exclude name="projectA.jar"/>
</lib>
<lib dir="projectAlibs"/>
...
</war>
...
谢谢,是的,我排除了文件,没有问题,我只是好奇ant和zip创建的背景情况。谢谢,是的,我排除了文件,没有问题,我只是好奇ant和zip创建的背景情况。