【问题标题】:how to deploy all dependencies to tomcat in my build.xml如何在我的 build.xml 中将所有依赖项部署到 tomcat
【发布时间】:2017-01-11 21:01:00
【问题描述】:

我在build.xml 中有一个技巧,可以将所有依赖项下载到缓存中:

<target name="init" depends="init-ivy">
  ...
  <ivy:cachepath
    inline="true"
    module="jersey-container-servlet"
    organisation="org.glassfish.jersey.containers"
    pathid="jersey.classpath"
    revision="2.23.2"/>
  <ivy:cachepath
    inline="true"
    module="javax.json"
    organisation="org.glassfish"
    pathid="json.classpath"
    revision="1.0.4"/>
  ...
</target>

代码编译成功并创建了war 文件。现在我需要编写一个将应用程序部署到 tomcat 的任务。我需要将所有依赖项复制到应用程序的WEB-INF/lib。这是怎么做到的?也许有一种方法可以将依赖项的 JAR 包含到 WAR 文件中?我是 Java 开发新手,请帮忙。

【问题讨论】:

    标签: java tomcat ant ivy


    【解决方案1】:

    以下答案概述了使用ivy file 的综合解决方案。

    它回答了一个不同的问题(“提供的”依赖项),但您最终将面临一个问题,因为并非您在构建中使用的所有 jar 都需要随您的应用程序一起提供(因为它们已经存在于 tomcat 上)。

    尝试将此答案应用于您的问题并不简单,因为您正在以内联模式(无常春藤文件)解决您的依赖关系。首先,我建议将您的依赖项组合到一个路径中,而不是围绕每个依赖项创建路径:

    <ivy:cachepath pathid="compile.classpath">
      <dependency org="org.glassfish" name="javax.json" rev="1.0.4" />
      <dependency org="org.glassfish.jersey.containers" name="jersey-container-servlet" rev="2.23.2" />    
    </ivy:cachepath>
    

    其次(并回答您的问题),这是用于将常春藤文件放在文件系统上的备用常春藤retrieve 任务。它也可以支持inline resolution,如下:

    <ivy:retrieve pattern="${build.dir}/lib/[artifact].[ext]">
      <dependency org="org.glassfish" name="javax.json" rev="1.0.4" />
      <dependency org="org.glassfish.jersey.containers" name="jersey-container-servlet" rev="2.23.2" />    
    </ivy:retrieve>
    
    <war destfile="${war.file}" webxml="${resources.dir}/web.xml">
        <fileset dir="${resources.dir}" excludes="web.xml"/>
        <lib dir="${build.dir}/lib"/>
    </war>
    

    因此,总而言之,虽然这个建议的答案可行,但我建议调查配置如何与外部 ivy 文件协同工作以管理您的依赖项。配置可能看起来很有挑战性,但它们也非常强大。


    您的另一个问题是相关的。使用 ivy 的内联模式很方便,但不是使用 ivy 最有效的方式。对 resolve 任务的一次调用可用于确定项目的所有依赖项,并使用配置将它们划分为各种类路径或文件集等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-17
      • 2012-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多