Devemos usar o Nexus ou o Artifactory para um repositório Maven?

119

Estamos usando o Maven para um grande processo de compilação (> 100 módulos). Temos armazenado nossas dependências externas no controle de origem e usadas para atualizar um repositório local.

No entanto, estamos prontos para migrar para um repositório local que pode armazenar em cache central, para que não tenhamos que fazer o download proativo de todos os terceiros (mas ainda podemos ter um repositório local). Além disso, queremos publicar nossos artefatos de construção internos a partir de uma construção noturna, para que os desenvolvedores não precisem construir o mundo.

Estamos considerando o Nexus e o Artifactory. Quais são as razões para preferir um ao outro? Existem outros que devemos considerar?

John Stauffer
fonte
2
Seu link não é muito objetivo, eis a resposta do outro lado blogs.jfrog.org/2009/01/contrasting-artifactory-and-nexus.html
user58773
Eu acho que você deve considerar um servidor http simples como Apache ou nginx. Eles são "Tecnologia chata" ( mcfunley.com/choose-boring-technology ).
Johan Walles
5
@JohanWalles: mais parecido com "Tecnologia Inconveniente e Redutora de Produtividade" neste contexto.
Priidu Neemre

Respostas:

74

Não sei sobre o Artifactory, mas aqui estão meus motivos para usar o Nexus:

  • Instalação simples inoperante (e desde a versão 1.2, atualização simples inutilizada também)
  • UI da Web muito boa
  • Fácil de manter, quase sem sobrecarga administrativa
  • Fornece feeds RSS de artefatos e erros quebrados recentemente instalados
  • Ele pode agrupar vários repositórios para que você possa espelhar várias fontes, mas precisa apenas de uma ou duas entradas em suas configurações.xml
  • A implantação do Maven funciona imediatamente (não há necessidade de hacks WebDAV, etc.).
  • é grátis
  • Você pode redirecionar os caminhos de acesso (ou seja, alguns pom.xml quebrados requerem "abc" de "xxx"). Em vez de corrigir o POM, você pode corrigir o bug no Nexus e redirecionar a solicitação para o local onde realmente está o artefato.
Aaron Digulla
fonte
3
O Nexus possui uma excelente interface de usuário da web para criar trabalhos agendados regularmente que podem eliminar os INSTANTÂNEOS. Artifactory ainda não tem isso.
HDave
118

Tenho certeza de que se você falar apenas sobre o armazenamento de binários de " mvn deploy" ambos, tudo bem.

Usamos o Artifactory extensivamente com todas as atualizações ao longo do caminho. Muitos projetos, vários instantâneos implantados e repositórios externos com proxy. Nem um único problema. Acho difícil explicar como outras pessoas enfrentam problemas com seu banco de dados, indexação ou qualquer outra coisa. Nada disso aconteceu conosco. Além disso, o Artifactory permite armazenar dados em um disco e usar apenas um banco de dados para armazenar metadados, é bastante flexível ( veja mais aqui ).

O que torna esses aplicativos muito diferentes é sua abordagem para a integração com outras ferramentas e tecnologias de construção. O Nexus e o Sonatype estão praticamente bloqueados no Maven e no m2eclipse. Eles ignoram qualquer outra coisa e só recentemente começaram a trabalhar em sua própria integração proprietária do Hudson (consulte o webinar do Maven 3 ). EDIT: isso não é mais verdade a partir de 2017 O Nexus oferece um suporte muito maior a outras ferramentas de compilação Fim da edição

O Artifactory fornece uma incrível integração com Hudson, TeamCity e Bamboo e suporte para Gradle / Ivy . Portanto, enquanto o Nexus não oferece nada quando você sai da "zona de conforto" do Sonatype (Maven, m2eclipse), o Artifactory abraça e colabora com todas as principais ferramentas de criação.

De fato, ser capaz de implantar artefatos de construção do Hudson, quando a tarefa terminar, e não " mvn deploy" é uma enorme diferença: o plug-in Artifactory Hudson faz uma implantação atômica de todos os artefatos de umavez , apenas quando uma tarefa de construção é concluída com êxito. " mvn deploy" é executado após cada módulo e pode implantar um conjunto parcial de artefatos se um trabalho de construção falhar no meio. A implantação do Maven na conclusão do módulo e não de um servidor de construção na conclusão da tarefa é realmente uma coisa ruim a se fazer.

