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
尝试使用Weblogic 10.3依赖项进行Ant构建_Ant_Build_Ivy_Weblogic 10.x_Weblogic11g - Fatal编程技术网

尝试使用Weblogic 10.3依赖项进行Ant构建

尝试使用Weblogic 10.3依赖项进行Ant构建,ant,build,ivy,weblogic-10.x,weblogic11g,Ant,Build,Ivy,Weblogic 10.x,Weblogic11g,我是一名CM,负责我们的持续构建过程,并帮助开发人员正确定义和使用构建。我试图以这样一种方式进行设置,即开发人员只需从源代码控制系统下载模块,然后键入ant或maven,然后一切正常 在Ant项目中,我要么使用ivy,要么有一个lib目录,其中包含所需的第三方jar文件。这有助于我清楚地定义所有依赖项,并使开发人员能够轻松地在他们的系统上构建模块。是的,有一些依赖于正确的JDK版本,也有一些依赖于正确的Ant版本,但即使是这些版本也有点灵活。此外,Ecipse和Jenkins/Hudson允许您

我是一名CM,负责我们的持续构建过程,并帮助开发人员正确定义和使用构建。我试图以这样一种方式进行设置,即开发人员只需从源代码控制系统下载模块,然后键入
ant
maven
,然后一切正常

在Ant项目中,我要么使用
ivy
,要么有一个
lib
目录,其中包含所需的第三方jar文件。这有助于我清楚地定义所有依赖项,并使开发人员能够轻松地在他们的系统上构建模块。是的,有一些依赖于正确的JDK版本,也有一些依赖于正确的Ant版本,但即使是这些版本也有点灵活。此外,Ecipse和Jenkins/Hudson允许您定义想要使用的确切JDK和Ant版本

问题在于这个项目依赖于WebLogic10.3(又名11g)。在WebLogic10之前,您几乎可以只使用Weblogic.jar文件,或者使用一个或两个其他jar。从Weblogic 10开始,JAR现在已经“模块化”

当我进行构建时,我仍然只是在类路径中包含
weblogic.jar
。但是,
weblogic.jar
在其
MANIFEST.MF
文件中包含对
。\..\..\modules\features
目录(实际上是包含weblogic 10.3的父目录!)的引用。这里是不包含类路径的JAR,但它们自己在
MANIFEST.MF
中嵌入了一个指向其他JAR的类路径。这些反过来可以参考其他罐子

我想我有以下选择之一:

  • 在我的源代码库中为每个模块包含整个10900文件700Mb Weblogic
  • 使用Maven或Ivy作为单个tarball下载Weblogic。卸载文件,然后执行我的生成
  • 告诉开发人员他们必须下载Weblogic 10.3,然后修改构建过程以指向他们安装Weblogic 10.3的位置
  • 这些选择现在都没有真正吸引我


    更新 正如其他人所指出的,我可以尝试找到各种JAR,我使用WebLogic9.x和早期版本就做到了这一点。例如,一个简单的shell脚本:

    find $WEBLOGIC_HOME -name "*.jar" | while read jar
    do
       echo "JAR NAME = jar"
       jar tvf $jar
    done | less
    
    将在我的终端上显示所有Weblogic JAR的内容。如果我在一个构建中发现
    javax.servlet.ServletException
    类丢失,我可以搜索
    javax\servlet\ServletException.class
    ,然后返回搜索
    JAR NAME=
    并找到JAR的名称

    然而,在Weblogic 10中,我发现我依赖于
    javax.servlet.ServletException
    ,并将其追溯到
    C:\bea\modules\javax.servlet\u 1.0.0.0.jar
    ,它甚至不在我的
    $Weblogic\u HOME
    目录中。这是因为
    C:\bea\wlserver\u 10.3\server\lib\weblogic.jar
    包含到
    。\..\..\modules\features\somejar.jar
    的类路径。而且
    somejar.jar
    不包含任何类。相反,它在其类路径中包含对另一个jar的引用,然后引用
    javax.servlet_1.0.0.0.jar

    因此,我现在必须再添加四个JAR,其中一个不包含任何类,如果我想模拟Weblogic的结构,我必须在我的
    lib
    目录中包含以下文件:

    • weblogic.lib\wlserver\u 10.3\server\lib\weblogic.jar
    • weblogic.lib\modules\features\somejar.jar
    • weblogic.lib\modules\someOtherJar.jar
    • weblogic.lib\modules\javax.servlet\u 1.0.0.0.jar
    好的,这只花了2个小时就解决了。一个依赖问题解决了,还有43个问题要解决

    正如你所见,这可能需要几天,甚至几周的时间才能完成,最终在我的……嗯。。。最小Weblogic 10模块。最后,这个最小的模块可能没有那么小


    有没有人知道一些文档可以让我快速确定这些依赖关系存在的位置,或者一种构建依赖关系树的方法,这样当我需要classpath com.bea.weblogic.foo.bar.barfoo时,我可以快速看到我需要这些7或8个jar?

    我想你不需要整个700MB包来构建。因此,您可以(是的,这是需要做的一些工作)构建自己的“weblogic ivy”文件,该文件描述了用于构建和测试的mininmal jar集。
    将该文件发布到您的公司repo,并在依赖项配置中使用它,您和您的开发人员只需使用最小配置即可,该配置不应比其他应用服务器客户端软件包大多少。

    我放弃了。我只是简单地安装了Weblogic 10,并在我的
    build.xml
    中检查设置了
    $Weblogic\u HOME

    我们对构建使用了概念上类似的方法(减去源代码库中的常春藤罐子),效果很好。你只需要努力确定需要哪些罐子。我敢打赌,它将是主weblogic.jar文件之上的一个非常小的子集。当然,您需要实际安装来运行单元测试,但是能够在不安装WLS的情况下进行构建仍然很有用。对于WebLogic9.x,它是Weblogic.jar,可能还有两三个。我可以通过一点侦查很容易地找到答案。然而,事实证明,这要复杂得多。