Importar dependências do Maven no IntelliJ IDEA

208

Eu tenho uma pequena pergunta sobre o IntelliJ IDEA 11. Acabei de importar um projeto do subversion - é um projeto inovador. Mas eu tenho um problema nas dependências da biblioteca maven, de modo que não posso incluir todas as dependências maven automaticamente - o IDEA mostra erros de dependência somente quando abro essa classe / é o que recebo aqui:

insira a descrição da imagem aqui

Então, eu quero que todas as dependências sejam adicionadas automaticamente - isso é possível ou eu tenho que passar por todos os arquivos de classe para identificar e adicionar dependências?

ATUALIZAÇÃO: Depois de fazer algumas modificações, descobri como resolver meu problema de alguma forma. Isso é o que eu fiz: insira a descrição da imagem aqui

mas acho que logicamente não incluirá e verificará novas dependências à frente?! ... Existe alguma área de configurações para isso no intelliJ - dependências de exportação automática para o caminho de classe ?!

Zaur Guliyev
fonte
9
Ele faz o download de todas as dependências, mas não parece adicioná-las ao caminho de classe ...
Zaur Guliyev
3
e outro problema é que mostra IntelliJ me vermelho erros sublinhados só quando eu abrir esse arquivo java ...
Zaur Guliyev
4
Uma instância em que você obtém essa linha vermelha é se você tem uma dependência SNAPSHOT com um classificador, em que existe uma versão mais recente da dependência sem o classificador. Isso é perfeitamente legal no Maven, mas o IntelliJ fica confuso ao tentar descobrir o caminho para o arquivo físico no seu repositório local do Maven.
RCross
4
Para sua informação, isso ainda pode acontecer em 15.0.2. Apenas aconteceu comigo. Tive que remover meu arquivo .iml e a pasta .idea e reimportar. Inacreditavelmente frustrante b / c Passei duas horas lutando contra ele e finalmente perdi todas as minhas configurações de execução cuidadosamente criadas.
Kevin Pauli
3
@KevinPauli não é necessário remover os arquivos do projeto IDEA para isso, você pode simplesmente "Reimportar todos os projetos Maven" na guia "Projetos Maven" para reimportação manual.
Zaur Guliyev

Respostas:

282

O IntelliJ deve baixar e adicionar todas as suas dependências ao caminho de classe do projeto automaticamente, desde que seu POM seja compatível e todas as dependências estejam disponíveis.

Ao importar projetos do Maven para o IntelliJ, geralmente é exibida uma caixa de informações perguntando se você deseja configurar a importação automática para projetos do Maven. Isso significa que, se você fizer alterações no seu POM, essas alterações serão carregadas automaticamente.

Você pode ativar esse recurso em Arquivo> Configurações> Maven> Importando, existe uma caixa de seleção que diz "Importar projetos do Maven automaticamente".

Se isso não ajudar, sugiro fazer uma limpeza completa e começar de novo:

  • Feche a janela do projeto (e o IntelliJ) e remova todos os *.imlarquivos e .ideapastas (deve haver um por módulo)
  • Executar a mvn clean installpartir da linha de comando
  • Reimporte o projeto para o IntelliJ e preste atenção quando ele solicitar a ativação da importação automática

Atualização do IntelliJ 2016 :

A configuração Importar projetos Maven foi movida automaticamente para Compilação, Execução, Implantação> Ferramentas de compilação> Maven> Importando nas suas preferências do IntelliJ.

Alonso Dominguez
fonte
então sua solução foi marcar as dependências como exportadas? isso é estranho! Uso muito o IntelliJ e o Maven e nenhum dos meus projetos (alguns deles são multi-projetos) tem o recurso de exportação ativado ... é o Community Edition ou Ultimate?
Alonso Dominguez
1
É uma Ultimate Edition, mas o projeto que eu importei foi construído no Eclipse - para que o .classpath tenha sido ativado lá, mas o IntelliJ use .iml - então acho lógico incluir essas bibliotecas pela primeira vez, se este projeto não tiver .iml arquivo antes ..?!
Zaur Guliyev
1
ah, ok - você tentou importá-lo como um projeto Maven em vez de um projeto Eclipse? Estou acostumado a não verificar em arquivos relacionados IDE em meus repositórios de origem quando se trabalha com projetos Maven: se é um projeto Maven, regras, então Maven
Alonso Dominguez
2
Você pode ativar a importação automática nas preferências / configurações. Abra as preferências / configurações e pesquise "Importar projetos automatizados automaticamente". está em Compilação, Execução, Implantação> Ferramentas de compilação> Maven> Importando
Seyed Jalal Hosseini
2
@ JustinBlank não se surpreende com isso, já que esta é uma resposta a partir de 2012. As configurações ainda estão lá, elas foram movidas para outro lugar (a resposta foi atualizada).
Alonso Dominguez
66

