我有一个东西,我今天遇到的问题工作。

我有与Ant构建脚本构建两个项目。

让我们称之为了projectA和项目B。

项目A构建projectA.jar,和项目B建立projectB.war,和projectB.ear。

ProjectB.war包括在WEB-INF lib目录projectA.jar。

在项目B有一个lib目录,它包含projectA.jar。

在此版本为场景的项目B构建文件中projectA.jar从了projectA直接拉动,同时也从项目B lib目录(我知道不好的做法,但我继承了这个项目,并正在将其固定在拉projectA.jar :))。

所以,当战争和随后的耳朵文件是建立在projectb.war的WEB-INF lib目录下有两个projectA.jar文件。

因此,第一个问题是:

如何蚂蚁把war文件一起?我想如果是使用临时目录来存放包装的文件,我就不能有两个文件瓦特/同名?

第二

当我部署在此OC4J,并期待在包含爆炸耳朵/战争的文件,则只有1 projectA.jar文件,如我期望的目录。它是如何确定哪些文件被使用,并不重要?我只是好奇。

这是作为了projectA是在不同的机器本身构建不同,另一个问题问题的根源。但是,选择了两个瓶子是始终保持一致,从一台机器的生成总是工作,一个从另一台机器不会。

感谢您的帮助。

有帮助吗?

解决方案

一个WAR是一个简单的zip文件。正因为如此可以包含具有相同名称的两个文件。它甚至是这么说在 Ant手册

  

请注意,Zip格式允许   相同的多个文件   完全合格的名称内的存在   单个归档文件。

蚂蚁不使用一个临时目录来构建WAR。它在内存中全部完成。

由于在Windows中两个文件具有相同的名称不能存在,其中之一是在萃取过程中忽略。我不知道哪一个被忽略,但我的猜测是,添加的第一个是提取的唯一的一个。

要避免这种错误,你需要明确排除的文件之一:

<war destfile="myapp.war" webxml="src/metadata/myapp.xml">
  <lib dir="libs">
    <exclude name="projectA.jar"/>
  </lib>
  <lib dir="projectAlibs"/>
...
</war>

     

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top