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

Използвам m2eclipse за импортиране на Maven Java проекти в Eclipse.

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

Графично в програмата за изследване на пакети (или когато погледна в Java-Build-Path в свойствата на проекта),
тази директория не е в списъка с папка с източници (докато src/main/java или src/main/resources го правят ).

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

Ако обаче стартирам maven install, ресурсите се копират в правилната директория.
(пример: src/main/webapp/index.jsp до target/mywar/index.jsp)

Въпроси

  1. Това правилно поведение ли е? (Мислех, че може да се третира като други ресурси ...)
  2. Мога ли да го поправя?
  3. Чудя се дали има други недостатъци за тази ситуация, за които не бих бил наясно в момента?

person KLE    schedule 02.11.2009    source източник


Отговори (10)


  1. Това правилно поведение ли е? (Мислех, че може да се третира като други ресурси ...)
  2. Мога ли да го поправя?
  3. Чудя се дали има други недостатъци за тази ситуация, за които не бих бил наясно в момента?
  1. Да, за мен това е правилното поведение.
  2. Всъщност няма смисъл src/main/webapp да бъде изходна папка, тя не съдържа компилируеми изходни файлове.
  3. Не знам. Предполагам, че зависи от вашите очаквания :)

Въпреки това m2eclipse направи принос, който позволява да се направи src/main/webapp достъпен на най-високо ниво със специфичен етикет „Уеб ресурси“, нещо като това:

алт текст

Това може да е решение на вашия проблем (неудобното сгъване).

person Pascal Thivent    schedule 02.11.2009
comment
+1 Благодаря за този полезен принос. Ще проверя тази папка „Уеб ресурси“, тъй като използваме Ganymede. - person KLE; 03.11.2009
comment
Как да накарате eclipse да има „Уеб ресурси“ за препратка към директорията „src/main/webapp“? - person John Strickler; 01.12.2011
comment
Връзка docs.sonatype.org/download/attachments/1999028/ е недостъпен - person Johnny Bigoode; 07.12.2016
comment
@pascal thivent, изображението изглежда неработеща връзка, можете ли да актуализирате, моля? - person James Oravec; 13.07.2017

Вместо да добавяте /src/main/webapp като папка източник в пътя за изграждане на java, добавете го като папка, която да включите в сглобката за разполагане:

MyProject -> свойства -> Събрание за разполагане: Добавяне на "/src/main/webapp" разгръща към "/"

person thetoolman    schedule 04.12.2013
comment
Ако нямате Deployment Assembly подменю, отидете на Project Facets и добавете Dynamic Web Module. - person user2418306; 12.09.2016

Що се отнася до maven, src/main/webapp не е папка източник в смисъл, че нейното съдържание не е компилирано/копирано в target/classes, така че от гледна точка на m2eclipse, това е правилното поведение. Има ли конкретна причина, поради която трябва src/main/webapp да бъде маркиран като изходна папка на Eclipse?

person Jim Downing    schedule 02.11.2009
comment
Мисля, че папката src/main/webapp е проектирана да съдържа jsp файлове за примери. Ето защо трябва да се маркира като изходна папка. - person reef; 02.11.2009
comment
Да, но JSP (обикновено) се компилират от контейнера след внедряване, а не от системата за изграждане. - person Jim Downing; 02.11.2009
comment
Разбирам мисълта ти. Относно последния ти въпрос, това беше и третият ми въпрос! :-) - person KLE; 02.11.2009

Ами просто трябва да маркирате src/main/webapp като src папка на Eclipse:

щракнете с десния бутон върху папката на webapp --> пътят за изграждане --> използвайте като папка източник

Не мислете, че можете лесно да промените това поведение без никакви грозни хакове, src маркировката е просто нещо, специфично за Eclipse, което той използва, за да конфигурира своя класов път и т.н.

