【问题标题】:Apache Ant + Ivy build of a web application which is deployed to a local TomcatApache Ant + Ivy 构建了一个部署到本地 Tomcat 的 Web 应用程序
【发布时间】:2010-09-30 15:43:42
【问题描述】:

我将使用 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 的建议,即使该建议是出于好意。)

【问题讨论】:

    标签: java apache ant ivy


    【解决方案1】:

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

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

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

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

    希望这会有所帮助。

    【讨论】:

    • 感谢您的回答!它有很大帮助。然后我将使用 Maven2 存储库中可用的 servlet api jar 进行编译,因为 Tomcat 无论如何都会使用它自己的。到目前为止,这确实是最难的部分,很高兴您对此有所了解! :-)
    猜你喜欢
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    • 2015-05-20
    • 1970-01-01
    • 2015-12-25
    • 2011-08-11
    • 1970-01-01
    • 2011-08-10
    相关资源
    最近更新 更多