Pergunta

Existe um cliente maven que não é mvn (o binário incluído na distribuição maven) eu poderia usar para puxar para baixo um artefato de um repositório maven sem usar um pom? Eu gostaria de usar um repositório Maven como o repo para a nossa equipe ops para pegar constrói (incluindo instantâneos de compilações), mas eu não quero que eles tem que mexer com a escrita poms e declarando dependências neles. Idealmente, eu estou procurando apenas um cliente cli que eu poderia apenas passar um url repo e coordenadas e baixar um determinado artefato. Será que tal coisa existe ou estou melhor fora escrevendo um one-off de script para isso?

Foi útil?

Solução

Use Nexus. Ele fornece uma interface web que outras equipes podem usar para baixar artefatos. http://nexus.sonatype.org/

Outras dicas

Eu vejo 3 fácil opções:

  1. Basta enviar-lhes um link que aponta em seu artefato em seu repositório e tê-los usar seu browser.
  2. instalar e usar wget (wget http://path/to/artifact.extension).
  3. Instalar e usar mvn dependency:get (requer mvn mas não requer um pom.xml, consulte esta resposta para mais detalhes).

Use a maven embedder . Mais precisamente, utilizar a funcionalidade no interior do dispositivo de incorporação perito para a resolução e baixar frascos. Embora se você está tentando escrever apenas uma CLI simples, a estrutura do repositório não é complexa e você poderia facilmente escrever um script que leva um maven repo url, ID artefato, ID de grupo e versão para gerar o URL completo para o jar.

Isto é como nós o fazemos em jcabi-éter :

final File repo = this.session.getLocalRepository().getBasedir();
final Collection<Artifact> deps = new Aether(this.getProject(), repo).resolve(
  new DefaultArtifact("junit", "junit-dep", "", "jar", "4.10"),
  JavaScopes.RUNTIME
);

Tudo que você precisa para fornecer a esta lib é 1) uma lista de repositórios remotos, 2) localização de um repo local, e 3) as coordenadas do Maven do artefato. Os usos de biblioteca Apache Aether de Sonatype.

Bem, tecnicamente, o repositório é acessado através de HTTP, então dada a localização do repositório, artefato e coordenadas, ele deve apenas ser possível dar aos seus ops juntar uma URL para o artefato que eles podem bater em qualquer navegador.

Pense sobre Pax URL que permite usar URLs simples para artefatos Maven referência assim:

mvn:groupId/artifactId/version

PAX URL do site para mais informações (MVN Protocol Handler).

Toni

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