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

问题描述 投票:18回答:10

我使用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

Questions

  1. 这是正确的行为吗? (我以为它可以被视为其他资源...)
  2. 我可以修理吗?
  3. 我想知道这种情况是否有其他缺点,我现在不会意识到这一点?
java maven-2 directory-structure m2eclipse
10个回答
7
投票
  1. 这是正确的行为吗? (我以为它可以被视为其他资源...)
  2. 我可以修理吗?
  3. 我想知道这种情况是否有其他缺点,我现在不会意识到这一点?
  1. 是的,对我来说这是正确的行为。
  2. 将src / main / webapp作为源文件夹并不真正有意义,它不包含可编译的源文件。
  3. 我不知道。我想这取决于你的期望:)

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

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


0
投票

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

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

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

我希望这有帮助。


5
投票

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


5
投票

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

MyProject - > properties - > Deployment Assembly:添加“/ src / main / webapp”部署到“/”


2
投票

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

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

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


2
投票

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

  1. 删除项目
  2. 重启eclipse
  3. 从SVN获取Maven项目的最新更新。

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>

1
投票

许多答案声称将src/main/webapp作为源文件夹并不明智,因为JSP文件是由容器编译的,而不是在构建周期中编写的。

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

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

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

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

因此,从安全的角度来看,这种行为没有意义,声称它的人确实缺少某些观点。

在任何情况下,我通过在src/main/webapp/ - > package explorer - > build path中右击它将use as source folder文件夹添加到构建路径来解决了这个问题


0
投票

我能想出一个理由。

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

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


0
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.