Corrigir antes do IntelliJ 14

Arquivo [menu] -> Configurações -> maven -> importando e desmarque "use maven3 para importar projeto"

ref: http://youtrack.jetbrains.com/issue/IDEA-98425 (que também pode ter algumas outras idéias)

Fixar IntelliJ 15+

Encontrei isso novamente, com o IntelliJ 15 desta vez, que não tem mais a opção "usar o maven3 para importar". A causa é que, às vezes, o IntelliJ "não analisa dependências erradas corretamente" e, se não pode analisar corretamente uma delas, desiste de todas elas, aparentemente. Você pode saber se esse é o caso abrindo a janela da ferramenta de projetos maven (menu Visualizar -> Janelas de ferramentas -> Projetos Maven). Expanda um de seus projetos e suas dependências. Se todas as dependências estiverem sublinhadas em vermelho, "Houston, temos um problema". insira a descrição da imagem aqui

Você pode realmente ver a falha real passando o mouse sobre o próprio nome do projeto.

insira a descrição da imagem aqui

No meu exemplo, ele dizia "Problemas: Nenhuma versão disponível para XXX" ou "Falha ao ler o descritor do artefato org.xy.z" ref: https://youtrack.jetbrains.com/issue/IDEA-128846 e https: // youtrack.jetbrains.com/issue/IDEA-152555

Parece que, neste caso, eu estava lidando com um jar que não tinha um arquivo pom associado (no nosso repositório maven nexus e também no meu repositório local). Se esse também é o seu problema, "solução urgente: se você realmente não precisa usar classes desse jar em seu próprio código (por exemplo, apenas uma dependência transitiva transitória), você pode realmente comentar isso do pom (temporariamente), o maven recarrega o projeto e, em seguida, descomente-o. De alguma forma, depois desse ponto, o IntelliJ "lembra" suas antigas dependências de trabalho. Adicionar uma exclusão transitiva do maven temporariamente também pode ser útil, se você o encontrar a partir da cadeia transitória de dependências. "

Outra coisa que pode ajudar é usar uma "versão mais recente" do maven que o 3.0.5 incluído. Para configurá-lo para usar isso como padrão, feche todas as suas janelas intellij e abra as preferências -> construção, execução e implantação -> ferramentas de construção -> maven e altere o diretório inicial do maven, ele deve dizer "Para padrão projeto "na parte superior quando você ajusta isso, mas você pode ajustá-lo para um projeto específico, desde que" importe "depois de ajustá-lo.

Limpar caches

Excluindo suas pastas de cache intellij (windows: HOMEPATH /. {IntellijIdea, IdeaC} XXX linux ~ / .IdeaIC15) e / ou desinstalando e reinstalando o próprio IntelliJ. Isso também pode ser feito acessando Arquivo [menu] -> Invalidate Caches / Restart.... Clique em invalidate and restart. Isso reindexará todo o seu projeto e resolverá muitos problemas difíceis de rastrear com o IntelliJ.

rogerdpack
fonte
2
Estranhamente, quase todos os outros posts recomendam verificar a opção "Usar o Maven3 para importar projeto" para resolver esse problema, enquanto desmarcá-lo resolveu o problema para mim. Por quê? Eu não sei. Obrigado!
11281 Janhink
3
Na v14 final, escolhi um especialista externo e tudo voltou ao trabalho.
AlikElzin-Kilaka
@ AlikElzin-kilaka Alterar o diretório inicial do maven para externo do maven ajuda bastante. Depois que eu atualizei IDEA para v14 final, eu não poderia lançar meu projeto no IDEA devido ao "Não tomcat6 plug-in encontrado", mas posso lançar projeto usando o comando mvn e alterar diretório home Maven para um externo resolvido
JerseyGood
No IntelliJ 2016.2.1, desabilitar a importação automática alterando Maven home directorypara a versão que nossa pilha está usando (3.3.9) corrigiu o problema para mim.
Wheeler
1
Alterando a maven home directorypartir Bundle (Maven 3)para o caminho onde o meu Maven está instalado .../maven/3.6.1/libexecfuncionou para mim
Marcelo Xavier
37

