Estou trabalhando em um projeto bastante grande do Maven. Provavelmente, temos cerca de 70 artefatos individuais, que são divididos em duas bibliotecas de código compartilhado e talvez dez aplicativos que os utilizam. Todos esses itens estão no espaço para nome com.mycompany.*
.
Na maioria das vezes, estamos executando versões de snapshot. Para fazer uma compilação completa de um aplicativo, primeiro devo compilar os projetos da biblioteca para que sejam instalados no meu repositório local (como, por exemplo, mycompany-libname-2.4-SNAPSHOT.jar
).
O problema é que quando eu vou construir os aplicativos. Por alguma razão, o Maven deseja verificar os dois principais repositórios públicos (maven-net-repo e java-net-repo) para obter atualizações para todos osmycompany-*-SNAPSHOT.jar
artefatos. Obviamente, eles não são encontrados lá e tudo acaba voltando às versões que eu acabei de construir no meu repositório local, mas eu gostaria que o Maven parasse de fazer isso porque (a) isso me faz sentir como uma rede ruim. por verificar constantemente esses repositórios em busca de coisas que nunca estarão lá, e (b) adiciona alguma latência de rede desnecessária e irritante ao meu processo de criação.
Passei a executar o maven no modo offline na maioria das vezes para contornar isso, mas isso não é ideal, pois ocasionalmente uma dependência de uma biblioteca pública será atualizada. Então, o que estou procurando é uma solução que faça com que o Maven não verifique se há atualizações de repositórios específicos para artefatos que atendem a certos critérios - nesse caso, ficaria feliz se o Maven ignorasse as versões do INSTANTÂNEO ou os artefatos que estavam em o com.mycompany
espaço para nome.
fonte
Além disso, você pode usar
-o
ou--offline
na linha de comando mvn que colocará o maven no "modo offline" para que não verifique se há atualizações. Você receberá um aviso sobre não conseguir dependências que ainda não estão no seu repositório local, mas não é grande coisa.fonte
Algo que agora também está disponível no maven é
ou em suma
fonte
set offline := true
na sessão ouoffline := true
embuild.sbt
.nsu
opção está quebrada na v 3.0.3 (consulte MNG-5064 ). Para usar esta opção de maneira confiável, pode ser necessário atualizar para pelo menos a v. 3.0.4 ou v. 3.0.5Atualização: Eu provavelmente deveria ter começado com isso, pois seus projetos são INSTANTÂNEOS. Faz parte da semântica do SNAPSHOT que o Maven verificará atualizações em cada compilação. Ser um INSTANTÂNEO significa que é volátil e está sujeito a alterações, portanto, as atualizações devem ser verificadas. No entanto, vale ressaltar que o super POM do Maven configura a central para ter os snapshots desativados; portanto, o Maven nunca deve procurar atualizações para SNAPSHOTs na central, a menos que você tenha substituído isso em suas próprias configurações / pom.
Você pode configurar o Maven para usar um espelho no repositório central. Isso redirecionará todas as solicitações que normalmente iriam para o repositório interno.
Em seu settings.xml, você adicionaria algo assim para definir seu repositório interno como espelho da central:
Se você estiver usando um gerenciador de repositório como o Nexus para seu repositório interno. Você pode configurar um repositório de proxy para a central de proxy, para que todas as solicitações que normalmente iriam para a Central sejam enviadas para seu repositório de proxy (ou um grupo de repositórios que contenha o proxy) e as solicitações subsequentes sejam armazenadas em cache no gerenciador de repositório interno. Você pode até definir o tempo limite do cache do proxy como -1, para que ele nunca solicite conteúdo da central que já esteja no repositório do proxy.
Uma solução mais básica se você estiver trabalhando apenas com repositórios locais é definir " updatePolicy" para o repositório central como "nunca", isso significa que o Maven só verificará artefatos que ainda não estão no repositório local. Isso pode ser substituído na linha de comando quando necessário, usando a opção -U para forçar o Maven a verificar se há atualizações.
Você configuraria o repositório (no seu pom ou em um perfil no settings.xml) da seguinte maneira:
fonte
updatePolicy
elemento fica sob o elementosnapshots
oureleases
. Veja: maven.apache.org/settings.htmlMuito simples :
No pai do Super POM ou setting.xml, use
São minhas dicas
fonte
Eu tive alguns problemas semelhantes a isso,
Definir o updatePolicy como "never" não funcionou. A remoção desses repositórios foi a maneira que resolvi. ps: Eu estava seguindo este tutorial sobre serviços web (btw, provavelmente o melhor tutorial para ws para java)
fonte