maven - use - using artifactory




Quando o maven diz que “a resolução não será reativada até que o intervalo de atualização do MyRepo tenha decorrido”, onde esse intervalo é especificado? (10)

Como eu peguei esse problema

Quando mudei do Eclipse Juno para o Luna e fiz o checkout dos meus projetos maven do repositório SVN, recebi os mesmos problemas ao criar os aplicativos.

O que eu tentei? Eu tentei limpo repositório local e, em seguida, atualizando todas as versões novamente usando a opção -U. Mas meu problema continuou.

Então eu fui para Window -> Preferences -> Maven -> Configurações do Usuário -> e cliquei no botão Reindex em Repositório Local e aguarde a reindexação acontecer.

Isso é tudo, o problema está resolvido.

Com o maven, eu ocasionalmente bato em um artefato que vem de algum repositório de terceiros que ainda não construí ou incluí no meu repositório.

Recebo uma mensagem de erro do cliente do maven dizendo que um artefato não pode ser encontrado:

Se você não encontrar o org.jfrog.maven.annomojo: maven-plugin-anno: jar: 1.4.0 em http://myrepo:80/artifactory/repo foi armazenado em cache no repositório local, a resolução não será http://myrepo:80/artifactory/repo até o intervalo de atualização de MyRepo passou ou as atualizações são forçadas -> [Ajuda 1]

Agora, eu entendo o que isso significa, e posso simplesmente re-executar meu comando com -U , e as coisas geralmente funcionam bem de lá em diante .

No entanto, acho que essa mensagem de erro é extremamente não intuitiva e estou tentando poupar dores de cabeça dos meus colegas de trabalho.

Eu estou tentando descobrir se há algum lugar que eu possa modificar essa configuração de update interval .

  1. O update interval mencionado nesta mensagem de erro é uma configuração do lado do cliente ou do lado do servidor?
  2. Se do lado do cliente, como faço para configurá-lo?
  3. Se do lado do servidor, alguém sabe como / se o Nexus / Artifactory expõe essas configurações?

De acordo com a reference configurações:

updatePolicy: este elemento especifica com que frequência as atualizações devem tentar ocorrer. O Maven irá comparar o timestamp do POM local (armazenado no arquivo de metadados do repositório) ao controle remoto. As opções são: sempre, diariamente (padrão), intervalo: X (onde X é um inteiro em minutos) ou nunca.

Exemplo:

<profiles>
    <profile>
      ...
      <repositories>
        <repository>
          <id>myRepo</id>
          <name>My Repository</name>
          <releases>
            <enabled>false</enabled>
            <updatePolicy>always</updatePolicy>
            <checksumPolicy>warn</checksumPolicy>
          </releases>
         </repository>
      </repositories>
      ...
    </profile>
  </profiles>
  ...
</settings>

Esse erro pode, às vezes, ser enganoso. 2 coisas que você pode querer verificar:

  1. Existe um JAR real para a dependência no repositório? Sua mensagem de erro contém uma URL de onde está pesquisando, então vá até lá e navegue até a pasta que corresponde à sua dependência. Existe um jarro? Se não, você precisa mudar sua dependência. (por exemplo, você poderia estar apontando para uma dependência de pai de nível superior, quando deveria estar apontando para um subprojeto)

  2. Se o jar existe no repositório remoto, basta excluir sua cópia local. Ele estará no seu diretório home (a menos que você tenha configurado de forma diferente) sob .m2 / repository (ls -a para mostrar escondido no Linux).


Eu tive um problema relacionado, mas a resposta de Raghuram ajudou. (Eu ainda não tenho reputação suficiente para votar em sua resposta). Estou usando o Maven empacotado com o NetBeans e obtendo o mesmo "... foi armazenado em cache no repositório local, a resolução não será reativada até que o intervalo de atualização do nexus tenha decorrido ou as atualizações sejam forçadas -> [Help 1]" error .

Para corrigir isso eu adicionei <updatePolicy>always</updatePolicy> ao meu arquivo de configurações (C: \ Arquivos de Programas \ NetBeans 7.0 \ java \ maven \ conf \ settings.xml)

<profile>
  <id>nexus</id>
  <!--Enable snapshots for the built in central repo to direct -->
  <!--all requests to nexus via the mirror -->
  <repositories>
    <repository>
      <id>central</id>
      <url>http://central</url>
      <releases><enabled>true</enabled><updatePolicy>always</updatePolicy></releases>
      <snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots>
    </repository>
  </repositories>
 <pluginRepositories>
    <pluginRepository>
      <id>central</id>
      <url>http://central</url>
      <releases><enabled>true</enabled><updatePolicy>always</updatePolicy></releases>
      <snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots>
    </pluginRepository>
  </pluginRepositories>
</profile>

No Eclipse:

  • Clique com o botão direito do mouse no Projeto -> Executar como -> Construção do Maven -> Especificar Objetivo como "instalação limpa" - >> Os Artefatos Requeridos serão baixados para o repositório local.
  • - >> Quando o Build SUCCESS !! -> Clique com o botão direito em Project-> Maven -> Update Project (verifique limpo).

O que basicamente acontece é, de acordo com o padrão updatePolicy de maven.Maven vai buscar os frascos de repo em base diária.So se durante a primeira tentativa sua internet não estava funcionando, então ele não iria tentar buscar este frasco novamente até 24 horas gasto.

Resolução:

Pode usar

mvn -U clean install

onde -U forçará a atualização do repo

ou usar

<profiles>
    <profile>
      ...
      <repositories>
        <repository>
          <id>myRepo</id>
          <name>My Repository</name>
          <releases>
            <enabled>false</enabled>
            <updatePolicy>always</updatePolicy>
            <checksumPolicy>warn</checksumPolicy>
          </releases>
         </repository>
      </repositories>
      ...
    </profile>
  </profiles>

nas suas configurações.xml


Se você estiver usando o Eclipse, vá para 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.


Se você usar o Nexus como proxy repo, ele terá a configuração "Não encontrado no cache TTL" com o valor padrão 1440 minutos (ou 24 horas). Diminuir este valor pode ajudar (Repositórios> Configuração> Configurações de Expiração).

Veja a documentation para mais informações.


Você precisa excluir todos os arquivos "_maven.repositories" do seu repositório.


você pode excluir o diretório de artefatos com falha correspondente no 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.





artifactory