Ao importar o projeto, selecione em pom.xmlvez do diretório do projeto. Deveria funcionar.

chichi
fonte
1
sometime clique em "Reimportar todos os projetos Maven" opção no âmbito de projectos Maven janela
vikramvi
1
Talvez este seja o elegante, limpo, solução mais (e é ligeiramente intellij estranho não ajudá-lo em adivinhar que)
matanster
Trabalhando para mim também, com o IntelliJ Community Edition 2019.3.4. Obrigado por uma solução tão fácil. :)
asymmetryFan
22

Tente reimportar o projeto do painel Projetos Maven no IntelliJ IDEA. Ele deve baixar e configurar todas as dependências definidas pom.xmlautomaticamente.

Se o download não funcionar da IDEA por algum motivo, tente mvn installna linha de comando e veja se as dependências podem ser buscadas.

Obviamente, todas as dependências necessárias e quaisquer repositórios customizados devem ser definidos diretamente no pom.xmlarquivo.

CrazyCoder
fonte
14

Para o IntelliJ 2016-2.4 (e acredito que outras versões novas):

Exibir> Janelas de ferramentas> Projetos Maven

Na barra de ferramentas recém-revelada, selecione Configurações do Maven (ícone de um conjunto de ferramentas).

Quando essa tela abrir, expanda o menu Maven e clique em 'Importando'

Aqui, clique em "Importar projetos do Maven automaticamente". Verifique também se a opção 'JDK for Importer' corresponde à versão do JDK que você deseja usar.

Clique OK. Agora vá para a dependência vermelha em seu pom.xml, selecione a lâmpada vermelha e clique em 'Atualizar índices do Maven'.

Paul Back
fonte
1
escolher o JDK certo para o importador me ajudou. Eu também tive que executar mvn idea: clean idea: idea para fechar as últimas edições.
Vincent F
9

O que me ajudou:

Navegação: Configurações | Compilação, Execução, Implantação | Maven

Especifique "Diretório inicial do Maven" - o local em que você instalou o maven

Anatolii Stepaniuk
fonte
7

Se certos módulos maven não estiverem compilando, verifique se o pom.xml está na lista "arquivos ignorados". No IntelliJ, vá para

preferências -> configurações do projeto -> maven -> arquivos ignorados

e verifique se o pom.xml relacionado é ignorado.

Udo
fonte
5

Abra IntelliJ Idea, vá para Arquivo> Outras configurações> Configurações padrão ...> Maven (Preferências)> Importando ou | Preferences > Maven > Importing

insira a descrição da imagem aqui

Clique em Ativar importação automática no console.

insira a descrição da imagem aqui

Prashanth Sams
fonte
4

Ao criar um novo projeto, basta escolher a opção:

...
Importar projeto do modelo externo
Crie a estrutura do projeto IDEA sobre o modelo externo existente (Eclipse, Maven ...)
...

Você achará bastante direto a partir daí.
E no seu caso, você pode fechar seu projeto e simplesmente criar um novo. Escolha o diretório do seu projeto, que o substituirá, tornando-o um projeto Maven.

Markus Coetzee
fonte
Acordado. É quase certo que o OP simplesmente importou incorretamente o projeto.
21413 kaqqao
4

A importação de dependências do Maven pode não funcionar se você importar o mesmo caminho várias vezes. Isso pode acontecer automaticamente após a importação de um projeto maven existente. Não consigo entender por que isso acontece, então estou inclinado a pensar que é um bug.

Por exemplo, se meu projeto for

hibernate
  src/main
  src/test

os três caminhos podem ser importados como nós principais:

hibernate
src/main
src/test

