Dependências Maven ausentes no projeto Eclipse

108

Temos um projeto montado com maven para resolução de dependências. Normalmente funciona bem, mas agora estou tentando compilar e executá-lo em um novo PC e tenho problemas com dependências ausentes no Eclipse.

O engraçado é que se eu rodar "mvn package" no console ou no eclipse, ele funciona bem e até produz um war contendo todos os jars necessários. Apenas o Eclipse reclama com "O projeto não foi construído porque seu caminho de construção está incompleto. Não é possível encontrar o arquivo de classe para org.slf4j.Logger ...". Se eu comparar o projeto com algum outro computador (onde o projeto funciona bem), noto que existem algumas bibliotecas ausentes na listagem de "dependências Maven" no Eclipse. Embora eles estejam no pacote de guerra e também possam ser encontrados na pasta do repositório.

Portanto, os jar-s estão lá, mas o Eclipse não os listará todos em "Dependências do Maven". O que eu posso fazer?

O computador está executando o Windows 7 com java e eclipse de 64 bits.

hostnik
fonte
É um problema de escopo como em jira.codehaus.org/browse/MNG-2045 ?
VonC
1
Não vale a pena postar uma resposta, mas para quem vai ler isso no futuro, parece que você precisa digitar pelo menos três caracteres sem curingas. Por exemplo, digitar "t" ou "para" não mostrará nenhum resultado, mas "tom" sim. Acredite ou não, passei cerca de uma hora procurando por diferentes motivos antes de perceber isso.
Chris Neve,

Respostas:

117

Bem, tentei tudo que postou aqui, infelizmente nada deu certo no meu caso. Então, tentando diferentes combinações, encontrei esta que resolveu meu problema.

1) Abra o arquivo .classpath na raiz do projeto do seu eclipse.

2) Insira a seguinte entrada no arquivo:

<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
            <attribute name="org.eclipse.jst.component.nondependency" value=""/>
        </attributes>
</classpathentry> 

Em seguida, reconstrua seu projeto no eclipse (Projeto-> Clean-Build). Agora você pode verificar no Java Build Path do seu projeto na guia Bibliotecas as dependências do Maven incluídas: insira a descrição da imagem aqui

Ualter Jr.
fonte
3
Esta é a primeira coisa que todos deveriam tentar. Abra o arquivo .classpath que estará no diretório do seu projeto com o bloco de notas e adicione as linhas mencionadas e atualize seu projeto.
Amit Kumar,
9
Isso funcionou onde tudo mais falhou. Mas eu tenho que fazer isso para todos os projetos que crio? Por que não funciona automaticamente? Qual é o verdadeiro problema?
yeaaaahhhh..hamf hamf
Suspiro, isso ainda está quebrado em m2e 1.6.2.20150902-002. Testado com uma instalação nova do Eclipse no Mac OS X / JDK 1.8. Eclipse IDE para Java Developers Versão: Mars.2 Release (4.5.2) Build id: 20160218-0600 Gostaria de saber se este plugin requer o Eclipse Java EE para funcionar corretamente?
Mat Gessel
1
esta resposta deve ser a primeira. O único que funcionou ;-) thx
Manuel Manhart
1
Magia! ainda válido para Eclipse 4.4.2
versvs
89

Problema resolvido!

Não sei exatamente o que resolveu, mas fiz 4 coisas no Eclipse:

  • Janela-> Preferências: Maven-> Instalações: Configurações globais -> abrir arquivo e localRepository codificado
  • Projeto-> Limpar
  • clique com o botão direito no projeto: Maven-> Atualizar dependências
  • clique com o botão direito no projeto: Maven-> Atualizar configuração do projeto

Acho que foram as dependências do Update, já que logo após as duas primeiras não houve mudanças.

hostnik
fonte
2
Eu conheço "Projeto-> Limpar" e tentei, mas não ajudou no começo.
hostnik
7
Foi o último ponto. Atualizar a configuração do projeto adicionará uma biblioteca "Dependências do Maven" ao seu projeto.
Eduard Wirch
2
Para sua informação, primeiro tive que clicar com o botão direito no meu projeto, ir em Configurar e "Converter para projeto Maven".
duma
2
Expandindo a resposta de Eduard Wirch, também tive que marcar a caixa "Forçar atualização de instantâneos / lançamentos" encontrada em Maven-> Atualizar projeto ... janela. Meu artefato perdido era um Instantâneo e de alguma forma não estava atualizando bem sem forçá-lo.
evaldeslacasa
1
Tive que alterar as Configurações do usuário 'settings.xml' para estar no meu diretório '.m2'. Ele foi definido anteriormente como um no diretório de instalação do Maven.
Jack Straw
34

