Подтвердить что ты не робот

Директория src/main/webapp, не распознанная Eclipse

Я использую 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)

Вопросы

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

Ответ 1

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

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

alt text

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

Ответ 2

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

Ответ 3

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

MyProject → свойства → Развертывание сборки: добавьте "/src/main/webapp", разворачивается в "/"

Ответ 4

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

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

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

Ответ 5

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

  • Удаление проекта
  • Перезапуск eclipse
  • Взятие нового обновления проекта Maven из SVN.

Ответ 6

Одним из решений является использование поддержки m2e для плагина build helper 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>

Ответ 7

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

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

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

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

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

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

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

Ответ 8

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

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

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

Ответ 9

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

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

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

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

Ответ 10

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

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

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

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