Se for esse o caso, as dependências parecem estar corretas, mas não serão usadas até você remover os caminhos supérfluos (nesse caso, src/maine src/test). Depois de fazer isso, atualize e clique em Build> Rebuild Project. A IDEA pegará as dependências.

Um sintoma desse problema é que o IDEA avisa sobre um caminho duplicado quando você verifica manualmente uma biblioteca (segunda captura de tela na pergunta).

Existem várias maneiras de reler as dependências, caso você precise. Se você for para a guia "Projetos Maven", há um ícone "Reimportar todos os projetos Maven" no canto superior esquerdo da guia. Se você suspeitar que a IDEA ficou confusa, clique em Arquivo> Invalidar caches.

Jano
fonte
3

Entre na estrutura do seu projeto, em Configurações do projeto, Módulos, selecione a tabela de dependências. Para cada dependência, altere o escopo de 'Teste' para 'Compilar'.

Bud
fonte
3

Reimporte o projeto. Se você instalar o plugin maven, poderá usá-lo.

Clique com o botão direito do mouse no projeto -> Maven -> Reimportar

Damith Ganegoda
fonte
3

Primeiro caminho de verificação Especificado para o arquivo Configurações do Usuário: em Configurações -> Construção, Execução, Desenvolvimento -> Ferramentas de Construção -> Maven . O campo deve ter o caminho do settings.xml do seu maven. Além disso, o settings.xml deve ter o caminho correto do repositório remoto.

amol13
fonte
Isso funcionou para mim, no arquivo settings.xml, a entrada para a tag <url> aninhada na tag <mirror> estava desatualizada. Conversei com meus colegas para obter o valor da entrada atualizado. Fiz a alteração para ~ / .m2 / settings.xml, fechei o intelliJ e o iniciei novamente. Na reinicialização, sem fazer mais nada, os sublinhados vermelhos que apareciam na exibição do maven desapareceram. Estranhamente, a maioria das dependências raiz destacadas estava sempre presente na entrada "External Libraries" da visualização Project, antes e depois da execução dessa correção.
Steve T
3

Eu tive um problema semelhante; no meu caso, estou usando um costume settings.xmlque não foi escolhido no IntelliJ.

Solução:
File > Settings > Build, Execution, Deployment > Maven: User settings file (escolha aqui minhas configurações personalizadas.xml).

petre
fonte
3

Eu tive o mesmo problema e tentei todas as respostas mencionadas aqui, nenhuma funcionou.

A solução simples é ir para a pasta do projeto e excluir todos os arquivos .idea e .iml e reiniciar o IDE do IntelliJ. Funciona. Não há necessidade de fazer nada com as configurações.

Yashaswi NP
fonte
2

Encontrei o problema de que algumas subdependências não podiam ser resolvidas no IntelliJ 2016.3.X. Isso pode ser corrigido alterando-o Maven home directoryem Configurações> Compilação, Execução, Implantação> Ferramentas de compilação> Maven de Bundled (Maven 3)para /usr/share/maven.

Depois disso, todas as subdependências foram resolvidas como nas versões anteriores do IntelliJ.

Johannes Stadler
fonte
2

Maven - Reimport não funcionou para mim. Eu tenho o projeto Spring no STS (Eclipse) e minha solução é importar o projeto para o IDEA da seguinte forma:

1) Arquivo - Novo - Projeto de fontes existentes ... - selecione o diretório - selecione o diretório - escolha Eclipse.
2) Defina a importação automática do Maven para true nas configurações.
3) Clique com o botão direito do mouse em pom.xml e escolha Adicionar como projeto Maven.

Depois disso, importou tudo.

Svitlana Onish
fonte
2

Eu tive o problema semelhante com o meu macbook, apenas fiz uma pequena alteração pom.xmle ele começou a baixar todas as dependências:

As dependências anteriores foram escritas como abaixo para a minha máquina Windows:

<dependencies>
 <dependency>
  <groupId>javax.mail</groupId>
  <artifactId>mail</artifactId>
  <version>1.4</version>
</dependency>
</dependencies>

Eu só removeu os <dependencies>e </dependencies>tags e ele começou a baixar todas as dependências:

<dependency>
  <groupId>javax.mail</groupId>
  <artifactId>mail</artifactId>
  <version>1.4</version>
</dependency>

Não sei se funcionará para você ou não ... mas funcionou bem para mim.

