Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 蚂蚁战争任务是如何工作的?_Java_Ant_Build_Oc4j_Ear - Fatal编程技术网

Java 蚂蚁战争任务是如何工作的?

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

我有一个关于我今天在工作中遇到的事情的问题

我有两个用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总是一致的,一台机器的构建总是可以工作的,而另一台机器的构建则不能


谢谢你的帮助。

战争只是一个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创建的背景情况。