2

我将使用 Apache Ant 和 Apache Ivy 构建一个部署到本地 Tomcat 实例的 Web 应用程序(在开发期间)。我有一些疑问:

  1. 我想从运行良好的 Maven2 存储库中获取我的大部分依赖项,但是对于 servlet JAR,我想使用 Tomcat 提供的那个。有没有办法使用 Ivy 做到这一点?你觉得这样做怎么样?
  2. 我使用 Ant 下载 Ivy JAR 以将其“自动安装”到 ~/.ivy2/jar/ivy.jar 中,并且 Ivy 缓存位于其默认位置 ~/.ivy2/cache 。我故意将这两个位置都保留在项目目录之外。好主意?
  3. 您是否有一个示例,说明如何使用 Ant 构建文件、Ivy 解决依赖关系、编译 WAR 文件并将其部署到本地(目前)Tomcat 安装?我正在寻找可以作为最佳实践的东西,然后我可以进一步修改。
  4. 我在 Ivy 网站上使用了一些示例并对其进行了修改。有什么我应该改变的吗?构建文件可以在http://pastebin.com/f7b34abc2看到,因为我在这里粘贴 XML 代码时遇到了问题。

(请注意,我不是在寻找我应该使用Maven2的建议,即使这个建议是好的。)

4

1 回答 1

2

在运行时,tomcat 将使用它自己的,因为它的类加载器将排除其中包含的任何 jar javax.servlet.Servlet。如果您真的必须针对它进行编译,则必须在 ant 脚本中进行,然后复制它或在编译类路径中引用它。

另一方面,按需下载 ivy 是一个好主意,因为它会阻止像我过去所做的那样将 ivy jar 检查到项目 scm repo 中,无论您将其下载到项目目录还是用户主目录都是一个问题个人喜好。另一方面,常春藤缓存应该与其他项目共享,因此用户主目录是一个很好的位置。

完成 ivy:retrieve 后,构建 war 文件并没有什么不同,因为所需的 jar 文件将是项目的本地文件,只需像往常一样使用 ant war 任务来创建 war。这是 ivy 的一个优势,一旦 jar 被下载,它在构建中就没有更多的事情要做了,你可以使用 ant 来编译和打包你的项目。

快速查看您的构建文件,看起来非常理智。

希望这可以帮助。

于 2009-01-10T21:59:53.107 回答