这是一个令人难以置信的愚蠢问题,我知道......但是我正在使用Ant构建的Java项目转换为Apache Maven。我为实现这一目标而阅读的其中一个步骤是将pom.xml文件中所需的所有JAR项目作为依赖项。现在,既然我对这个项目并不太熟悉,那么我是否可以通过任何属性设置来清楚地查看所有JAR依赖项?我知道有些是在WEB-INF \ lib目录中,但是查看Ant的原始build.xml文件,似乎不仅仅是它试图添加的文件。同样,我对所有这些概念都很陌生,但我只是希望有一种简单的方法来确定Java Project具有哪些依赖关系,以便我可以将它们 - 或者它们的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文件中的任何这些罐子。此外,JRE系统库列在我的Package Explorer下以及JAR文件列表中。现在,我是否还需要将这些添加到我的依赖列表中?这就是我所拥有的:
JRE System Library
> resources.jar
> rt.jar
> jsse.jar
> jce.jar
> charsets.jar
> dnsns.jar
> dns_sd.jar
> localedata.jar
> sunjce_provider.jar
答案 0 :(得分:1)
如果您在Eclipse中设置了项目,那么您应该能够在Project Explorer视图中查看所有依赖项。它们必须位于构建路径上才能正确编译。
在Ant方面,我认为运行时的必要jar将被复制到其余构建的某个地方。如果您的项目正在构建到WAR中,则尤其如此。
如果没有复制任何内容,那么最好的方法是仔细扫描build.xml来搜寻所有编译时和运行时jar。如果你将它转换为Maven,这应该是你应该做的事情。我想要寻找的关键部分是javac和java Ant任务。
作为旁注,在创建pom.xml并添加依赖项时,请通过在Eclipse中打开pom.xml并单击Dependency hierarchy选项卡来关注依赖层次结构。这有望阻止您添加冗余的顶级依赖项。
答案 1 :(得分:0)
Eclipse Java自然依赖关系倾向于在project/.classpath
文件中定义。容器依赖项(目标服务器)将列为kind="con"
;这将提供像servlet API依赖的东西。
Web模块(WST)依赖项在project/.settings/org.eclipse.wst.common.component
(“虚拟”lib
目录jar)中定义。
如果您的WAR是EAR文件的一部分,您可能还需要检查project/WebContent/META-INF/MANIFEST.MF
类路径属性。
这可能不包括您在运行时需要的所有瞬态依赖项(依赖项的依赖项)。
我应该补充一点,就像Eclipse Helios这样的实现细节是正确的,但可能会有所变化。
请注意,Maven和Ant是不同的野兽。 Maven可以根据需要提供瞬态依赖关系,而Ant脚本可能必须明确定义它们。
您不需要将JRE库添加到pom.xml中(尽管您可能需要设置Java版本)。鉴于JUnit位于Ant脚本依赖项列表中,这看起来更像是单元测试依赖项列表而不是运行时列表。
答案 2 :(得分:-1)
你的方法似乎对我而言。构建工具的变化实际上是项目中的一个重大变化。 Ant和maven不会以相同的方式处理依赖关系,因此从一个工具转换到另一个工具需要大量的人工而且你做得对。
但是你的选择似乎很好,我更容易将maven用于依赖,尽管其他任务(如部署,文件复制等)可能比使用ant而不是maven更容易实现。
此致 斯特凡