Eclipse无法识别src / main / webapp目录

时间:2009-11-02 15:18:54

标签: java maven-2 directory-structure m2eclipse

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

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

在包浏览器中以图形方式(或当我查看项目属性中的 Java-Build-Path 时),
此目录不在sources文件夹列表中(src/main/javasrc/main/resources可以)。

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

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

问题

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

10 个答案:

答案 0 :(得分:8)

  
      
  1. 这是正确的行为吗? (我以为它可以被视为其他资源......)
  2.   
  3. 我可以修理吗?
  4.   
  5. 我想知道这种情况是否存在其他缺点,我现在还不知道?
  6.   
  1. 是的,对我来说这是正确的行为。
  2. 将src / main / webapp作为源文件夹并不合理,它不包含可编译的源文件。
  3. 我不知道。我想这取决于你的期望:)。
  4. 也就是说,m2eclipse做了一个贡献,允许在顶层使用特定的“Web资源”标签使src/main/webapp可用,如下所示:

    alt text

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

答案 1 :(得分:5)

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

答案 2 :(得分:5)

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

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

答案 3 :(得分:2)

嗯,你只需要将src / main / webapp标记为Eclipse src文件夹:

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

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

答案 4 :(得分:2)

就我而言,Eclipse无法将src/main/webapp识别为Web Resources文件夹。我通过以下方式解决了这个问题:

  1. 删除项目
  2. 重启eclipse
  3. 从SVN中重新更新Maven项目。

答案 5 :(得分:1)

一种解决方案是利用m2e支持构建帮助器maven插件,并将src / main / webapp声明为additioanl资源路径。这也使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>

答案 6 :(得分:1)

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

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

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

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

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

因此,从安全的角度来看,这种行为是没有意义的,人们声称确实存在某些缺陷。

无论如何,我通过在src/main/webapp/-> package explorer-> {{1}中单击鼠标右键,将build path文件夹添加到构建路径来解决了这个问题。 }

答案 7 :(得分:0)

我能想出一个理由。

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

能够直接到达他们,而不是潜入src /文件夹是一个加号。并在POM中定义它以便它以这种方式设置意味着每次运行eclipse时都不必手动添加文件夹:eclipse。

答案 8 :(得分:0)

至于内斯特的观点,不要开玩笑。它是一个端到端的开发环境,而不仅仅是一个编译器。它旨在作为所有源工件的接口,这些工件有助于从JSP构建构建配置(如POM文件)。如果这些不可编译,为什么eclipse甚至会烦扰XML和JSP编辑器呢? - 顺便说一下,这是非常有用的。

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

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

为什么它们不能创建独立控制.classpath ???

中的源声明的能力

答案 9 :(得分:0)

我找到了一个完全不同的原因,我遇到了同样的问题 - 我不会在包资源管理器中看到src / main / webapp。

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

问题是我的src / main / webapp / Scripts /文件夹里面有.git和.gitignore文件。我怀疑可能是Eclipse无法处理以&#34;开头的文件名。&#34;在webapp文件夹中。我在多个项目中测试了这个理论,到目前为止它似乎已经成功。

我希望这会有所帮助。