18

我使用m2eclipse在 Eclipse 中导入 Maven Java 项目。

它无法识别src/main/webapp为源目录。

在包资源管理器中以图形方式(或者当我在项目属性中查看Java-Build-Path
时), 此目录不在源文件夹列表中(whilesrc/main/javasrc/main/resourcesdo)。

要访问它,我必须直接查看 src/ 目录,然后开始展开……不太方便!

但是,如果我运行maven install,资源将被复制到正确的目录。
(例如: src/main/webapp/index.jsptarget/mywar/index.jsp

问题

  1. 这是正确的行为吗?(我在想它可以被视为其他资源......)
  2. 我能修好吗?
  3. 我想知道这种情况是否还有其他我现在不知道的缺点?
4

10 回答 10

7
  1. 这是正确的行为吗?(我在想它可以被视为其他资源......)
  2. 我能修好吗?
  3. 我想知道这种情况是否还有其他我现在不知道的缺点?
  1. 是的,对我来说这是正确的行为。
  2. 将 src/main/webapp 作为源文件夹并没有真正意义,它不包含可编译的源文件。
  3. 我不知道。我想这取决于你的期望:)

也就是说,m2eclipse 做出了贡献,允许src/main/webapp在顶层使用特定的“Web 资源”标签提供,如下所示:

替代文字

这可能是您关心的解决方案(不方便的折叠)。

于 2009-11-02T22:51:29.173 回答
6

不要将 /src/main/webapp 添加为 java 构建路径中的源文件夹,而是将其添加为要包含在部署程序集中的文件夹:

MyProject -> 属性 -> 部署程序集:添加“/src/main/webapp”部署到“/”

于 2013-12-04T09:50:53.740 回答
5

就 maven 而言,src/main/webapp不是源文件夹,因为它的内容没有被编译/复制到target/classes,所以从 m2eclipse 的角度来看,这是正确的行为。是否有特殊原因需要将 src/main/webapp 标记为 Eclipse 源文件夹?

于 2009-11-02T15:39:47.833 回答
2

好吧,您只需将 src/main/webapp 标记为 Eclipse src 文件夹:

右键单击 webapp 文件夹 --> 构建路径 --> 用作源文件夹

不要认为你可以在没有任何丑陋的黑客攻击的情况下轻松改变这种行为,src 标记只是 Eclipse 特定的东西,它用于配置其类路径等。

于 2009-11-02T15:27:02.783 回答
2

在我的例子中,Eclipse 无法识别src/main/webapp为 Web Resources 文件夹。我通过以下方式解决了它:

  1. 删除项目
  2. 重启日食
  3. 从 SVN 获取 Maven 项目的全新更新。
于 2011-01-25T13:46:14.020 回答
2

许多答案声称将其src/main/webapp作为源文件夹没有意义,因为 JSP 文件是由容器编译的,而不是在构建周期中的 maven。

但是,当您进行安全测试时,它确实有意义

一些安全扫描工具提供可以集成到 IDE 中的插件,以便开发团队可以在本地扫描他们的代码并修复他们机器上的基本漏洞,从而减少安全团队的工作量,从而可以进行更高级的测试。

Eclipse 排除此特定目录的事实是一个大问题:这样做,安全工具默认情况下不会将该webapp/目录包含在扫描过程中,这会导致误报(工具未报告的实际漏洞)。然后,这种行为会导致开发团队认为他们的 JSP 页面(例如)从安全的角度来看是安全的。

如果安全测试团队不关注开发团队进行的扫描(有时我们甚至无法检查本地执行了哪些扫描),则产品发布时更有可能在webapp/文件夹中包含代码中存在漏洞。

因此,从安全的角度来看,这种行为是没有意义的,声称它确实的人错过了一些观点。

无论如何,我通过在--> -->src/main/webapp/中右键单击将文件夹添加到构建路径来解决了这个问题package explorerbuild pathuse as source folder

于 2019-04-04T09:42:19.397 回答
1

一种解决方案是利用 m2e 对构建助手 maven 插件的支持,并将 src/main/webapp 声明为附加资源路径。这也使得 eclipse 将保存的资源复制到构建目标文件夹结构中。

        <!-- help eclipse identify the webapp folder as a resource folder: -->
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>3.0.0</version>
            <executions>
                <execution>
                    <id>add-resource</id>
                    <phase>generate-resources</phase>
                    <goals>
                        <goal>add-resource</goal>
                    </goals>
                    <configuration>
                        <resources>
                            <resource>
                                <directory>src/main/webapp</directory>
                                <targetPath>${project.build.directory}/${project.build.finalName}</targetPath>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>
于 2017-09-11T02:56:06.120 回答
0

我能想到一个理由。

我正在使用 Maven 在 Eclipse 中开发 GWT 项目。在我的配置中,src/main/webapp 目录包含 HTML 和 CSS 文件,我必须在开发工作中引用它们,即使它们不是“可编译”文件。

能够直接访问它们而不是潜入 src/ 文件夹是一个优点。在 POM 中定义它以便以这种方式设置意味着我不必在每次运行 eclipse:eclipse 时手动继续添加文件夹。

于 2010-07-01T18:07:11.563 回答
0

内斯特的观点,不是在开玩笑。它是一个端到端的开发环境,而不仅仅是一个编译器。它旨在作为所有源工件的接口,这些工件有助于从 JSP 构建配置,例如 POM 文件。如果 XML 和 JSP 编辑器不能编译,为什么 Eclipse 还要费心呢?——顺便说一句,超级有用。

eclipse 的 maven 插件(反之亦然)非常棒,因为它构建了 .classpath、.project 和其他需要立即开始在 eclipse 中使用 maven 项目的配置。但是,每次生成 eclipse config(即 mvn eclipse:eclipse)时,必须手动添加不支持的目录。这是一个很大的烂摊子。

这些插件忽略了轻松添加可从 IDE 中查看的新源文件夹的能力,这对我来说是个谜。一个 maven/eclipse 插件项目页面甚至引用了通过切换项目类型和欺骗插件使这些源临时可用的变通方法——当然,您需要立即将其改回或破坏构建。

他们为什么不创建独立控制 .classpath 中的源声明的能力???

于 2010-07-04T15:23:24.710 回答
0

对于我面临的同一个问题,我发现了一个完全不同的原因——我不会在包资源管理器中看到 src/main/webapp。

原来它与 POM 或 Eclipse(使用 SpringSource Suite 3.5.0)能够加载 maven 项目无关。

问题是在我的 src/main/webapp/Scr​​ipts/ 文件夹中有 .git 和 .gitignore 文件。我怀疑可能是 Eclipse 无法处理以“.”开头的文件名。在 webapp 文件夹中。我在多个项目中测试了这个理论,到目前为止它似乎站稳脚跟。

我希望这有帮助。

于 2014-04-25T17:57:51.370 回答