Eclipse 无法识别 src/main/webapp 目录
-
12-09-2019 - |
题
我用 m2eclipse 在 Eclipse 中导入 Maven Java 项目。
它无法识别 src/main/webapp
作为源目录。
以图形方式在包资源管理器中(或者当我查看 Java 构建路径 在项目的属性中),
该目录不在源文件夹列表中(同时 src/main/java
或者 src/main/resources
做)。
要访问它,我必须直接查看 src/ 目录,然后开始展开......不是很方便!
但是,如果我跑 maven install
, ,资源被复制到正确的目录。
(例子 : src/main/webapp/index.jsp
到 target/mywar/index.jsp
)
问题
- 这是正确的行为吗?(我想它可以被视为其他资源......)
- 我可以修复它吗?
- 我想知道这种情况是否还有其他我现在没有意识到的缺点?
解决方案
- 这是正确的行为吗?(我想它可以被视为其他资源......)
- 我可以修复它吗?
- 我想知道这种情况是否还有其他我现在没有意识到的缺点?
- 是的,对我来说这是正确的行为。
- src/main/webapp 作为源文件夹实际上没有意义,它不包含可编译的源文件。
- 我不知道。我想这取决于你的期望:)
也就是说,m2eclipse 做出了贡献,可以使 src/main/webapp
可以在顶层使用特定的“Web 资源”标签,如下所示:
这可能是您担心的解决方案(折叠不方便)。
其他提示
就maven而言, src/main/webapp
不是源文件夹,因为它的内容未编译/复制到 target/classes
, ,所以从 m2eclipse 的角度来看,这是正确的行为。您需要将 src/main/webapp 标记为 Eclipse 源文件夹是否有特殊原因?
不要将 /src/main/webapp 添加为 java 构建路径中的源文件夹,而是将其添加为要包含在部署程序集中的文件夹:
MyProject -> 属性 -> 部署程序集:添加“/src/main/webapp”部署到“/”
那么您只需将 src/main/webapp 标记为 Eclipse src 文件夹即可:
右键单击 webapp 文件夹 --> 构建路径 --> 用作源文件夹
不要认为您可以轻松地更改此行为而不需要任何丑陋的 hack,src 标记只是 Eclipse 特定的东西,它用于配置其类路径等。
就我而言,Eclipse 无法识别 src/main/webapp
作为 Web 资源文件夹。我通过以下方式解决了它:
- 删除项目
- 重新启动日食
- 从 SVN 获取 Maven 项目的最新更新。
一种解决方案是利用 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>
许多答案声称没有意义 src/main/webapp
作为源文件夹,因为 JSP 文件是在构建周期中由容器而不是 Maven 编译的。
然而,它 有道理 当你在做的时候 安全测试:
一些安全扫描工具提供可以集成到 IDE 中的插件,以便开发团队可以在本地扫描代码并修复计算机上的基本漏洞,从而减少安全团队的工作量,从而可以进行更高级的测试。
Eclipse 排除这个特定目录的事实是一个大问题:通过这样做,安全工具默认情况下将不包括 webapp/
目录进入扫描过程,这会导致 假阴性 (该工具未报告的实际漏洞)。这种行为会导致开发团队认为他们的 JSP 页面(例如)从安全角度来看是安全的。
如果安全测试团队不关注开发团队进行的扫描(有时我们甚至无法检查哪些扫描是在本地进行的),那么发布的产品更有可能存在代码漏洞。 webapp/
文件夹。
因此,从安全角度来看,这种行为没有意义,而且声称这种行为的人忽略了一些要点。
无论如何,我通过添加解决了这个问题 src/main/webapp/
右键单击该文件夹到构建路径 package explorer
--> build path
--> use as source folder
我能想到一个理由。
我正在使用 Maven 在 Eclipse 中开发 GWT 项目。在我的配置中,src/main/webapp 目录包含我在开发工作中必须引用的 HTML 和 CSS 文件,即使它们不是“可编译”文件。
能够直接访问它们而不是深入到 src/ 文件夹是一个优点。在 POM 中定义它,以便以这种方式进行设置意味着我不必在每次运行 eclipse:eclipse 时手动添加该文件夹。
就内斯特的观点而言,这不是开玩笑。它是一个端到端的开发环境,而不仅仅是一个编译器。它旨在作为所有源工件的接口,这些源工件有助于从 JSP 到构建配置(例如 POM 文件)。如果 XML 和 JSP 编辑器不能编译,为什么 Eclipse 还要麻烦它们呢?——顺便说一下,这非常有用。
Eclipse 的 Maven 插件(反之亦然)非常棒,因为它构建了 .classpath、.project 以及立即开始在 Eclipse 中使用 Maven 项目所需的其他配置。但是,每次生成 eclipse 配置时(即mvn eclipse:eclipse),必须手动添加不支持的目录。这真是太糟糕了。
事实上,这些插件忽略了轻松添加可从 IDE 中查看的新源文件夹的能力,这对我来说是一个谜。一个 maven/eclipse 插件项目页面甚至引用了通过切换项目类型和欺骗插件来使这些源暂时可用的解决方法——当然,您需要立即将其更改回来或损坏构建。
他们为什么不创建独立控制 .classpath 中源声明的能力???
对于我面临的同一问题,我发现了一个完全不同的原因 - 我在包资源管理器中看不到 src/main/webapp 。
结果发现它与 POM 或 Eclipse(使用 SpringSource Suite 3.5.0)能够加载 Maven 项目无关。
问题是我的 src/main/webapp/Scripts/ 文件夹中有 .git 和 .gitignore 文件。我怀疑可能是Eclipse无法处理以“”开头的文件名。在WebApp文件夹中。我在多个项目中测试了这个理论,到目前为止它似乎站得住脚。
我希望这有帮助。