Como você vê, o Artifactory pensa "fora da caixa", enquanto o Nexus pensa "dentro da caixa" e se importa apenas com os artefatos Maven e Maven.

Outra coisa que torna o Artifactory mais acessível é a solução Artifactory Online baseada em nuvem . Por cerca de US $ 80 por mês, você tem sua própria instância Artifactory, sem necessidade de dedicar nenhum servidor a ela.

O Artifactory possui uma API REST simples e direta , não sabe como funciona para o Nexus. O Edit Nexus também possui uma API REST que você também pode usar com facilidade.

Resumindo, para o armazenamento básico de artefatos do Maven, acho que ambos estão bem. Porém, embora o Nexus deixe de existir estritamente um "gerenciador de repositório Maven", o Artifactory continua, sendo um "armazenamento de binários" geral para binários de qualquer tipo, de qualquer ferramenta de criação e servidor de IC.

Evgeny Goldin
fonte
9
Sinto muito, mas sinto cheiro de FUD aqui. O Nexus certamente não está "travado no Maven e no m2eclipse", ele se integra perfeitamente ao Jenkins, TeamCity e Bamboo. Possui uma API REST simples e direta; todo recurso do Nexus é exposto como um ponto de extremidade REST. Não é verdade dizer que o Nexus "se importa apenas com os artefatos Maven e Maven"; ele também suporta .Net (NuGet), Gradle / Ivy, OSGI e pode hospedar repositórios Yum RPM. Em termos de armazenamento de artefato, tar, zip, rar e par estão incluídos junto com os tipos de arquivo java padrão.
RCross
25
Cara, essa resposta foi publicada há 4 anos :) Não é mais sobre o Maven? Bom para isso então!
Evgeny Goldin
3
@EvgenyGoldin Não torna seu comentário menos relevante (exceto a parte do FUD ^^).
OddDev 24/08
4
Agora que esta postagem tem sete anos e as APIs REST são mais ou menos obrigatórias com as ferramentas, o Nexus ainda parece ruim nisso. Usando o Nexus3, a API restante é basicamente rpc; você precisa enviar um pequeno script para executar o que deseja fazer. O artefato, por outro lado, parece expor uma API bem pensada que possui boa documentação.
Thecoshman
27

Suportes Artifactory ambos os arquivos do sistema e infra-estruturas de armazenamento de dados. O armazenamento é baseado em soma de verificação e binários idênticos são armazenados apenas uma vez, não importa quantas vezes eles apareçam no repositório, o que torna o Artifactory mais eficiente em termos de armazenamento. Mover e copiar também são muito baratos devido a essa arquitetura (no Nexus, não há REST para mover / copiar - você precisa mover coisas no sistema de arquivos e executar ações corretivas no repositório para informar que o conteúdo foi alterado).

Outro diferencial importante é que o Artifactory possui integração exclusiva com o Hudson e o TeamCity para capturar informações sobre artefatos implementados, dependências resolvidas e dados do ambiente associados às execuções de compilação, o que fornece rastreabilidade total da compilação.

Yoav Landman
fonte
1
Artifactory também suporta persistência S3.
Tim Ferrell
@ TimFerrell, não é falso, mas a um preço proibitivamente caro para a maioria das lojas em que geralmente trabalho.
Sander Verhagen
21

O artefato armazena os artefatos em um banco de dados, o que significa que, se algo der errado, todos os seus artefatos desaparecerão. O Nexus usa um arquivo simples para seus preciosos artefatos, para que você não precise se preocupar com a perda de todos eles.

Brian Fox
fonte
3
Foi isso que também fez a diferença para nós. Imagino que seja apenas paranóia, mas é reconfortante saber que será fácil inspecionar o sistema a qualquer momento.
11559 Jeremy Huiskamp
4
Planejamos mudar do Artifactory para o Nexus por causa disso.
Kariem
2
+1 de outra vítima de corrupção; Eu usei o Archiva e o Nexus desde então e ambos parecem bastante sólidos.
perfil completo de SimonJ
73
Esta resposta está desatualizada. O artefato agora pode ser configurado para armazenar objetos no sistema de arquivos.
M. Dudley
37
Desde que eu usei o Artifactory, ele teve suporte do sistema de arquivos para os artefatos reais. Mas eu uso um banco de dados de qualquer maneira porque nosso servidor principal é replicado e copiado. Não vejo como o armazenamento do sistema de arquivos é inerentemente mais seguro que um banco de dados. Nada contra o Nexus, apenas tentando esclarecer isso.
9602 Joshua Davis
9

