Com o maven, ocasionalmente encontro um artefato proveniente de algum repositório de terceiros que ainda não construí ou incluí no meu repositório.
Receberei uma mensagem de erro do cliente maven dizendo que um artefato não pode ser encontrado:
Falha ao localizar org.jfrog.maven.annomojo: maven-plugin-anno: jar: 1.4.0 in
http://myrepo:80/artifactory/repo
foi armazenado em cache no repositório local, a resolução não será tentada até que o intervalo de atualização do MyRepo tenha decorrido ou as atualizações sejam forçadas -> [ Ajuda 1]
Agora, eu entendo o que isso significa, e pode simplesmente re-executar o meu comando com -U
, e as coisas normalmente funcionará bem de lá em diante .
No entanto, acho esta mensagem de erro extremamente intuitiva e estou tentando poupar alguns dos meus colegas de trabalho.
Estou tentando descobrir se há algum lugar para modificar essa update interval
configuração.
- O
update interval
mencionado nesta mensagem de erro é uma configuração do lado do cliente ou do servidor? - Se do lado do cliente, como faço para configurá-lo?
- No lado do servidor, alguém sabe como / se o Nexus / Artifactory expõe essas configurações?
fonte
pom.xml
.Respostas:
Eu costumava resolver esse problema excluindo a pasta correspondente ao download de artefato correspondente no repositório local. Na próxima vez em que executar o comando maven, o download do artefato é acionado novamente. Portanto, eu diria que é uma configuração do lado do cliente.
No lado do Nexus (lado do repo do servidor), esse problema foi resolvido na configuração de uma tarefa agendada. Do lado do cliente, isso é feito usando
-U
, como você já apontou.fonte
você pode excluir o diretório de artefato com falha correspondente em seu repositório local. E também você pode simplesmente usar o
-U
no objetivo. Isso fará o trabalho. Isso funciona com o maven 3. Portanto, não é necessário fazer o downgrade para o maven 2.fonte
~/.m2/settings.xml/<repositories>
a resolver este problema com opções -UEu tive um problema relacionado, mas a resposta de Raghuram ajudou. (Ainda não tenho reputação suficiente para votar em sua resposta). Estou usando o Maven empacotado com o NetBeans e estava obtendo o mesmo "... foi armazenado em cache no repositório local, a resolução não será tentada até que o intervalo de atualização do nexus tenha decorrido ou as atualizações sejam forçadas -> erro [Ajuda 1]" .
Para corrigir isso, adicionei
<updatePolicy>always</updatePolicy>
ao meu arquivo de configurações (C: \ Arquivos de Programas \ NetBeans 7.0 \ java \ maven \ conf \ settings.xml)fonte
O que basicamente acontece é que, de acordo com a política de atualização padrão do maven.
Resolução:
Qualquer uso
onde -U forçará a atualização do repositório
ou use
no seu settings.xml
fonte
De acordo com a referência de configurações :
Exemplo:
fonte
Embora você possa resolver isso com uma instalação limpa (substituindo quaisquer dependências em cache), como @ Sanjeev-Gulgani sugere com
mvn -U clean install
Você também pode simplesmente remover a dependência em cache que está causando o problema com
Veja mvn docs para mais informações.
fonte
Às vezes, esse erro pode ser enganoso. 2 coisas que você pode querer verificar:
Existe um JAR real para a dependência no repositório? Sua mensagem de erro contém um URL de onde está pesquisando; portanto, vá para lá e navegue até a pasta que corresponde à sua dependência. Existe uma jarra? Caso contrário, você precisará alterar sua dependência. (por exemplo, você poderia estar apontando para uma dependência pai de nível superior, quando deveria estar apontando para um subprojeto)
Se o jar existir no repositório remoto, exclua sua cópia local. Ele estará em seu diretório pessoal (a menos que você tenha configurado de maneira diferente) em .m2 / repository (ls -a para mostrar oculto se estiver no Linux).
fonte
Se você estiver usando o Eclipse, acesse Windows -> Preferências -> Maven e desmarque a caixa de seleção "Não atualizar automaticamente dependências de repositórios remotos".
Isso funciona com o Maven 3 também.
fonte
Você precisa excluir todos os arquivos "_maven.repositories" do seu repositório.
fonte
Isso funciona depois que você exclui a dependência relacionada do seu repositório maven local
fonte
Se você usar o Nexus como um repositório de proxy, ele terá a configuração "TTL de cache não encontrado" com o valor padrão 1440 minutos (ou 24 horas). A redução desse valor pode ajudar (Repositórios> Configuração> Configurações de Expiração).
Consulte a documentação para obter mais informações.
fonte
Como eu consegui esse problema,
Quando mudei do Eclipse Juno para Luna e fiz check-out dos meus projetos do repositório SVN, tive os mesmos problemas ao criar os aplicativos.
O que eu tentei? Tentei limpar o repositório local e atualizei todas as versões novamente usando a opção -U. Mas meu problema continuou.
Depois fui para Janela -> Preferências -> Maven -> Configurações do usuário -> e cliquei no botão Reindex em Repositório local e aguarde a reindexação.
Isso é tudo, o problema está resolvido.
fonte
Para finalmente responder à pergunta do título: É (uma configuração do lado do cliente) em (projeto, perfil ou configurações)
... tag.
Os (atualmente, maven: 3.6.0, mas suponho que sejam compatíveis "muito atrás") os possíveis valores são:
A avaliação atual (maven 3.6.0) dessa tag é implementada da seguinte maneira:
..com:
... onde
lastModified
está o (arquivo local) "carimbo de data / hora modificado" de um / cada artefato subjacente.Em particular para a
interval:x
configuração::
não é tão rigoroso - qualquer caractere "não vazio" poderia fazer isso (=
,...).
x < 0
devem render para "nunca".interval:0
Eu assumiria um intervalo "minucioso" (0-59 segundos ou mais ...).24 * 60
minutos (~ "diariamente")...see: DefaultUpdatePolicyAnalyzer , DefaultMetadataResolver # resolveMetadata () e RepositoryPolicy
fonte
Para usuários do Intellij, o seguinte funcionou para mim:
Clique com o botão direito no seu pacote
e
fonte
Um pouco relevante .. eu estava ficando
Este erro foi causado pelo uso acidental em
Maven 3
vez deMaven 2
. Imaginei que poderia economizar tempo para alguém, porque minha pesquisa inicial no Google me levou a esta página.fonte
O Maven possui configurações updatePolicy para especificar a frequência para verificar as atualizações no repositório ou para manter o repositório sincronizado com remoto.
O exemplo de código abaixo pode ser adicionado ao arquivo de configurações do usuário maven para configurar o updatePolicy.
fonte
If client-side, how do I configure it?
. Esta resposta não é sobre nenhum recurso IDE. É apenas a configuração do repositório mvn. EsseupdatePolicy
é o intervalo sobre o qual o OP está perguntando.No meu caso, a solução foi estúpida: eu só tinha versões de dependência incorretas.
fonte
Eu tive esse problema e as descrições abrangentes propostas nisso me ajudaram a corrigi-lo.
O segundo problema declarado foi o meu problema. Eu usei um repositório de terceiros que acabei de adicionar para fazer a
repository
parte do arquivo pom no meu projeto. Eu adiciono as mesmas informações do repositóriopluginrepository
para resolver esse problema.fonte
Eu tive um erro semelhante com um artefato diferente.
Nenhuma das soluções descritas acima funcionou para mim. Finalmente resolvi isso no IntelliJ IDEA por Arquivo> Invalidar caches / reiniciar ...> Invalidar e reiniciar .
fonte
No meu caso, eu tinha vários projetos
Quando eu fiz "mvn clean install" no diretório "domainProject", recebi o erro.
Quando eu "mvn clean install" do diretório "projectRoot", o problema foi resolvido.
fonte