【问题标题】:Classes folder instead of jars in Jetty configurationJetty 配置中的类文件夹而不是 jars
【发布时间】:2013-09-24 19:40:28
【问题描述】:

我正在将我们的 Web 应用程序从 Tomcat 7 迁移到 Jetty 9。Ant 任务用于 Jetty 启动。 Jar 文件位于 WEB-INF/lib 下,class 文件位于 .build/classes 下。

问题是:有没有办法在执行注解扫描时指定一个包含类文件而不是jar的文件夹?

下面是使用的 Ant 目标配置:

  <target name="jetty.run">
    <jetty.run tempDirectory="jetty-temp">
      <webApp war="app" contextpath="/">
        <attributes>
          <attribute name="org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern" value=".*/.*jsp-api-[^/]*\.jar$|.*/.*jsp-[^/]*\.jar$|.*/.*taglibs[^/]*\.jar$"/>
          <attribute name="org.eclipse.jetty.server.webapp.WebInfIncludeJarPattern" value=".*classes.*"/>
        </attributes>
        <classes dir=".build/classes">
          <include name="**/*.class" />
        </classes>
        <!--<lib dir=".build/classes">
          <include name="**/*.class" />
        </lib>-->
      </webApp>
      <connectors>
        <connector port="8090"/>
        <connector port="80"/>
      </connectors>
    </jetty.run>
  </target>

我尝试指定 classes 元素,但它似乎被忽略了(.build 文件夹位于 build.xml 所在的同一位置)。因此,必须构建应用程序代码 jar 并将其复制到 WEB-INF/lib 才能使应用程序正常启动。

Jars 位于标准位置,但类不存在。这会以某种方式导致这种情况吗?

如果有任何帮助,我将不胜感激。

谢谢, 活力。

【问题讨论】:

  • 这可能是因为jetty从注释扫描中排除了以"."开头的目录,因为它们被认为是隐藏目录。
  • 哦,我明白了。谢谢!我将它重命名为build(只是我们将此文件夹用于Eclipse编译的类,但不会有问题)。

标签: java ant jetty


【解决方案1】:

我认为您应该为此在码头上打开一个错误:https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Jetty

jetty-ant 集成将添加到类路径中,但不幸的是它不会扫描它们以查找注释。

如果您升级到 jetty-9.1.0.M0,那么您可以尝试将 classes dir 指定为 ,因为我们在 extraClasspath 上实现了注解扫描,存在以下错误:https://bugs.eclipse.org/bugs/show_bug.cgi?id=416597。但是请注意,正如 Joakim 所说,目录名称不能以“。”开头。因为这表示一个隐藏目录。

问候 一月

【讨论】:

  • 感谢您的帮助。我认为我现在会坚持使用 jar 编译,并将重命名 .build 为 build。并且将等待 Jetty 9.1 最终版本。再次感谢 Vitaliy。
猜你喜欢
  • 2014-02-14
  • 1970-01-01
  • 2014-12-26
  • 2016-06-09
  • 2016-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-29
相关资源
最近更新 更多