Каталог src / main / webapp не распознается Eclipse - PullRequest
18 голосов
/ 02 ноября 2009

Я использую m2eclipse для импорта проектов Maven Java в Eclipse.

Не удается распознать src/main/webapp в качестве исходного каталога.

Графически в проводнике пакетов (или когда я смотрю на Java-Build-Path в свойствах проекта),
этот каталог отсутствует в списке исходных папок (пока src/main/java или src/main/resources do).

Чтобы получить к нему доступ, я должен заглянуть прямо в каталог src / и начать развертывание ... Не очень удобно!

Однако, если я запускаю maven install, ресурсы копируются в правильный каталог.
(пример: src/main/webapp/index.jsp до target/mywar/index.jsp)

Вопросы * * 1023 Это правильное поведение? (Я думал, что это можно рассматривать как другие ресурсы ...) Могу ли я это исправить? Интересно, есть ли другие недостатки в этой ситуации, о которых я бы сейчас не знал?

Ответы [ 10 ]

7 голосов
/ 03 ноября 2009
  1. Это правильное поведение? (Я думал, что это можно рассматривать как другие ресурсы ...)
  2. Могу ли я это исправить?
  3. Интересно, есть ли другие недостатки в этой ситуации, о которых я бы сейчас не знал?
  1. Да, для меня это правильное поведение.
  2. В действительности src / main / webapp не имеет смысла быть исходной папкой, она не содержит скомпилированных исходных файлов.
  3. Я не знаю. Я думаю, это зависит от ваших ожиданий:)

Тем не менее, m2eclipse внес вклад, который позволяет сделать src/main/webapp доступным на верхнем уровне с определенной меткой «Веб-ресурсы», что-то вроде этого:

alt text

Это может быть решением для вашей проблемы (не удобное складывание).

5 голосов
/ 04 декабря 2013

Вместо добавления / src / main / webapp в качестве исходной папки в путь сборки Java, добавьте его в качестве папки для включения в сборку развертывания:

MyProject -> properties -> Сборка развертывания: Добавить "/ src / main / webapp" развертывает в "/"

5 голосов
/ 02 ноября 2009

Что касается maven, src/main/webapp не является исходной папкой в ​​том смысле, что ее содержимое не компилируется / не копируется в target/classes, поэтому, с точки зрения m2eclipse, это правильное поведение. Есть ли конкретная причина, по которой вам нужно, чтобы src / main / webapp был отмечен как исходная папка Eclipse?

2 голосов
/ 25 января 2011

В моем случае Eclipse не смог распознать src/main/webapp как папку веб-ресурсов. Я решил это:

  1. Удаление проекта
  2. Перезапуск затмения
  3. Обновление проекта Maven из SVN.
2 голосов
/ 02 ноября 2009

Ну, вам просто нужно пометить src / main / webapp как папку scl Eclipse:

щелкните правой кнопкой мыши папку веб-приложения -> путь сборки -> использовать в качестве исходной папки

Не думайте, что вы можете легко изменить это поведение без каких-либо отвратительных взломов, маркировка src - это просто нечто особенное для Eclipse, которое используется для настройки пути к классам и т. Д.

1 голос
/ 04 апреля 2019

Многие ответы утверждают, что не имеет смысла иметь src/main/webapp в качестве исходной папки, поскольку файлы JSP компилируются контейнером, а не maven во время цикла сборки.

Однако, имеет смысл , когда вы проводите тестирование безопасности :

Некоторые инструменты сканирования безопасности предоставляют плагины, которые могут быть интегрированы в IDE, чтобы группы разработчиков могли локально сканировать свой код и исправлять основные уязвимости на своем компьютере, тем самым уменьшая объем работы для групп безопасности, которые могут работать над более сложным тестированием.

Тот факт, что Eclipse исключает этот конкретный каталог, представляет собой огромную проблему: благодаря этому инструменты безопасности по умолчанию не включают каталог webapp/ в процесс сканирования, что приводит к ложным отрицаниям ( фактические уязвимости, о которых инструмент не сообщает). Такое поведение заставляет команды разработчиков думать, что их страницы JSP (например) безопасны с точки зрения безопасности.

Если команды тестирования безопасности не обращают внимания на проверки, проводимые командами разработчиков (иногда мы даже не можем проверить, какие проверки были выполнены локально), скорее всего продукт будет выпущен с уязвимостями в коде, содержащемся в webapp/ папка.

Таким образом, это поведение не имеет смысла с точки зрения безопасности, и люди, утверждающие, что это так, упускают некоторые моменты.

В любом случае я решил эту проблему, добавив папку src/main/webapp/ в путь сборки, щелкнув ее правой кнопкой мыши в package explorer -> build path -> use as source folder

1 голос
/ 11 сентября 2017

Одним из решений является использование поддержки m2e для сборки вспомогательного модуля maven и объявление src / main / webapp как пути к ресурсам additioanl. Это также позволяет копировать сохраненные ресурсы в структуру папок назначения сборки.

        <!-- 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>
0 голосов
/ 25 апреля 2014

Я нашел совершенно другую причину той же проблемы, с которой столкнулся - я не увидел бы src / main / webapp в проводнике пакетов.

Оказалось, что это не имеет ничего общего ни с POM, ни с Eclipse (использующим SpringSource Suite 3.5.0), способным загрузить проект maven.

Проблема заключалась в том, что внутри моей папки src / main / webapp / Scripts / были файлы .git и .gitignore. Я подозреваю, что, возможно, Eclipse не смог справиться с именами файлов, начинающимися с "." в папке веб-приложения. Я проверил эту теорию в нескольких проектах, и, похоже, она до сих пор остается в силе.

Надеюсь, это поможет.

0 голосов
/ 04 июля 2010

По мнению Нестора, не шучу. Это комплексная среда разработки, а не просто компилятор. Он предназначен в качестве интерфейса для всех исходных артефактов, участвующих в сборке из JSP для создания конфигурации, такой как файлы POM. Почему затмение даже беспокоило бы наличие редакторов XML и JSP, если они не компилируются? - Что, кстати, супер-полезно.

Плагин maven для eclipse (или наоборот) потрясающий, потому что он создает .classpath, .project и другую конфигурацию, необходимую для немедленной работы с проектами maven в eclipse. Однако каждый раз, когда генерируется конфигурация eclipse (т. Е. Mvn eclipse: eclipse), неподдерживаемые каталоги необходимо добавлять вручную. Это серьезный отстой.

Тот факт, что эти плагины пренебрегают возможностью простого добавления новых исходных папок, доступных для просмотра из IDE, является для меня загадкой. На одной странице проекта плагина maven / eclipse даже приводятся обходные пути для временного предоставления доступа к этим источникам путем переключения типов проектов и обмана плагина - конечно, вам необходимо немедленно изменить его или повредить сборку.

Почему бы им просто не создать возможность самостоятельно управлять объявлениями исходного кода в .classpath ???

0 голосов
/ 01 июля 2010

Я могу придумать причину.

Я использую Maven для разработки проекта GWT в Eclipse. В моей конфигурации каталог src / main / webapp содержит файлы HTML и CSS, на которые я должен ссылаться как часть моей работы по разработке, даже если они не являются «компилируемыми» файлами.

Возможность получить к ним доступ напрямую, а не погружаться в папку src /, является плюсом. И определение его в POM таким образом, чтобы он был настроен таким образом, означает, что мне не нужно вручную добавлять папку каждый раз, когда я запускаю eclipse: eclipse.

...