Também sou novo no Eclipse e tenho tido um problema semelhante em que o Eclipse simplesmente não reconhece uma instrução de importação, embora todos os sinais apontem para a dependência ter sido baixada com êxito.

Você deve verificar se o seu arquivo de dependência foi realmente baixado indo para a linha de comando e digitando

mvn dependency:tree

Se você vir seu pacote lá, mas o Eclipse não o reconhece, o que funciona para mim (às vezes) é ir para o terminal, fazer cd na pasta do projeto e digitar

mvn eclipse:clean então mvn eclipse:eclipse

Finalmente atualize o projeto no eclipse

Não sei por que isso funciona, e às vezes não funciona uma vez, mas fazer de novo funciona ... vale a pena tentar!

rogueleaderr
fonte
Isso me apontou a direção correta, mostrando que havia problemas com meu arquivo settings.xml! Obrigado, @rogueleaderr!
Slashp
sim, funcionou para minha amiga, resolveu todos os seus problemas e dores de cabeça. Infelizmente não funcionou para mim.
Zack Zilic
Funcionou para mim também, mas alguém poderia explicar o que aconteceu nos bastidores ??
YouAreAwesome
31

Meu projeto foi simplesmente bagunçado. Aqui está como eu consertei para Eclipse Indigo x64 (J2EE 3.7.3):

  1. Excluí meu arquivo POM (backup, é claro).
  2. Menu de contexto do projeto > Maven > Desativar natureza Maven .
  3. Excluiu o projeto (mas não o conteúdo do disco).
  4. Reimportado como Importar > Geral > Projeto Existente .
  5. Projecto Context Menu > Configurar > Converter para Maven Project ... .
  6. Aceite os padrões do assistente Maven.
  7. Substitua o POM pelo seu POM de backup. (Agora você tem a pasta Dependências do Maven ).
  8. Atualização / limpeza do Maven para uma boa medida.

Espero que ajude alguém. :)

Joseph Lust
fonte
Isso me ajuda! Não sei o que há de errado, mas estou usando Juno / Springsource 3 de 64 bits e sempre falha ao importar meus projetos Maven corretamente. Se eu fizer check-out como um projeto normal, renomeie meu POM e siga suas instruções da etapa 5 em diante, ele funciona. Caso contrário, nada do que eu tentar fará com que as dependências do Maven sejam adicionadas ao meu projeto além da linha de comando, o mvn eclipse:eclipseque é simplesmente horrível.
ngreen
Eu fiz isso, mas ainda não tenho a pasta de dependências do maven. Aqui está meu arquivo pom.xml e acho que é por isso que tenho este problema: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>antlr.tuto.calco</groupId> <artifactId>CalculatriceAntlr</artifactId> <version>0.0.1-SNAPSHOT</version> </project>
Anatch
Eu realmente não sei onde está o problema, mas segui os passos acima e está funcionando muito bem. Isso causa um erro como classe não encontrada, xml dtd não encontrado. Mas agora está resolvido. Obrigado parceiro. Voto positivo.
Sagar007
29

Eu tive esse problema para dependências que foram criadas em outros projetos. As dependências de terceiros baixadas apareceram bem no caminho de construção, mas não em uma biblioteca que eu criei.

SOLUTION: No projeto que não está construindo corretamente,

  • Clique com o botão direito do mouse no projeto e escolha Propriedades e, em seguida, Maven.

  • Desmarque a caixa com o rótulo " Resolver dependências de projetos de espaço de trabalho "

  • Clique em Aplicar e em OK.

  • Clique com o botão direito novamente em seu projeto e faça um Maven-> Atualizar instantâneos (ou Atualizar dependências)

E seus erros devem desaparecer quando seu projeto for reconstruído (automaticamente se você tiver a criação automática habilitada).

IceBox13
fonte
Obrigado, isso resolveu meu problema. Parece apontar para ser um bug do Eclipse.
Scott McIntyre
1
Ei, não existe algo como Maven-> Atualizar Snapshots (ou Atualizar Dependências). Se eu clicar com o botão direito, não há opção Maven? Onde está localizado o que você descreveu? Estou procurando, mas não consigo encontrar a descrição depois de clicar em Aplicar
DarioBB
1
@DarioBB Esta resposta tem quase 5 anos. Não trabalho no Eclipse há mais de um ano. Não tenho ideia se esta opção ainda está disponível ou não. Posso não estar na versão mais recente.
IceBox13
1
Esta solução funcionou para mim em neon Eclipse. Faça Maven> Atualizar Projeto (não Atualizar Snapshots) depois.
Ivana
9

