O maven requer uma conexão com a internet em algum ponto para poder usá-lo? O que significa obter especificamente os plug-ins internos do maven para compilar, limpar, empacotar, etc?
O maven requer uma conexão com a internet em algum ponto para poder usá-lo? O que significa obter especificamente os plug-ins internos do maven para compilar, limpar, empacotar, etc?
Respostas:
Você pode executar o maven no modo offline mvn -o install
. É claro que quaisquer artefatos não disponíveis em seu repositório local irão falhar. O Maven não se baseia em repositórios distribuídos, mas eles certamente tornam as coisas mais fáceis. É por esse motivo que muitas lojas usam espelhos internos que são sincronizados de forma incremental com os repositórios centrais.
Além disso, mvn dependency:go-offline
pode ser usado para garantir que todas as dependências estejam instaladas localmente antes de começar a trabalhar offline.
mvn dependency:go-offline
simplesmente não pega tudo. Dentro de uma nova máquina virtual, por exemplo, meu projeto ainda deve baixar coisas, mesmo depois de executar esse objetivo. Veja também esta edição .
Se você tiver um PC com acesso à Internet em sua LAN, deverá instalar um repositório Maven local.
Eu recomendo Artifactory Open Source . Isso é o que usamos na nossa organização, é muito fácil de configurar.
Artifactory atua como um proxy entre sua ferramenta de construção (Maven, Ant, Ivy, Gradle etc.) e o mundo externo.
Ele armazena em cache artefatos remotos para que você não precise baixá-los repetidamente.
Ele bloqueia solicitações externas indesejadas (e às vezes sensíveis à segurança) para artefatos internos e controla como e onde os artefatos são implantados e por quem.
Depois de configurar o Artifactory, você só precisa alterar o Maven settings.xml
nas máquinas de desenvolvimento:
<?xml version="1.0" encoding="UTF-8"?>
<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<mirrors>
<mirror>
<mirrorOf>*</mirrorOf>
<name>repo</name>
<url>http://maven.yourorganization.com:8081/artifactory/repo</url>
<id>repo</id>
</mirror>
</mirrors>
<profiles>
<profile>
<repositories>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>libs-release</name>
<url>http://maven.yourorganization.com:8081/artifactory/libs-release</url>
</repository>
<repository>
<snapshots />
<id>snapshots</id>
<name>libs-snapshot</name>
<url>http://maven.yourorganization.com:8081/artifactory/libs-snapshot</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>plugins-release</name>
<url>http://maven.yourorganization.com:8081/artifactory/plugins-release</url>
</pluginRepository>
<pluginRepository>
<snapshots />
<id>snapshots</id>
<name>plugins-snapshot</name>
<url>http://maven.yourorganization.com:8081/artifactory/plugins-snapshot</url>
</pluginRepository>
</pluginRepositories>
<id>artifactory</id>
</profile>
</profiles>
<activeProfiles>
<activeProfile>artifactory</activeProfile>
</activeProfiles>
</settings>
Usamos essa solução porque tivemos problemas com o acesso à Internet em nossas máquinas de desenvolvimento e alguns artefatos baixaram arquivos corrompidos ou não foram baixados. Não tivemos problemas desde então.
Você tem duas opções para isso:
1.) fazer alterações no settings.xml adicionar isso na primeira tag
<localRepository>C:/Users/admin/.m2/repository</localRepository>
2.) use a tag -o para o comando offline.
mvn -o clean install -DskipTests=true
mvn -o jetty:run
O Maven precisa das dependências em seu repositório local. A maneira mais fácil de obtê-los é com acesso à internet (ou mais difícil usando outras soluções fornecidas aqui).
Assim, supondo que você possa obter acesso temporário à Internet, você pode se preparar para ficar offline usando o plug-in maven-dependency com seu objetivo dependency: go-offline . Isso irá baixar todas as dependências do seu projeto para o seu repositório local (é claro que as alterações nas dependências / plug-ins exigirão um novo acesso à Internet / repositório central).
Infelizmente
dependency:go-offline
não funcionou para mim, pois não armazenou tudo em cache, ou seja. Arquivos POMs e outras dependências mencionam implicitamente.
A solução alternativa foi especificar um local de repositório local , dentro do settings.xml
arquivo com <localRepository>...</localRepository>
ou executando mvn
com o -Dmaven.repo.local=...
parâmetro. Após a construção inicial do projeto, todos os artefatos necessários devem ser armazenados em cache, e então você pode referenciar a localização do repositório da mesma maneira, enquanto executa a construção do Maven no modo offline ( mvn -o ...
).
Antes de ficar offline, você deve se certificar de que tudo está em seu repositório local, o que é necessário ao trabalhar offline. Executar "mvn dependency: go-offline" para o (s) projeto (s) / pom (s) em que você pretende trabalhar reduzirá os esforços para conseguir isso.
Mas geralmente não é toda a história, porque dependency: go-offline irá apenas baixar os plug-ins "bare build" ( go-offline / resolve-plugins não resolve todas as dependências de plug-ins ). Portanto, você precisa encontrar uma maneira de baixar os plug-ins de implantação / teste / site (e talvez outros) e suas dependências em seu repo.
Além disso, dependency: go-offline não baixa o artefato do pom, então você tem que depender: copie se necessário.
Às vezes - como escreveu o MaDa - você não sabe o que precisará, enquanto estiver offline, o que torna praticamente impossível ter um repositório "suficiente".
De qualquer forma, tendo um repositório devidamente preenchido, você só precisa adicionar "<offline> true </offline>" ao arquivo settings.xml do Maven para ficar offline.
Não altere o perfil (id) Maven que você usou para preencher seu repo, enquanto estava offline. O Maven reconhece os artefatos baixados em seus metadados com uma "identidade", que é associada ao id do perfil.
Se estiver usando o IntelliJ, você pode simplesmente ir para Preferências -> Compilar, Execução, Implementação -> Ferramentas de Compilação -> Maven e marcar / desmarcar Trabalhar offline .
Isso funciona para você?
http://jojovedder.blogspot.com/2009/04/running-maven-offline-using-local.html
Não se esqueça de adicioná-lo ao seu repositório de plugins e apontar a url para onde quer que esteja seu repositório.
<repositories>
<repository>
<id>local</id>
<url>file://D:\mavenrepo</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>local</id>
<url>file://D:\mavenrepo</url>
</pluginRepository>
</pluginRepositories>
Caso contrário, você pode precisar executar um servidor local, por exemplo, apache, em suas máquinas.
(fonte: jfrog.com )
ou
Basta usar servidores de repositório Maven como Sonatype Nexus http://www.sonatype.org/nexus/ ou JFrog Artifactory https://www.jfrog.com/artifactory/ .
Depois que um desenvolvedor constrói um projeto, os próximos desenvolvedores ou Jenkins CI não exigirão acesso à Internet.
O servidor de repositório Maven também pode ter proxies configurados para acessar o Maven Central (ou mais repositórios públicos necessários), e eles podem ter uma lista de artefatos sincronizada em repositórios remotos.
Minha experiência mostra que a opção -o não funciona corretamente e que a meta de ficar offline está longe de ser suficiente para permitir uma compilação offline completa:
A solução que eu poderia validar inclui o uso da --legacy-local-repository
opção maven em vez da -o
(offline) e o uso do repositório local no lugar do repositório de distribuição
Além disso, tive que copiar todos os maven-metadata-maven2_central.xml
arquivos do maven-metadata.xml
repositório local no formato esperado pelo maven.
Veja a solução que encontrei aqui .
Respondendo diretamente à sua pergunta: não requer conexão com a internet, mas acesso a um repositório, em LAN ou disco local (use dicas de outras pessoas que postaram aqui).
Se o seu projeto não está em uma fase madura, isso significa que quando os POMs são alterados com frequência, o modo offline será muito impraticável, pois você terá que atualizar seu repositório com bastante frequência também. A menos que você possa obter uma cópia de um repositório que tem tudo que você precisa, mas como você saberia? Normalmente, você inicia um repositório do zero e ele é clonado gradualmente durante o desenvolvimento (em um computador conectado a outro repositório). Uma cópia do repositório público repo1.maven.org pesa centenas de gigabytes, então eu também não recomendaria força bruta.
Um novo plugin apareceu para corrigir as deficiências de mvn dependency:go-offline
:
https://github.com/qaware/go-offline-maven-plugin
Adicione-o ao seu pom e execute mvn -T1C de.qaware.maven:go-offline-maven-plugin:resolve-dependencies
. Depois de configurar todas as dependências dinâmicas, o maven não tentará baixar nada novamente (até que você atualize as versões).
<offline> false </offline>
<localRepository>${user.home}/.m2/repository</localRepository>
para
<offline> true <offline>
<localRepository>${user.home}/.m2/repository</localRepository>
Altere a tag offline de falsa para verdadeira.
irá baixar do repo online