我是一个CM,负责我们的持续构建过程,并帮助开发人员正确定义和使用构建。我尝试以这样一种方式设置,即开发人员只需从源代码管理系统下载模块,然后输入ant或maven,一切都可以正常工作。
在Ant项目中,我要么使用ivy,要么有一个包含所需第三方jar文件的lib目录。这有助于我清楚地定义所有依赖项,并使开发人员更容易地将模块构建在他们的系统上。是的,有一些依赖于正确的JDK版本,有些依赖于正确的Ant版本,但即使这些版本也有点灵活。此外,枕和Jenkins/Hudson允许您定义您想要使用的确切的JDK和Ant版本。
问题是这个项目依赖于WebLogic10.3(又名11g)。在Weblogic 10之前,您几乎可以只使用weblogic.jar文件和其他一两个jars就可以了。从Weblogic 10开始,jars现在已经“模块化”了。
当我进行构建时,我仍然简单地将weblogic.jar包含在我的类路径中。但是,weblogic.jar在其MANIFEST.MF文件中包含对..\..\..\modules\features目录(实际上是包含WebLogic10.3的父目录)的引用。这里是不包含类路径的jars,但是它们的MANIFEST.MF中嵌入了指向其他jars的Classpath。这些反过来也可以参考其他的罐子。
我想我有一个选择:
module.
的位置。
这些选择现在对我都没有吸引力。
更新
正如其他人所指出的,我可以尝试找到各种jars,而我正是使用WebLogic9.x和早期版本做到了这一点。例如,一个简单的shell脚本:
find $WEBLOGIC_HOME -name "*.jar" | while read jar
do
echo "JAR NAME = jar"
jar tvf $jar
done | less会在我的终端上显示所有Weblogic的内容。如果我在一个javax.servlet.ServletException类缺失的构建中发现,我可以搜索javax\servlet\ServletException.class,然后返回搜索JAR NAME =并找到jar的名称。
然而,在Weblogic 10中,我发现我依赖于javax.servlet.ServletException,并将其追溯到C:\bea\modules\javax.servlet_1.0.0.0.0.jar,它甚至不在我的$WEBLOGIC_HOME目录中。这是因为C:\bea\wlserver_10.3\server\lib\weblogic.jar包含到..\..\..\modules\features\somejar.jar的类路径。而且somejar.jar不包含任何类。相反,它在其类路径中包含对另一个jar的引用,然后该jar引用javax.servlet_1.0.0.0.0.jar。
因此,我现在必须再添加四个jars,其中一个不包含类,如果我想模仿Weblogic的结构,我必须在我的lib目录中有以下文件:
weblogic.lib\wlserver_10.3\server\lib\weblogic.jarweblogic.lib\modules\features\somejar.jarweblogic.lib\modules\someOtherJar.jarweblogic.lib\modules\javax.servlet_1.0.0.0.0.jar好吧,那只花了两个小时就解决了。一个依赖问题降低了,还有43个问题要解决。
正如你所看到的,这可能需要几天,甚至几周的时间才能完成,最后我的...uh中会有几十个罐子.最小Weblogic 10模块。最后,这个最小的模块可能不会那么小。
有没有人知道一些文档可以让我快速确定这些依赖关系的存在位置,或者是一种构建依赖树的方法,以便当我需要类路径com.bea.weblogic.foo.bar.barfoo时,我可以很快看到我需要这7或8个jars?
发布于 2011-06-22 18:57:58
我放弃了。我只需安装Weblogic 10,并在我的build.xml中签入设置了$WEBLOGIC_HOME。
发布于 2011-03-08 20:11:30
我想您将不需要构建整个700 to的包。所以你可以(是的,这是要做的)构建你自己的“weblogic”文件,它描述了用于构建和测试的极小的jar集。将该文件发布到您的公司repo中,并在您的依赖型conf中使用它,您和您的开发人员只需使用最小的conf即可,它不应该比其他应用服务器-客户端包大多少。
https://stackoverflow.com/questions/5237270
复制相似问题