2

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

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

问题是这个项目依赖于 Weblogic 10.3(又名 11g)。在 Weblogic 10 之前,您几乎可以只使用 weblogic.jar 文件和一两个其他 jars。从 Weblogic 10 开始,jar 现在是“模块化的”。

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

我想我有以下选择之一:

  1. 在我的源存储库中为每个模块包含整个 10,900 个文件、700Mb Weblogic。
  2. 不知何故,使用 Maven 或 Ivy 作为单个 tarball 下载 Weblogic。解压文件,然后进行我的构建。
  3. 告诉开发人员他们必须下载 Weblogic 10.3,然后修改构建过程以指向他们安装 Weblogic 10.3 的位置。

这些选项现在都没有真正吸引我。


更新

正如其他人指出的那样,我可以尝试找到各种 jar,而我正是使用 Weblogic 9.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_1.0.0.0.0.jar甚至不在我的$WEBLOGIC_HOME目录中的那个。这是因为C:\bea\wlserver_10.3\server\lib\weblogic.jar包含指向..\..\..\modules\features\somejar.jar. 并且somejar.jar不包含任何类。相反,它在其类路径中包含对另一个 jar 的引用,然后引用javax.servlet_1.0.0.0.0.jar.

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

  • weblogic.lib\wlserver_10.3\server\lib\weblogic.jar
  • weblogic.lib\modules\features\somejar.jar
  • weblogic.lib\modules\someOtherJar.jar
  • weblogic.lib\modules\javax.servlet_1.0.0.0.0.jar

好的,只花了大约 2 个小时就解决了。一个依赖问题下降了,还有 43 个问题要解决。

如您所见,这可能需要几天甚至几周的时间才能完成,并且最终会在我的……呃……最小的Weblogic 10 模块中产生数十个 jar。最后,这个最小的模块可能不会那么小。

有谁知道可能有一些文档可以让我快速确定这些依赖项存在的位置,或者一种构建依赖项树的方法,这样当我需要类路径 com.bea.weblogic.foo.bar.barfoo 时,我可以快速查看我需要这 7 或 8 个罐子吗?

4

2 回答 2

1

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

于 2011-03-08T20:11:30.957 回答
1

我放弃。我只是安装了 Weblogic 10 并签入了我build.xml$WEBLOGIC_HOME设置。

于 2011-06-22T18:57:58.613 回答