Pergunta

Eu uso m2eclipse para importar projetos Maven Java no Eclipse.

Ele não reconhece src/main/webapp como um diretório de origem.

Graficamente no Package Explorer (ou quando eu olho em Java-Build-Path em propriedades do projeto),
este diretório não está na lista de fontes de pasta (enquanto src/main/java ou src/main/resources fazer).

Para acessá-lo, eu tenho que olhar diretamente para o src / diretório, e começar a desenrolar ... Não é muito conveniente!

No entanto, se eu executar maven install, os recursos são copiados para o diretório correto.
(Exemplo: src/main/webapp/index.jsp para target/mywar/index.jsp)

Perguntas

  1. Este é um comportamento correto? (Eu estava pensando que poderia ser tratado como outros recursos ...)
  2. Será que eu poderia corrigir isso?
  3. Gostaria de saber se existem outras desvantagens para esta situação, que eu não estaria consciente de agora?
Foi útil?

Solução

  1. Este é um comportamento correto? (Eu estava pensando que poderia ser tratado como outros recursos ...)
  2. Será que eu poderia corrigir isso?
  3. Gostaria de saber se existem outras desvantagens para esta situação, que eu não estaria consciente de agora?
  1. Sim, para mim este é o comportamento correto.
  2. Realmente não faz sentido para src / main / webapp para ser uma pasta de origem, ele não contém arquivos de origem compiláveis.
  3. eu não sei. Eu acho que depende de suas expectativas:)

Dito isso, m2eclipse fez uma contribuição que permite fazer src/main/webapp disponíveis no nível superior com um específico "Web Resources" rótulo, algo como isto:

text alt

Esta poderia ser uma solução para a sua preocupação (a dobragem não conveniente).

Outras dicas

Quanto maven está em causa, src/main/webapp não é uma pasta de origem no sentido de que o seu conteúdo não são compilados / copiados para target/classes, então do ponto de vista do m2eclipse, este é o comportamento correto. Existe uma razão especial que você precisa src / main / webapp a ser marcado como uma pasta de origem Eclipse?

Em vez de adicionar / src / main / webapp como uma pasta de origem no caminho java construção, adicioná-lo como uma pasta para incluir na implantação de montagem:

MyProject -> Propriedades -> Assembleia Implantação: Add "/ src / main / webapp" implanta "/"

Bem, você só tem que marcar o src / main / webapp como pasta um Eclipse src:

pasta webapp clique direito -> caminho de construção -> uso como fonte de pasta

Não pense que você pode facilmente mudar este comportamento sem hacks feios, a marcação src é apenas algo Eclipse específica que ele usa para configurar seu classpath etc.

No meu caso, Eclipse não conseguiu reconhecer src/main/webapp como a pasta Web Resources. Resolvi-lo:

  1. Excluindo o projeto
  2. Reiniciar eclipse
  3. Tomar uma nova atualização do formulário de projeto Maven do SVN.

Uma solução é explorar M2e apoio à construção ajudante maven plugin e declarar src / main / webapp como um caminho de recurso additioanl. Isso também faz eclipse copiar recursos economizados com a estrutura pasta de destino de compilação.

        <!-- 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>

Muitas respostas afirmam que não faz sens para ter src/main/webapp como uma pasta de origem porque arquivos JSP são compilados pelo contêiner e não maven durante o ciclo de construção.

No entanto, ele faz sentido quando você está fazendo testes de segurança :

Algumas ferramentas de verificação de segurança fornecer plugins que podem ser integrados em IDEs para que as equipes de desenvolvimento podem localmente varredura de seu código e corrigir vulnerabilidades básicas em sua máquina, reduzindo assim a quantidade de trabalho para as equipes de segurança que podem, portanto, trabalhar em testes mais avançados.

O fato de que exclui Eclipse este diretório específico é um enorme problema: ao fazer isso, ferramentas de segurança não inclui por padrão o diretório webapp/ no processo de digitalização, o que resulta em falsos negativos (reais vulnerabilidades que não são relatados pela ferramenta). Este comportamento, em seguida, leva as equipes de desenvolvimento a pensar que suas páginas JSP (por exemplo) são seguros do ponto de vista da segurança.

Se as equipes de segurança testando não prestar atenção aos exames realizados por equipes de desenvolvimento (às vezes não podemos ainda verificar que exames foram realizados localmente), o produto é mais provável de ser lançado com vulnerabilidades no código contido no webapp/ pasta.

Assim, este comportamento não faz sentido do ponto de vista da segurança, e as pessoas alegando que não estão faltando alguns pontos.

Em qualquer caso, eu resolvi esse problema adicionando a pasta src/main/webapp/ no caminho de construção com o botão direito-lo no package explorer -> build path -> use as source folder

Não consigo pensar em uma razão.

Eu estou usando Maven para desenvolver um projeto GWT no Eclipse. Na minha configuração, o diretório / webapp src / main contém os arquivos HTML e CSS que eu tenho para se referir a como parte do meu esforço de desenvolvimento, mesmo que eles não são arquivos "compiláveis".

Ser capaz de chegar a eles diretamente em oposição a mergulhar no src / pasta é um plus. E definindo-o no POM para que ele seja configurado de meios maneira que eu não tem que manualmente manter-se adicionar a pasta de cada vez que eu executar o Eclipse:. Eclipse

ponto de Para Nestor, sem brincadeira. É um ambiente end-to-end de desenvolvimento e não apenas um compilador. É destinado como uma interface para todos os artefatos de origem contribuem para uma compilação de JSP da configuração de compilação como arquivos POM. Por que eclipse incomodam mesmo tendo XML e editores JSP se estes não são compilação capaz? --Que por sinal, são super-útil.

O perito plug-in para o Eclipse (ou vice-versa) é óptimo porque constrói o .classpath, .project, e outra configuração necessária para começar a trabalhar imediatamente com maven projectos em Eclipse. No entanto, cada vez que a configuração do eclipse é gerado (isto é mvn eclipse: Eclipse), directórios não suportados tem de ser adicionado manualmente. Isso é um grande saco.

O facto de estes plugins negligenciar a habilidade de facilmente adicionar novas pastas de origem visível a partir do IDE é um mistério para mim. Um maven / eclipse plug-in página do projeto ainda cita como contorná-las para fazer essas fontes temporariamente disponíveis, alternando os tipos de projeto e enganar o plugin -. É claro, você precisa mudá-lo de volta imediatamente ou corromper a construção

Por que eles não apenas criar a capacidade de controlar de forma independente as declarações de origem em .classpath ???

Eu encontrei uma razão totalmente diferente para o mesmo problema que eu estava enfrentando - eu não veria src / main / webapp no ??Package Explorer.

Acabou por isso não tinha nada a ver com qualquer POM ou com Eclipse (usando SpringSource Suíte 3.5.0) ser capaz de carregar o projeto Maven.

O problema era que dentro da minha src / main / webapp / Scripts / pasta havia .git e .gitignore arquivos. Eu suspeito que pode ser Eclipse não foi capaz de lidar com nomes de arquivos começando com um "" na pasta webapp. Eu testei esta teoria em vários projetos e parece manter o terreno até agora.

Espero que isso ajude.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top