2

我一直在一个项目上独自工作很长时间,现在另一个开发人员加入了,所以我想从 SVN 在他的机器上设置项目。我们都使用非常相似的设置:

  • OS X 雪豹
  • 最新的 Eclipse WTP
  • m2eclipse Maven 插件
  • 颠覆性的 SVN 插件
  • 雄猫 6.0.24

使用的 Spring 版本是 2.5.6。

我使用 Eclipse 的“来自 SVN 的项目”工具在他的机器上设置项目,本质上是创建项目的 1:1 副本。据我所知,Maven 处理了所有依赖项没有问题,项目编译没有问题。项目结构遵循 webapps 的 Maven 标准,资源(如 applicationContext.xml)在 src/main/resources,项目代码在 src/main/java 和所有 web-app 相关文件在 src/main/webapp 和 src /main/webapp/WEB-INF 分别。

web.xml 配置为像这样加载上下文:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
</context-param>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

使用 Eclipse 的“服务器”工具,我尝试直接从 Eclipse 启动应用程序,但在尝试加载 applicationContext.xml 时它立即失败并出现 FileNotFoundException。

由于从 SVN 签出的代码没有受到影响,我猜这个问题与 Maven 插件的某些参数有关。或者我忘记了完成设置的一些重要步骤。有没有人遇到过类似的问题或知道我应该从哪里开始寻找?

非常感谢您的帮助!

4

2 回答 2

3

项目结构遵循 webapps 的 Maven 标准,资源(如 applicationContext.xml)在 src/main/resources,项目代码在 src/main/java 和所有 web-app 相关文件在 src/main/webapp 和 src /main/webapp/WEB-INF 分别。

这是正确的并且非常好(因为您希望applicationContext.xml在测试类路径上)。

它不会复制到 WEB-INF/classes,但在我自己的(正常运行的)项目中并非如此。相反,该文件会按照 Maven 标准复制到目标/类。

复制到target/yourapp/WEB-INF/classes,但process-resources 在资源更改时 m2eclipse 默认不会调用它(此目标将资源复制/过滤到target/classes)。这发生在package阶段(或显式调用时war:warwar:inplacewar:exploded)。如使用页面中所述,WAR 插件不负责编译 java 源或复制资源

所以我建议package在战争之前在服务器上运行它。也许您可以将 m2eclipse 配置为在资源更改时自动执行此操作(右键单击您的项目,然后选择Properties > Maven并将适当war的目标添加到目标以在资源更改时调用)。不过没试过这个。

于 2010-02-03T15:28:31.577 回答
1

使用服务器插件启动应用程序时,它希望您的 Web 文件夹包含所需的所有内容。这就是为什么您必须将项目输出文件夹(来自项目构建路径选项)配置为src/main/webapp/WEB-INF/classes

或者,您可以使用FileSync插件来复制文件。

顺便说一句,您没有指定服务器插件的选项是什么,以及您的项目是否是“动态 Web 项目”(即可部署)。

于 2010-02-03T12:19:18.193 回答