src/main/webapp目录

db2dz4w8  于 2021-07-05  发布在  Java
关注(0)|答案(10)|浏览(551)

我使用m2eclipse在eclipse中导入maven java项目。
它无法识别 src/main/webapp 作为源目录。
在包资源管理器中以图形方式显示(或者在项目属性中查看java构建路径时),
此目录不在“源列表”文件夹中(当 src/main/java 或者 src/main/resources 是的)。
要访问它,我必须直接查看src/目录,然后开始展开。。。不太方便!
但是,如果我跑 maven install ,将资源复制到正确的目录。
(示例: src/main/webapp/index.jsptarget/mywar/index.jsp )

问题

这是正确的行为吗(我在想它可以被当作其他资源……)
我能修一下吗?
我想知道这种情况是否还有其他缺点,我现在还不知道?

cnjp1d6j

cnjp1d6j1#

在我的例子中,eclipse未能识别 src/main/webapp 作为web资源文件夹。我的解决办法是:
删除项目
重新启动eclipse
从svn获取maven项目的最新更新。

sg3maiej

sg3maiej2#

一种解决方案是利用m2e对buildhelpermaven插件的支持,并将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>
qlvxas9a

qlvxas9a3#

对于我面临的同一个问题,我发现了一个完全不同的原因——我在包资源管理器中看不到src/main/webapp。
结果证明,它与pom或者能够加载maven项目的eclipse(使用springsourcesuite3.5.0)没有任何关系。
问题是在src/main/webapp/scripts/文件夹中有.git和.gitinore文件。我怀疑eclipse可能无法处理webapp文件夹中以“.”开头的文件名。我在多个项目中测试了这个理论,到目前为止,它似乎是站得住脚的。
我希望这有帮助。

ttp71kqs

ttp71kqs4#

您只需将src/main/webapp标记为eclipse src文件夹:
右键单击webapp文件夹-->生成路径-->用作源文件夹
不要认为你可以很容易地改变这种行为而没有任何丑陋的黑客,src标记只是eclipse特定的东西,它用来配置它的类路径等等。

jucafojl

jucafojl5#

这是正确的行为吗(我在想它可以被当作其他资源……)
我能修一下吗?
我想知道这种情况是否还有其他缺点,我现在还不知道?
是的,对我来说这是正确的行为。
src/main/webapp作为源文件夹是没有意义的,它不包含可编译的源文件。
我不知道。我想这取决于你的期望:)
也就是说,m2eclipse做出了一个贡献,允许 src/main/webapp 在顶层提供特定的“web资源”标签,如下所示:

这可以解决您的问题(不方便折叠)。

vcudknz3

vcudknz36#

许多答案都声称拥有 src/main/webapp 因为jsp文件是由容器编译的,而不是在构建周期中由maven编译的。
但是,在进行安全测试时,它确实是有意义的:
一些安全扫描工具提供了可以集成到ide中的插件,这样开发团队就可以在本地扫描他们的代码并修复他们机器上的基本漏洞,从而减少了安全团队的工作量,从而可以进行更高级的测试。
eclipse排除这个特定目录的事实是一个巨大的问题:这样做,安全工具在默认情况下就不会包括 webapp/ 目录进入扫描过程,这会导致误报(工具未报告的实际漏洞)。这种行为会导致开发团队认为他们的jsp页面(例如)从安全Angular 来看是安全的。
如果安全测试团队不注意开发团队执行的扫描(有时我们甚至无法检查哪些扫描是在本地执行的),那么产品很可能会在发布时带有包含在文档中的代码中的漏洞 webapp/ 文件夹。
因此,从安全的Angular 来看,这种行为是没有意义的,而声称有这种行为的人缺少了一些要点。
无论如何,我通过添加 src/main/webapp/ 通过在 package explorer --> build path --> use as source folder

6psbrbz9

6psbrbz97#

我能想出一个理由。
我正在使用maven在eclipse中开发一个gwt项目。在我的配置中,src/main/webapp目录包含html和css文件,作为开发工作的一部分,我必须引用它们,即使它们不是“可编译”的文件。
能够直接访问它们,而不是潜入src/文件夹是一个加号。在pom中定义它,这样就可以设置它,这意味着我不必每次运行时都手动添加文件夹eclipse:eclipse.

wkyowqbh

wkyowqbh8#

对内斯特来说,不是开玩笑。它是一个端到端的开发环境,而不仅仅是一个编译器。它的目的是作为所有源构件的接口,这些源构件都参与了从jsp到build的构建配置,比如pom文件。如果xml和jsp编辑器不可编译,eclipse为什么还要麻烦它们呢--顺便说一句,非常有用。
maven插件for eclipse(反之亦然)非常棒,因为它构建了.classpath、.project和其他配置,这些配置是在eclipse中立即开始使用maven项目所必需的。但是,每次生成eclipse配置时(即mvneclipse:eclipse),必须手动添加不支持的目录。真是糟糕透了。
事实上,这些插件忽略了在ide中轻松添加新的源文件夹的能力,这对我来说是个谜。一个maven/eclipse插件项目页面甚至引用了一些解决方法,通过切换项目类型和欺骗插件使这些源代码暂时可用——当然,您需要立即将其更改回去,否则会损坏构建。
他们为什么不创建独立控制.classpath中的源声明的功能呢???

mrwjdhj3

mrwjdhj39#

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

iswrvxsc

iswrvxsc10#

不要将/src/main/webapp添加为java生成路径中的源文件夹,而是将其添加为要包含在部署程序集中的文件夹:
myproject->属性->部署程序集:添加“/src/main/webapp”部署到“/”

相关问题