Bem, tentei tudo que postou aqui, infelizmente nada deu certo no meu caso. Então, tentando diferentes combinações, encontrei esta que resolveu meu problema.

1) Abra o arquivo .classpath na raiz do projeto do seu eclipse.

2) Insira a seguinte entrada no arquivo:

<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
            <attribute name="org.eclipse.jst.component.nondependency" value=""/>
        </attributes>
</classpathentry> 

Em seguida, reconstrua seu projeto no eclipse (Projeto-> Clean-Build).

Ualter Jr.
fonte
Obrigado! esta solução funcionou melhor para mim, apenas uma correção difícil, tive que fechar e reabrir o projeto.
Tarun Gupta
Maravilhoso. Isso funcionou para mim também. No meu projeto, não consegui ver as dependências do maven. Agora visível e adicionado ao caminho de construção também. Obrigado!
Tahir Mehmood
7

Caso alguém tenha tentado todas as outras opções e você ainda não tenha conseguido, tente clicar com o botão direito do mouse na pasta do projeto, vá até a opção Maven e clique no botão "adicionar dependência". Por algum motivo, o Eclipse não está atualizando as dependências manualmente do pom.xml na primeira tentativa.

captura de tela da seleção do menu

FrankDupree
fonte
5

Eu tive um problema parecido. Eu resolvi-lo executando o Maven-> Configuração Update Project ação

Darryl Sibeon
fonte
5

Para mim, o problema era que o maven não conseguia encontrar o arquivo settings.xml que está localizado em myMavenFolder \ conf .

O que fiz para corrigir o problema foi selecionar o local correto do arquivo settings.xml do eclipse:
Window -> Preferences -> Maven -> User Settings

Finalmente, clique em aplicar e atualizar seu projeto

I. YOCK
fonte
4

Então, estou cerca de 4 ou 5 anos atrasado para esta festa, mas tive esse problema depois de extrair de nosso repo, e nenhuma das outras soluções deste thread funcionou no meu caso para me livrar desses avisos / erros.

Isso funcionou para mim:

No Eclipse, vá para Janela -> Preferências -> Maven (expandir) -> Erros / Avisos. A última opção diz "Execução do plug-in não coberta pela configuração do ciclo de vida" - use o menu suspenso para esta opção e alterne "Ignorar", Aplicar e OK. (No prompt "Requer atualização de projetos Maven", diga OK).

Mais informações:

Isso pode não necessariamente "consertar" o (s) problema (s) subjacente (s) e pode não ser qualificado como "prática recomendada" por alguns; no entanto, deve remover / suprimir a exibição desses avisos no Eclipse e, pelo menos, permitir que você avance. Especificamente - Eu estava trabalhando com Eclipse Luna Service Release 1 (4.4.1) c / Spring Dashboard & Spring IDE Core (3.6.3) e m2e (1.5) instalado, rodando em Arch Linux e OpenJDK 1.7. Importei meu projeto como um projeto maven existente e selecionei OK quando avisado sobre avisos / erros existentes (para lidar com eles mais tarde).

Suprimir / remover avisos "Plugin Execution not covered ..." Eclipse-Maven

(Desculpe, não sou um designer, mas adicionei uma imagem para maior clareza.)

Brandon K
fonte
4

Para as seguintes etapas funcionou no meu caso:

1 No eclipse, clique com o botão direito no projeto desejado Maven -> Desativar Maven Nature

2 Clique com o botão direito novamente e vá para Propriedades . Exclua todas as evidências de dependência externa do Maven, deixando apenas a Biblioteca do sistema JRE.

3 Clique com o botão direito mais uma vez no projeto e vá para Configure -> Convert to Maven Project

Rafael Isquierdo
fonte
3

Nenhuma das soluções acima funcionou para mim, então esta resposta é para qualquer outra pessoa na minha situação. Acabei encontrando o problema sozinho e uma solução diferente. O arquivo pom.xml continha uma tag dependencyManagement que envolvia as dependências, e M2Eclipse não adicionaria a pasta Maven Dependencies quando ela estivesse presente. Então, removi essa tag, executei a solução oferecida por Ualter Jr. e o Eclipse imediatamente adicionou a pasta que faltava!

Paul Crease
fonte
3

Aqui estão os passos que segui.
1. Projeto maven excluído do eclipse.
2. Excluí todos os arquivos (.setting / .classpath / target), exceto src e pom, da minha pasta de origem.
3. importado novamente como um projeto maven
4. construí-lo novamente, você deve ser capaz de ver as dependências maven.