obrigado

Amit Joshi
fonte
1

Se no canto inferior direito aparecer "2 processos em execução ..." ou semelhante, talvez seja necessário aguardar o término, pois pode levar tempo para fazer o download de todos os frascos.

djechlin
fonte
1

Resolvi esse problema atualizando meu arquivo settings.xml com a configuração de espelho correta, parece que o intellij tentará baixar metadados do repositório toda vez que o módulo maven importado.

Abel Zhan
fonte
1

Seqüestrando um pouco para adicionar o que acabou funcionando para mim:

Vá para a Maven Projectsbarra lateral na borda direita do IDE e verifique se suas dependências estão listadas corretamente no seu módulo. Supondo que sejam, basta pedir à IDEA para reimportar então (o primeiro botão na parte superior parece duas setas azuis formando um círculo no sentido anti-horário).

Depois que fiz isso e deixei a IDEA recarregar o projeto para mim, todas as minhas dependências foram magicamente entendidas.

Para referência: isso foi com IDEA 13.1.2

Sunspar
fonte
1

Enfrentei o mesmo problema e tentei de tudo o que sugeria que não resolveu o problema, estava usando o Intellij versão 13.1.3

Finalmente, depois de passar mais de duas horas tentando corrigi-lo, decidi tentar uma versão atualizada e abri o projeto na versão 14.1.4, que finalmente resolveu o problema. Eu acho que isso é um bug provável na versão anterior.

Eu espero que isso ajude!

sjaiswal
fonte
1

Consegui resolvê-lo removendo módulos desnecessários da lista Configurações do projeto -> Módulos .

insira a descrição da imagem aqui

Acontece que esses módulos adicionais foram criados automaticamente pelo IntelliJ IDEA quando criei o projeto IntelliJ importando da pasta do projeto (em vez de abrir o pom.xml). Depois de declarar o projeto como projeto Maven, os módulos adequados foram criados e os módulos existentes estavam em conflito com eles. Também é possível excluir esses módulos durante a criação do projeto.

Ellyor
fonte
1

Excluir a pasta .idea do diretório do projeto e reimportá-lo como um projeto Maven é o que funcionou para mim.

Janac Meena
fonte
1

No meu caso, um dos módulos foi ignorado por algum motivo. Para resolver isso: Clique com o botão direito do mouse no módulo problemático e escolha "Designorar projetos".

unignore project example

KernelMode
fonte
1

No meu caso, o caminho para JAVA usado por MAVEN não foi definido como JAVA_HOME conforme configurado na máquina. Por isso, nem estava tentando baixar as dependências. As etapas que segui que resolveram esse problema,

  1. Verificado quanto ao caminho JAVA, Configurações >> Compilar >> Ferramentas de Compilação >> Importar >> JDK for importator . Apontou para JAVA_HOME.

  2. mvn clean install -U

    Utilizado acima do comando para forçar o download de dependências.

  3. Projetos Maven reimportados

Akanksha Sharma
fonte
0

Se tudo mais falhar, verifique se o arquivo jar no seu repositório .m2 local é realmente válido e não está corrompido. No meu caso, o arquivo não foi totalmente baixado.

Markus Barthlen
fonte
0

No maven, as dependências foram incluídas para mim quando removi a seção xml dependencyManagement e só tinha dependências diretamente na seção do projeto

cavalo marinho
fonte
0

O problema parece ser que, apesar de listar suas dependências no pom.xml, o IntelliJ IDEA não reconstrói essas dependências quando você executa seu projeto.

O que funcionou para mim é o seguinte:

Vá para 'Executar' -> 'Editar configurações ...', localize seu aplicativo, verifique se a seção "Antes de iniciar:" está expandida, clique no sinal de mais verde e selecione "Construir projeto".

insira a descrição da imagem aqui

Mike Nakis
fonte
0

Consegui consertar o meu adicionando essas linhas de código após a tag build no arquivo pom.xml, comparei-o no meu projeto em execução e descobri que era a diferença, agora estou bem.

<repositories>
        <repository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>https://repo.spring.io/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>https://repo.spring.io/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </pluginRepository>
        <pluginRepository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
        </pluginRepository>
    </pluginRepositories>
ChibuezePaul ISoft
fonte