Se você precisar dos recursos "Pro" de qualquer um (por exemplo, repositórios de teste, promoção de artefatos, NuGet), precisará considerar os diferentes modelos de preços, exibidos em seus sites.

Em suma:

  • Artifactory Pro
    • você paga por servidor
    • você pode pagar mais pelo aumento do horário de atendimento
  • Nexus Pro
    • você paga por assento , ou seja, quantos desenvolvedores fazem o download de artefatos
    • serviço de suporte é apenas seg-sex 0800-2000 ET, não importa o que você paga

Não importa quantos usuários você tenha, o Nexus Pro oferece um serviço de suporte que é amplamente equivalente ao "Silver Value Pack" de US $ 7.450 / ano da Artifactory.

7.450 dólares / ano comprarão aproximadamente 67 assentos Nexus Pro (1-50 a 108 dólares, o restante a 120 dólares).

Somente com preço e suporte, o Nexus Pro faz sentido até chegar a 67 usuários, quando o Artifactory se torna a opção mais barata.

Se você está fazendo todo o suporte internamente; no entanto, esse ponto mágico é de cerca de 23 usuários (a oferta de suporte mais básica da Artifactory é de US $ 2.750 / ano).

RCross
fonte
8

Eu fiz algumas pesquisas recentemente sobre o Artifactory 2 e o Nexus 1.3. Vou listar aqui as principais diferenças que encontrei:

  • O Artifactory armazena metadados e, opcionalmente, arquivos no DB, o Nexus grava diretamente no sistema de arquivos. Existem profissionais. e contras. para cada abordagem. O DB suporta transações, enquanto no FS os arquivos armazenados podem ser acessados ​​diretamente.
  • O Artifactory possui requisitos de sistema mais altos, especialmente para espaço em disco.
  • O Artifactory possui suporte a LDAP, enquanto o Nexus possui apenas na versão paga. Por outro lado, o plugin LDAP gratuito para o Nexus está disponível no código do Google.

A comparação mais completa: http://binary-repositories-comparison.github.io/

Sergey
fonte
Atualmente, o Artifactory é agora GPL.
Brian Fox
5
O Nexus OSS agora oferece suporte ao Ldap para várias versões.
Brian Fox
1
Apoio Artifactory para LDAP grupos ainda é uma característica pro: jfrog.com/confluence/display/RTF/LDAP+Groups
Steven Magana-Zook
1
Atualização julho 2015: Codehaus está morto agora, para a matriz migraram para binary-repositories-comparison.github.io
JBaruch
7

Você deve usar o Artifactory Sua versão mais recente foi um verdadeiro salto. Você pode fazer backup incremental de seus repositórios, o que significa que você pode ter todos os seus artefatos salvos e mantidos. Ele tem uma interface da Web fácil de usar e é muito fácil de configurar. fora sua nova versão 2.0


fonte
5

Do ponto de vista dos alunos, observo algumas diferenças específicas entre os dois.

  1. A implantação Sonatype .war não é suportada no servidor de aplicativos Jboss no momento, embora seja executada no Tomcat.
  2. No momento, o Sonatype não me oferece uma Amazon Machine Image (AMI), que eu poderia rapidamente levantar e testar.
  3. Uma AMI artefativa é fornecida pelo Bitnami e leva apenas alguns minutos para se levantar e mais alguns minutos para configurar, talvez várias dezenas de minutos, dependendo do que você está tentando alcançar.
  4. O Artifactory oferece uma versão SaaS do Artifactory na nuvem para que você possa se concentrar em fazer as coisas em vez da infraestrutura.
  5. Não tenho experiência com o Nexus, mas achei o Artifactory muito intuitivo e fácil de configurar, pelo menos inicialmente.
  6. Adicionado - observo que o Guia do Usuário Artifactory, que pode ser bom para um profissional experiente, é um pouco mais leve para algumas explicações detalhadas. Por exemplo, iniciando, descompacta e adiciona um repositório, como o Jboss EAP Enterprise Repo da RedHat. Tudo corre bem, mas quando tentei visualizar os artefatos importados, o Artifactory informa que não há artefatos? Sem erros ou avisos, agora estou procurando uma explicação. Isso é normal ou não é normal? Uma explicação simples no documento pode apontar rapidamente uma na direção certa. Sendo um bom colaborador, estou adicionando esses comentários ao projeto para o benefício de outros iniciantes.
