我使用m2eclipse在Eclipse中导入Maven Java项目。
它无法识别src/main/webapp
作为源目录。
在包浏览器中以图形方式(或者当我在项目的属性中查看Java-Build-Path时),
这个目录不在sources文件夹列表中(当src/main/java
或src/main/resources
这样做时)。
要访问它,我必须直接查看src /目录,并开始展开...不是很方便!
但是,如果我运行maven install
,资源将被复制到正确的目录。
(例如:src/main/webapp/index.jsp
到target/mywar/index.jsp
)
- 这是正确的行为吗? (我以为它可以被视为其他资源...)
- 我可以修理吗?
- 我想知道这种情况是否有其他缺点,我现在不会意识到这一点?
也就是说,m2eclipse做出了贡献,允许使用特定的“Web资源”标签使src/main/webapp
在顶层可用,如下所示:
这可能是您关注的解决方案(不方便折叠)。
我找到了一个完全不同的原因,我遇到了同样的问题 - 我不会在包浏览器中看到src / main / webapp。
原来它与POM或Eclipse(使用SpringSource Suite 3.5.0)无关,可以加载maven项目。
问题是我的src / main / webapp / Scripts /文件夹里面有.git和.gitignore文件。我怀疑可能是Eclipse无法处理以“。”开头的文件名。在webapp文件夹中。我在多个项目中测试了这个理论,到目前为止它似乎已经成功。
我希望这有帮助。
就maven而言,src/main/webapp
不是源文件夹,因为它的内容没有被编译/复制到target/classes
,所以从m2eclipse的角度来看,这是正确的行为。是否有特殊原因需要将src / main / webapp标记为Eclipse源文件夹?
不是将/ src / main / webapp添加为java构建路径中的源文件夹,而是将其添加为要包含在部署程序集中的文件夹:
MyProject - > properties - > Deployment Assembly:添加“/ src / main / webapp”部署到“/”
那你只需要将src / main / webapp标记为Eclipse src文件夹:
右键单击webapp文件夹 - >构建路径 - >用作源文件夹
不要认为你可以在没有任何丑陋的黑客的情况下轻松改变这种行为,src标记只是Eclipse特定的东西,用于配置其类路径等。
就我而言,Eclipse无法将src/main/webapp
识别为Web Resources文件夹。我通过以下方式解决了
一种解决方案是利用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>
许多答案声称将src/main/webapp
作为源文件夹并不明智,因为JSP文件是由容器编译的,而不是在构建周期中编写的。
但是,当您进行安全测试时,它确实有意义:
一些安全扫描工具提供可以集成到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文件)。如果这些不可编译,为什么eclipse甚至会烦扰XML和JSP编辑器呢? - 顺便说一句,这是非常有用的。
eclipse的maven插件(反之亦然)非常棒,因为它构建了.classpath,.project和其他配置,以便立即开始在eclipse中使用maven项目。但是,每次生成eclipse配置(即mvn eclipse:eclipse)时,必须手动添加不支持的目录。这是一个很大的琐事。
这些插件忽略了在IDE中轻松添加可查看的新源文件夹的能力这一事实对我来说是一个谜。一个maven / eclipse插件项目页面甚至引用了解决方法,通过切换项目类型和欺骗插件来暂时提供这些源 - 当然,您需要立即更改它或破坏构建。
他们为什么不创建独立控制.classpath中源声明的能力?