person NickDK    schedule 02.11.2009
comment
Ако би било толкова просто, тогава се чудя защо плъгинът m2eclipse не прави това. Би се вписало точно в неговата отговорност за мен! - person KLE; 02.11.2009
comment
Ако направя това на ръка, имам проблеми, когато импортирам отново същия проект на друга машина... - person KLE; 02.11.2009
comment
Прав си, може би приставката m2eclipse трябваше да е достатъчно умна, за да маркира всички подпапки на src като папки източник на eclipse. - person NickDK; 02.11.2009
comment
@Nick Може би не всички подпапки ... Но m2eclipse е достатъчно интелигентен, за да прочете "войнния" характер на проекта, след което да добави подходящите създатели и Java природа. Така че не би трябвало да има проблем да знаете за тази стандартна директория src/main/webapp! - person KLE; 02.11.2009
comment
Не искате да правите това, няма причина да добавяте src/main/webapp към изходните папки. - person Pascal Thivent; 03.11.2009
comment
Това всъщност е отлично решение, ако 1) не сте стартирали проекта като динамично уеб приложение и 2) все още се нуждаете от тази функционалност. - person paulsm4; 07.12.2018

В моя случай Eclipse не успя да разпознае src/main/webapp като папка Web Resources. Разреших го с:

  1. Изтриване на проекта
  2. Рестартиране на Eclipse
  3. Вземане на нова актуализация на проекта Maven от SVN.
person Archie    schedule 25.01.2011

Много отговори твърдят, че няма смисъл да има src/main/webapp като папка източник, тъй като JSP файловете се компилират от контейнера, а не от maven по време на цикъла на изграждане.

Въпреки това има смисъл, когато правите тестове за сигурност:

Някои инструменти за сканиране на сигурността предоставят плъгини, които могат да бъдат интегрирани в IDE, така че екипите за разработка да могат локално да сканират кода си и да поправят основните уязвимости на своята машина, като по този начин намаляват количеството работа за екипите по сигурността, които следователно могат да работят върху по-напреднало тестване.

Фактът, че Eclipse изключва тази конкретна директория, е огромен проблем: като правят това, инструментите за сигурност няма да включат по подразбиране директорията webapp/ в процеса на сканиране, което води до фалшиви отрицания (действителни уязвимости, които не са не се отчита от инструмента). След това това поведение кара екипите за разработка да мислят, че техните JSP страници (например) са безопасни от гледна точка на сигурността.

Ако екипите за тестване на сигурността не обръщат внимание на сканиранията, извършвани от екипи за разработка (понякога дори не можем да проверим кои сканирания са извършени локално), продуктът е по-вероятно да бъде пуснат с уязвимости в кода, съдържащ се в папката webapp/.

Следователно това поведение няма смисъл от гледна точка на сигурността и хората, които твърдят, че има смисъл, пропускат някои точки.

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

person Maxime Flament    schedule 04.04.2019

Едно решение е да се използва поддръжката на m2e за плъгин maven помощник за изграждане и да се декларира src/main/webapp като допълнителен ресурсен път. Това също кара 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>
person user1050755    schedule 11.09.2017

Сещам се за причина.

Използвам Maven за разработване на GWT проект в Eclipse. В моята конфигурация директорията src/main/webapp съдържа HTML и CSS файловете, които трябва да използвам като част от усилията си за разработка, въпреки че те не са „компилируеми“ файлове.

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

person Nestor Rodriguez    schedule 01.07.2010

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

Приставката maven за eclipse (или обратното) е страхотна, защото изгражда .classpath, .project и друга конфигурация, необходима за незабавно започване на работа с maven проекти в eclipse. Въпреки това, всеки път, когато се генерира конфигурацията на eclipse (т.е. mvn eclipse:eclipse), неподдържаните директории трябва да се добавят ръчно. Това е голям гад.

Фактът, че тези плъгини пренебрегват възможността за лесно добавяне на нови изходни папки, видими от IDE, е загадка за мен. Една страница с проект на плъгин maven/eclipse дори цитира заобиколни решения за временно предоставяне на тези източници чрез превключване на типовете проекти и подвеждане на плъгина – разбира се, трябва да го промените обратно незабавно или да повредите компилацията.

Защо просто не създадат възможност за независим контрол на декларациите на източника в .classpath???

person campbell    schedule 04.07.2010

Открих съвсем различна причина за същия проблем, с който се сблъсках - не виждах src/main/webapp в програмата за изследване на пакети.

Оказа се, че няма нищо общо нито с POM, нито с това, че Eclipse (използвайки SpringSource Suite 3.5.0) може да зареди проекта maven.

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

Надявам се това да помогне.

person Shiva Prasad    schedule 25.04.2014