Pergunta

Recentemente, baixei alguns artefatos do Maven diretamente para o meu repositório local (.m2/repositório). Agora instalei o Nexus Repository Manager e preciso preencher seu armazenamento sem baixar todos os artefatos novamente. Existe uma maneira de atualizar o repositório Nexus com o local. Não quero simplesmente copiá -los porque os artefatos separados do Nexus relativos a seus servidores públicos (Central, Codehaus etc.) e a estrutura do repositório local não.

ATUALIZAÇÃO: Enquanto isso, copiei os artefatos do repositório local para o armazenamento do Nexus (repositório público). Eu posso navegar para os artefatos através do Nexus WebApp, mas o Maven de alguma forma não pode resolver os artefatos do Nexus. Eu preciso registrá -los particularmente? Recorrei o repositório público e reiniciei o Nexus várias vezes - sem alterações.

Foi útil?

Solução

Nexus tem vários tipos de repositórios: repositórios hospedados (aqueles que realmente armazenam artefatos maven), Repositórios de proxy (que redireciona o tráfego para outros repositórios remotos quando um artefato é solicitado), Repositórios virtuais (um mero adaptador dos repositórios do MAVEN1 [fora do escopo desta pergunta]). você também pode criar Grupos de repositório que podem servir artefatos de qualquer um de seus agregados (o public repositório é um desses).

Além disso, o Nexus divide seus repositórios de acordo com sua política de publicação em Instantâneos e lançamentos. As antigas lojas apenas são artefatos instantâneos; Enquanto o último, em teoria, pode armazenar instantâneos e lançamentos, mas realmente se comporta de buggy quando o repositório é muito grande e contém instantâneos.

Para hospedar seus artefatos, você precisa:

Primeiro: Divida o repositório local em dois: um contendo os instantâneos e outro contendo os lançamentos. A ferramenta de conversão do repositório Nexus o ajudará se o seu repositório for muito grande:

    <dependency>
        <groupId>org.sonatype.nexus.tools</groupId>
        <artifactId>nexus-repository-conversion-tool</artifactId> 
        <version>1.8.0.1</version>
        <classifier>cli</classifier> 
    </dependency>

Uma vez doente, você pode simplesmente executar java -jar nexus-repository-conversion-tool-1.8.0.1-cli.jar -rSource -oTarget Onde Source é o diretório que contém o repositório local para se mudar para o Nexus e Target é um diretório existente, vazio e gravável, onde a ferramenta de conversão deixará os repositórios divididos. Desde que o diretório de origem seja repository e alvo é temp, vai criar temp/repository-snapshots e temp/repository-releases diretórios.

Segundo: Mova seus repositórios divididos para o Nexus. E deixe -os em ${NEXUS_HOME}/sonatype-work/nexus/storage, ou onde quer que a instalação do Nexus seja configurada para armazenar os repositórios.

Terceiro: criar dois repositórios hospedados Com o mesmo ID que os repositórios, você mudou na segunda etapa. (no exemplo repository-snapshots e repository-releases)

Se o seu repositório contivesse apenas lançamentos, sua solução poderia ter funcionado, mas você terá cometido outro erro. Embora o Nexus armazena artefatos para cada repositório, o armazenamento daqueles que não são repositórios hospedados é apenas para fins de cache (como no caso do public repositório), você teria que copiar seu conteúdo para um hospedado para trabalhar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top