karuna nidhan
fonte
2

Minha resposta é semelhante à de @JerylCook: encontre outro .classpatharquivo em um projeto Maven em funcionamento, edite seus arquivos ruins como os bons em funcionamento. A chave é adicionar

<attributes>
    <attribute name="maven.pomderived" value="true"/>
</attributes>

em cada <classpathentry>tipo cone src. Não se esqueça de mudar <classpathentry .... />para <classpathentry ...>xxx</classpathentry>.

Por último, atualize o projeto maven e reinstale / reconstrua no maven.

WesternGun
fonte
Isso fez isso por mim. Obrigado.
NuCradle
1

Se você tiver erros de "caminhos aninhados" após executar Maven -> Atualizar configuração do projeto (ou no Juno é "Atualizar configuração ..."), seu caminho de construção está mal configurado.

Clique com o botão direito do mouse no projeto -> Caminho de construção -> Configurar caminho de construção

Certifique-se de que apenas '/ src' e diretórios nesse nível sejam incluídos. Se você tiver, por exemplo, '/ src' e também '/ src / main / resources' presentes, isso está incorreto. O segundo recurso ('/ src / main / resources') está "aninhado" sob o primeiro ('/ src'), o que está causando sua incapacidade de importar recursos, uma vez que impede o eclipse de ver as dependências do maven.

KomodoDave
fonte
1

Meu problema parece semelhante, então vou adicionar à discussão. Eu cancelei a importação de um projeto maven existente para o Eclipse, o que resultou na impossibilidade de atualização e não terminaria adequadamente a construção do Espaço de Trabalho.

O que eu tive que fazer para resolver isso foi selecionar Run As... -> Maven build...e em Metas eu entrei dependency:go-offlinee executei isso.

Então, cliquei com o botão direito do mouse no projeto e selecionei Maven -> Update Project...e atualizei aquele projeto específico.

Isso finalmente permitiu que ele criasse as pastas de origem e concluísse a importação.

galês
fonte
1

Eu poderia resolver o erro 1) Clique com o botão direito (seu projeto maven) -> maven -> instalação maven

Após a instalação bem-sucedida

2) Clique com o botão direito (seu projeto maven) -> maven -> atualizar projeto. E todo o erro do maven foi resolvido!

Nandan Bhalwankar
fonte
1

Para mim, foi suficiente adicionar um buildCommand (org.eclipse.m2e.core.maven2Builder) e uma natureza (org.eclipse.m2e.core.maven2Nature) no arquivo .project, como este:

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>iText</name>
    <comment></comment>
    <projects>
    </projects>
    <buildSpec>
        <buildCommand>
            <name>org.eclipse.jdt.core.javabuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.eclipse.m2e.core.maven2Builder</name>
            <arguments>
            </arguments>
        </buildCommand>
    </buildSpec>
    <natures>
        <nature>org.eclipse.jdt.core.javanature</nature>
        <nature>org.eclipse.m2e.core.maven2Nature</nature>
    </natures>
</projectDescription>

e eu tinha insira a descrição da imagem aqui

Frizz1977
fonte
1

Foi assim que resolvi

  • Janela-> Preferências: Mav-> Configurações do usuário (Clique em "abrir arquivo" na janela resultante, ou apenas edite settings.xml com um editor de texto externo como o Bloco de Notas) Certifique-se de que localRepository (que é exibido nesta janela) está correto. Eu tive um erro de digitação em meu arquivo.
  • Depois de corrigir o settings.xml, clique em Atualizar configurações, que está na mesma tela Preferências-> Maven-> Configurações do usuário.

Agora reconstrua e ele instalará os JARs mais recentes no local correto.

Guyland123
fonte
1

Eu tive um problema semelhante e tentei todas as respostas neste post. O mais perto que cheguei de resolver esse problema foi combinar as soluções Joseph Lust e Paul Crease. Eu adicionei o arquivo pom.xml de backup depois de excluir e reimportar o projeto, e nada apareceu até que eu exclua a tag de gerenciamento de dependências no pom.xml e magicamente a pasta dependencies estava lá.

No entanto, ele quebrou os POMs filho, pois eles precisam do gerenciamento de dependência pom.xml pai para funcionar e, como resultado, meu MVN não estava funcionando corretamente no projeto a partir do Eclipse ou da linha de comando, apresentando um erro de pom.xml quebrado.

A última solução, se tudo falhar, é importar manualmente os arquivos .jar necessários ao seu projeto. Clique com o botão direito do mouse em Propriedades do projeto -> Caminho de construção Java -> Bibliotecas e adicionar jar externo.