user3175893
fonte
3

À parte política / religião, o licenciamento faz a diferença para algumas organizações.

O Nexus agora é GPL AGPLv3 e agora Eclipse Public License (EPL) .

Artifactory é LGPLv3 licenciado pela Apache a partir da versão 2.1 do produto.

Você também pode considerar o Archiva , apenas para fins de comparação. É o Apache 2.0 licenciado.

Zac Thompson
fonte
5
Ora, isso é um troll. O fato de o Linux ser GPL dissuade as organizações de usá-lo? Há uma diferença entre incorporar uma ferramenta em um programa e usá- la.
Tim O'Brien
1
Não pretendia trollar, mas agradeço o seu ponto de vista. Eu removi os superlativos do texto.
Zac Thompson
4
@tobrien: FWIW, algumas organizações (incluindo a minha) são extremamente cautelosas quando usam software da GPL, por medo de exposição legal. Não quero discutir a (falta de) sabedoria de tal política - suspeito que concordaríamos completamente. Apenas salientando que, para alguns, é importante.
Zac Thompson
1
A partir da versão 2.1, o Artifactory é LGPL de qualquer maneira.
Brian Fox
1
@Zac @ user145026 Você está vinculando seu código às bibliotecas Nexus ?? Caso contrário, não vejo por que a licença GPL é um problema.
Pascal Thivent
2

Vejo que o uso do Nexus está aumentando, enquanto o uso artístico é geralmente estável.

insira a descrição da imagem aqui

A foto é tirada daqui http://blog.sonatype.com/2014/11/42000-nexus-repository-managers-and-growing/

Também há comparação de matrizes http://docs.codehaus.org/display/MAVENUSER/Maven+Repository+Manager+Feature+Matrix

rofrol
fonte
3
1. Essa imagem não é precisa, pois depende apenas de chamadas do Maven Central. Existem downloads além do Maven Central. 2. Codehaus está morto agora, matriz migraram para binary-repositories-comparison.github.io
JBaruch
Agradável. Você tem alguma imagem melhor?
Rofrol 12/08/2015
Você pode encontrar alguns números aqui .
JBaruch
1
Tendencioso em relação ao Nexus, tendencioso em relação ao jfrog - eu não confiaria em nenhum conjunto de números.
Kyle Wiering
-2

O Artifactory e o Nexus têm um conjunto de recursos mais ou menos semelhantes, mas o suporte ao LDAP do Artifactory o torna mais atraente em relação ao Nexus. Embora o Nexus também tenha suporte LDAP, mas na versão paga :-(

Vinod Singh
fonte
1
Existe um plugin LDAP de código aberto para o Nexus no código do Google.
Brian Fox
3
Suporte LDAP está agora na versão gratuita do Nexus, uma vez 1.5.0
David Roussel
-2

Hmmm ... minha experiência com artefatos é horrível ... mas sou um novato em relação a isso, então leve-o com um pouco de sal. Minha queixa geral é que os arquivos jar carregados recentemente no Artifactory não parecem ser indexados imediatamente - como por horas - e não parece haver uma boa maneira de forçá-lo. Eu tentei várias coisas que pareciam ter funcionado, mas não funcionaram. Eu tenho trabalhado com m2eclipse, adicionando dependências a um projeto que estou convertendo do ant. Quando tento adicionar um jarro que acabei de adicionar ao artefato, espero que ele apareça como uma opção no seletor, mas não aparece.

um colega de trabalho me disse que eles instalaram o nexus e até agora eles gostam ... mas ainda não posso atestar. Estou prestes a instalar isso em uma caixa Linux assim que a TI puder me encontrar.

user494078
fonte
3
Você está se referindo aos índices do Nexus que são baixados e consumidos pelos IDEs, no seu caso - pelo plug-in m2eclipse. Esses índices são baixados periodicamente para os clientes e não devem ser consumidos em todas as implantações. O Artifactory permite agendar essas atualizações de índice ou forçá-las. Para sua informação, os índices usados ​​pelas pesquisas Artifactory (UI / REST) ​​são diferentes e são atualizados imediata e atomicamente como parte da implementação de novos artefatos. Ferramentas como o IntelliJ fazem uso disso executando pesquisas no repositório em vez de um índice armazenado em cache localmente, usando a API REST do Artifactory.
usar o seguinte código