我知道这是一个极其愚蠢的问题...但我正在将一个曾经使用 Ant 构建的 Java 项目转换为使用 Apache Maven。我读到的完成此操作的步骤之一是将项目所需的所有 JAR 作为依赖项放在 pom.xml 文件中。现在,由于我对这个项目不太熟悉,是否有任何属性设置可以让我清楚地查看所有 JAR 依赖项?我知道有些位于 WEB-INF\lib 目录中,但查看 Ant 的原始 build.xml 文件,似乎比它试图添加的要多。再说一遍,我对所有这些概念都很陌生,但我只是希望有一种简单的方法来确定 Java 项目具有哪些依赖项,以便我可以将它们(或它们的 Maven 等效项)添加到 pom.xml文件。有什么建议吗?
编辑:这是令我困惑的部分内容。当我打开尝试使用 Apache Tomcat 部署的项目的 WAR 文件时,这些是我能找到的唯一 JAR 文件...
images
META-INF
util
WEB-INF
> classes
> lib
> jtds-1.2.4.jar
> jw-core-web-1.2.0.jar
> web.xml
blah.jsp
blah.jsp
blah.jsp
我认为我至少需要这两个文件。但是当我打开 build.xml 文件时,我发现这样的部分:
<!-- Jars listed here are added to the generated war file -->
<fileset id="bundle.jars" dir="WebRoot/WEB-INF/lib">
<include name="base.jar"/>
<include name="ldap.jar"/>
<include name="junit.jar"/>
<include name="titan.jar"/>
<include name="activation.jar"/>
<include name="javamail-1.2.jar"/>
<include name="commons-httpclient.jar"/>
</fileset>
当然,我在上面简要展开的 WAR 文件中没有看到任何这些 jar。此外,JRE 系统库与 JAR 文件列表一起列在我的 Package Explorer 下。现在,我是否也需要将这些添加到我的依赖项列表中?这是我得到的:
JRE System Library
> resources.jar
> rt.jar
> jsse.jar
> jce.jar
> charsets.jar
> dnsns.jar
> dns_sd.jar
> localedata.jar
> sunjce_provider.jar
最佳答案
如果您在 Eclipse 中设置了项目,那么您应该能够在 Project Explorer View 中查看所有依赖项。它们必须位于构建路径上才能正确编译。
在 Ant 方面,我假设运行时所需的 jar 将与构建的其余部分一起复制到某个位置。如果您的项目正在构建为 WAR,则尤其如此。
如果没有复制任何内容,那么最好的选择是通过仔细扫描 build.xml 来查找所有编译时和运行时 jar。如果您要将其转换为 Maven,那么无论如何您都应该这样做。我认为要查找的关键部分是 javac 和 java Ant 任务。
顺便说一句,当您创建 pom.xml 并添加依赖项时,请通过在 Eclipse 中打开 pom.xml 并单击“依赖项层次结构”选项卡来密切关注依赖项层次结构。这有望阻止您添加冗余的顶级依赖项。
关于java - 在 Eclipse 中确定 Java 项目依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7168545/