Se o seu MVN estiver funcionando corretamente na linha de comando e você tiver feito uma compilação bem-sucedida no projeto, você terá todos os repositórios necessários em sua pasta .m2 / repository. Adicione todos os jars externos mencionados em sua tag de dependências de pom.xml e você verá uma seção de biblioteca referenciada em seu Eclipse, sem todos os incômodos erros vermelhos.

Esta não é a solução ideal, mas permitirá que você trabalhe no Eclipse sem erros de dependências ausentes e também permitirá que você crie o projeto Maven a partir do Eclipse e da linha de comando.

Saad
fonte
1

Este mesmo problema aconteceu comigo, e foi porque houve um erro no download de um jar devido a problemas de repo, indicado por um sinalizador vermelho no pom.xml.

Eu adicionei outro repositório para que o sinalizador vermelho pom.xmldesaparecesse e o Eclipse carregasse o pom novamente, resolvi o problema e listei as dependências do maven no Project Explorer. parece simples e óbvio para resolver problemas visíveis, mas como o Eclipse estava muito feliz em executar o maven e construir com sucesso, não era óbvio que a bandeira vermelha e o problema do repo estavam na raiz de sua relutância em analisar o pom e listar o maven dependências

rato grande
fonte
1
mvn eclipse:clean

então, do eclipse: "Projeto de atualização Maven" resolve!

Ebuzer Taha KANAT
fonte
1

atualizar o .classpath abaixo funcionará sempre.

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" output="target/classes" path="src/main/java">
        <attributes>
            <attribute name="optional" value="true"/>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="src" output="target/test-classes" path="src/test/java">
        <attributes>
            <attribute name="optional" value="true"/>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry excluding="WEB-INF/" kind="src" path="src/main/webapp"/>
    <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
            <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
    <classpathentry kind="output" path="target/classes"/>
</classpath>
Jeryl Cook
fonte
1

Dependências do Maven: O que resolveu isso para mim no Eclipse? Eu adicionei a dependência no arquivo "pom". Fiz uma construção, mas não consegui ver a dependência Maven no Eclipse. Próxima etapa: Fechamento do projeto. Em seguida, reabriu o projeto. Eu pude ver as dependências do Maven.

Krishna Rajagopalan
fonte
1

Recebi este erro quando ocorreu um erro no Pom.

  1. Execute mvn eclipse: comando eclipse no console para verificar se o pom é analisável ou não.
  2. Se não for analisável, procure o erro.
Ahmed Bilal
fonte
Estou executando no cygwin, notei que apenas este projeto não estava construindo sob eclipse, embora tenha obtido sucesso na construção (com mvn) na linha de comando. Após a execução, mvn eclipse:eclipsetodas as dependências foram adicionadas ao classpath no projeto eclipse e o projeto parecia bem. ++
Bill Naylor
0

É incrível que esse problema tenha tantas causas diferentes e soluções possíveis. Encontrei ainda uma solução diferente que funcionou para mim.

Bem, não é tanto uma solução, mas uma descoberta: Eu posso ver o nó Maven Dependências no Package Explorer, que é o padrão para a perspectiva Java, mas eu posso não vê-lo na perspectiva Java EE, que usa o Project Explorer por padrão. Ambos os exploradores parecem muito semelhantes à primeira vista, então você pode esperar ver as dependências Maven em ambos.

Enquanto tentava descobrir isso, não havia percebido essa diferença, então não foi um problema para mim no final das contas.

Perigo
fonte
0

No Eclipse STS, se as "Dependências do Maven" desaparecerem, será necessário verificar e corrigir seu pom.xml. Eu fiz isso (duas vezes) e resolvi. Não foi um problema de dependências, mas uma String gerada e movida em uma posição aleatória no meu pom.xml.

LucianoDemuru
fonte
0

Tudo acima não funcionou comigo. Pois a correção era apenas deletar a pasta do repositório sob .m2 e então fazer uma atualização do maven do eclipse.

Khalid Abdlqader
fonte
0

Muitas respostas. Veja, pode haver vários motivos pelos quais isso não está funcionando, conforme o esperado. No meu caso, também não percebi o - Tag em torno de minhas dependências.facepalm

Exemplo:

...
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${org.slf4j.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

isto apenas DEFINA a dependência para este e todos os subprojetos com a versão desejada! Isto é, como deve ser, por exemplo, a aparência no POM mestre. Para realmente usar a lib neste projeto atual, você também deve adicionar a dependência da seguinte forma:

...
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${org.slf4j.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
    </dependency>
</dependencies>

AGORA ele irá fornecer a lib neste projeto atual.

Robert Fornesdale
fonte