O que é um armazém maven
Quando não usamos o Maven, por exemplo, no passado, costumávamos construir projetos com ANT, geralmente vemos um subdiretório chamado /lib, que armazena vários arquivos de jar de dependência de terceiros, como log4j.jar, junit.jar, etc.
Toda vez que você cria um projeto, você precisa criar um diretório A /Lib e copiar um par de arquivos JAR, que é uma duplicação óbvia. A repetição é sempre o ponto de partida de um pesadelo. Vários projetos não compartilham o mesmo arquivo JAR, que não apenas causarão desperdício de recursos em disco, mas também dificultam o gerenciamento de consistência das versões.
Além disso, se você usar ferramentas de gerenciamento de versões como o SVN (você não usa ferramentas de gerenciamento de versões? Experimente o SVN agora, ele pode ajudá -lo a resolver muitas dores de cabeça), você precisa enviar um grande número de arquivos JAR para a biblioteca de código, mas as ferramentas de gerenciamento de versões não são excelentes no manuseio de arquivos binários.
O repositório maven é onde todos os arquivos JAR (guerra, zip, pom etc.) são colocados. Todos os projetos Maven podem obter o frasco de dependência de que precisam do mesmo repositório Maven, que salva os recursos do disco. Além disso, como todos os frascos no repositório Maven têm suas próprias coordenadas, que dizem ao MAVEN seu ID do grupo, ID do componente, versão, método de embalagem etc., o projeto MAVEN pode facilmente executar o gerenciamento de versão de dependência. Você não precisa enviar arquivos JAR para o repositório SCM, pode criar um repositório MAVEN no nível da organização para que todos os membros usem.
Em resumo, o MAVEN Repository nos ajuda a gerenciar artefatos (principalmente frascos).
No Maven, a saída de qualquer construção de dependência, plug-in ou projeto pode ser chamada de componente.
O Maven armazena todos os componentes compartilhados de todos os projetos em um local unificado. Este local unificado é chamado de armazém. (O armazém é onde as dependências e plug-ins são armazenados)
Qualquer componente tem uma coordenada única. O MAVEN define o caminho de armazenamento exclusivo do componente no armazém com base nessa coordenada.
Interpretar o caminho de armazenamento do MAVEN no repositório:
1. Prepare o caminho baseado no grupo, converta o separador do período no separador do caminho, ou seja, converta "." para "/" ; Exemplo: org.testng ---> org/testng
2. Prepare o caminho baseado no Artifactid e conecte o Artifactid à parte traseira: org/testng/testng
3. Use a versão para preparar o caminho e conectar a versão ao verso: org/testng/testng/5.8
4. Conecte o Artifactid à versão com um hífen separador à parte traseira: org/testng/testng/5.8/tesng-5.8
5. Julgando se o componente tiver um classificador, adicione o hífen do separador após o item 4 e adicione o classificador, org/testng/testng/5.8/tesng-5.8-jdk5
6. Verifique a extensão do componente. Se a extensão existir, adicione o separador e a extensão do período. A extensão é determinada pela embalagem, org/testng/testng/5.8/tesng-5.8-jdk5.jar
Neste ponto, entendemos os detalhes do armazenamento de componentes do Maven.
CLASSIFICAÇÃO DA MAVEN:
O armazém de Maven tem apenas duas categorias: 1. Armazém local 2. armazém remoto, que é dividido em três tipos em armazéns remotos: 2.1 armazém central 2.2 Servidor privado 2.3 Outros armazéns públicos
1. O armazém local, como o nome indica, é onde o Maven armazena componentes localmente.
Nota: O repositório local do MAVEN não será criado após a instalação do MAVEN. É criado apenas quando o comando maven é executado pela primeira vez.
O local padrão do Maven Local Repository: Seja Windows ou Linux, existe um diretório .m2/ repositório/ repositório no diretório do usuário. Este é o local padrão do repositório Maven.
Como alterar a localização do repositório local padrão do MAVEN: aqui queremos introduzir um novo elemento: LocalRepository, que existe no arquivo do maven.xml
1.1 Altere o repositório local que configura todo o usuário: primeiro crie configuração.xml arquivo no diretório /.m2/ e depois defina o valor do elemento localRepositório para o endereço do repositório desejado em ~/.m2/setings.xml.
<frifings> <localRepository> d:/maven_new_repository </localrepository> </fastings>
Neste momento, o endereço do repositório local do Maven se torna d:/maven_new_repository. Nota: O repositório local do MAVEN configurado neste momento pertence ao escopo do usuário.
1.2 Altere a configuração em todo o repositório local em todo
NOTA: Após essa alteração, todos os usuários serão afetados e, se o Maven for atualizado, todas as configurações serão limpas, para que você deva copiar e fazer backup do arquivo M2_HOME/confings.xml.
Portanto: em circunstâncias normais, a configuração do Global Settings.xml não é recomendada.
2. Repositório remoto
2.1 Quando se trata de armazéns remotos, comece com o armazém central mais central. O armazém central é o armazém remoto padrão. Quando o Maven é instalado, ele vem com a configuração do armazém central.
Na agregação e herança do Maven, dissemos que todos os projetos da Maven herdarão Super Pom. Especificamente, se o pom que contém as seguintes configurações, chamamos de super pom
<repositories> <repository> <id>central</id> <name>Central Repository</name> <url>http://repo.maven.apache.org/maven2</url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repository>
O armazém central contém os componentes Java de código aberto mais populares, bem como código fonte, informações do autor, SCM, informações, informações de licença, etc. De um modo geral, as dependências simples do projeto Java podem ser baixadas aqui
2.2 servidor privado
O servidor privado é um armazém remoto especial. É um serviço de armazém criado na LAN. Os servidores privados representam armazéns remotos na WAN para usuários do Maven na LAN. Quando o Maven precisa baixar componentes, ele solicita o servidor privado. Se o componente não existir no servidor privado, ele será baixado de um repositório remoto externo, cache -o no servidor privado e fornecerá serviços para a solicitação de download do MAVEN. Também podemos fazer upload de alguns componentes que não podem ser baixados de armazéns externos para servidores privados.
Recursos do servidor privado do MAVEN:
1. Salve sua própria largura de banda de rede externa: reduza o consumo externo de largura de banda de rede causado por solicitações repetidas
2. Acelere o componente maven: se o projeto estiver configurado com muitos armazéns remotos externos, a velocidade de construção será bastante reduzida.
3. Implante componentes de terceiros: quando alguns componentes não podem ser obtidos de armazéns externos, podemos implantar esses componentes em armazéns internos (servidores privados) para uso por projetos internos de Maven.
4. Melhore a estabilidade e aprimore o controle: quando a Internet estiver instável, a construção do Maven também se tornará instável. Alguns softwares de servidor privado também fornecem outras funções.
5. Reduza a carga do armazém central: o número de solicitações de armazéns da Maven Central é enorme, e a configuração de servidores privados também pode reduzir bastante a pressão do armazém central.
O atual servidor privado Mainstream Maven:
1. Arquiva de Apache
2.JFROG O ARTIFATORTION
3. Nexus do Sonatype
3. Configuração do armazém remoto
Configurando o repositório remoto introduzirá novos elementos de configuração: <Repositórios> <Repositório>
Sob o elemento <Repositórios>, você pode usar o elemento filho do <Repositório> para declarar um ou mais repositórios remotos.
exemplo:
<Repositório> <ID> jboss </d> <name> jboss repository </name> <url> http://repository.jboss.com/maven2/ </erl> <lessment> <abilabedpolicy> diariamente </updatepolicy> <!-nunca, sempre, intervalado> <abilabed> True <bilabed> True " <CHECKSUPPOLICY> WARN </CHECKSUMPOLICY> <!-FAIL, IGNORE-> </LUSENTES> <Snapshots> <bilted> false </abilabed> </snapshots> <lyout> padrão </sysyout> </positório> </pospositório> <lyout>
<UpdatePolicy> elemento: representa a frequência de atualização, os valores são: nunca, sempre, intervalo, diariamente, diariamente são os valores padrão
<Cenchsumpolicy> Elemento: representa a política do MAVEN para verificar e verificar os arquivos. Warn é o valor padrão por razões de segurança. Às vezes, precisamos autenticar o acesso do armazém remoto. Geralmente, as informações de autenticação estão configuradas em settings.xml:
<Verters> <vider> <id> O mesmo com o repositório ID em POM </dod> <username> nome de usuário </sername> <dasting> pwd </senha> </serer> </servidor>
Nota: O ID aqui deve ser consistente com o ID do elemento repositório que precisa ser autenticado no POM.
Como implantar projetos gerados em repositórios remotos
Para concluir este trabalho, você também precisa configurá -lo no POM. Aqui está um novo elemento: <DistributionManagement>
O DistributionManagement contém 2 elementos infantis: repositório e snapshotrepository. O primeiro representa o repositório para publicar o componente da versão, e o último representa o repositório da versão instantânea.
Ambos os elementos precisam configurar o ID (o identificador exclusivo do repositório remoto), nome, URL (representando o endereço do repositório)
A implantação de componentes em armazéns remotos requer autenticação. A configuração é a mesma que acima
Executar após a configuração estar correto: MVN limpa implantação
Veja os instantâneos corretamente
Antes, ao configurar o POM, fomos muito cautelosos com a configuração dos instantâneos, ou raramente usamos a versão instantânea. O motivo é que ainda é muito instável e é muito fácil causar erros desconhecidos ao nosso sistema, dificultando a localização. De fato, a versão instantânea não é inútil. O maior objetivo do instantâneo é ser usado no processo de desenvolvimento, especialmente quando existem dependências do módulo. Por exemplo, A e B são desenvolvidos simultaneamente. Apende de B. Durante o processo de desenvolvimento, A e B são constantemente integrados de desenvolvimento, modificando constantemente os arquivos POM e construindo projetos. Neste momento, a sincronização da versão se torna um grande problema. Isso pode ser alcançado usando instantâneos.
De fato, durante o lançamento da versão instantânea, o Maven marcará automaticamente o componente com o registro de data e hora atual. Com esse registro de data e hora, podemos encontrar a versão mais recente do instantâneo a qualquer momento, que resolverá o problema do desenvolvimento colaborativo que acabamos de mencionar.
Quanto à maneira como verifica a atualização de B, acabei de dizer ao falar sobre configuração que há um elemento na configuração do instantâneo que pode controlar a frequência das atualizações verificadas -------- UpdatePolicy
Também podemos usar a linha de comando para adicionar parâmetros para forçar o Maven a verificar se há atualizações: mvn clean install-U
Como exatamente o Maven analisa os componentes do armazém? ---- Mecanismo de Maven para analisar dependências do repositório
1. Quando o escopo da dependência é o sistema, o Maven resolve diretamente o componente do sistema de arquivos local.
2. Depois de calcular o caminho do armazém com base nas coordenadas de dependência, tente encontrar componentes diretamente do armazém local. Se o componente correspondente for encontrado, a resolução será bem -sucedida.
3. No caso em que não existe um componente correspondente no repositório local, se a versão dependente for o componente da versão de lançamento exibido, itera através de todos os repositórios remotos e o download após a descoberta.
4. Se a versão dependente for lançada ou mais recente, os metadados de todos os repositórios remotos são lidos com base na política de atualização, mescla os metadados correspondentes do repositório local, calcule o valor verdadeiro da versão ou mais recente e verifique o repositório local com base nesse valor verdadeiro.
5. Se a versão dependente for instantânea, os metadados de todos os repositórios remotos serão lidos com base na política de atualização, mescla -a com os metadados correspondentes do repositório local e obtenha o valor da versão mais recente do instantâneo e verifique o repositório local com base no valor ou baixe -o do repositório remoto.
6. Se a última versão de artefato analisada for um instantâneo de formato de data e hora, copie o arquivo em seu formato de registro de data e hora em um formato não timetamp e use o artefato neste formato não timetamp.
NOTA: Certifique -se de lembrar <leply> <bedable> & <Snapshot> <bedable>, o mesmo é verdadeiro para instantâneos
O último e o lançamento não é recomendado ao declarar POM. O mais recente e lançamento na configuração do plug-in não é mais suportado no MAVEN3. Se a versão plug-in não estiver definida, a versão final será a mesma que a versão.
O MAVEN analisará apenas o lançamento mais recente.
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.