maven-2 - name - what is pom




Como posso baixar um artefato específico do Maven em uma linha de comando? (6)

Eu posso instalar um artefato pela install:install-file , mas como posso baixar um artefato?

Por exemplo:

mvn download:download-file -DgroupId=.. -DartifactId=.. -Dversion=LATEST

Aqui está o que funcionou para mim para baixar a versão mais recente de um artefato chamado "component.jar" com Maven 3.1.1 no final (outras sugestões não, principalmente devido a mudanças de versão maven eu acredito)

Isso realmente faz o download do arquivo e o copia no diretório de trabalho local

Do bash:

mvn dependency:get \
    -DrepoUrl=http://.../ \
        -Dartifact=com.foo.something:component:LATEST:jar \
        -Dtransitive=false \
        -Ddest=component.jar \

Aqui está um exemplo para obter o ASM-7 usando o Maven 3.6:

mvn dependency:get -DremoteRepositories=maven.apache.org -Dartifact=org.ow2.asm:7.0:sources:jar

Ou você pode baixar o frasco aqui: https://search.maven.org/search?q=g:org.ow2.asm%20AND%20a:asm e depois

mvn install:install-file -DgroupId=org.ow2.asm -DartifactId=asm -Dversion=7.0 -Dclassifier=sources -Dpackaging=jar -Dfile=/path/to/asm-7.0.jar

Em relação a como obter o binário de artefato, a resposta de Pascal Thivent é, mas para obter também as fontes de artefato jar, podemos usar:

mvn dependency:get -Dartifact=groupId:artifactId:version:jar:sources

por exemplo

mvn dependency:get -Dartifact=junit:junit:4.12:jar:sources

Isso funciona porque o parâmetro de artifact na verdade consiste em groupId:artifactId:version[:packaging][:classifier] . Apenas a embalagem e o classificador são opcionais.

Com jar como embalagem e sources como classificador , o plugin de dependência maven entende que estamos pedindo o jar de origem, não o jar de artefato.

Infelizmente, por ora, os arquivos jar fontes não podem ser baixados de forma transitiva, o que faz sentido, mas o ideal é que eu acredite que também possa respeitar a opção downloadSources como o plugin maven eclipse.


O comando:

mvn install:install-file 

Geralmente installs o artefato em seu repositório local, portanto, você não precisa fazer o download dele. No entanto, se você quiser compartilhar seu artefato com outras pessoas, será necessário implantar o artefato em um repositório central. Para obter mais detalhes, consulte o plug - in de implementação .

Além disso, adicionar uma dependency ao seu POM buscará automaticamente todos os artefatos de terceiros necessários ao criar seu projeto. Ou seja, isso irá baixar o artefato do repositório central.


Você poderia usar o plugin maven dependency que tem uma boa dependency:get meta desde a versão 2.1. Não há necessidade de um pom, tudo acontece na linha de comando.

Para certificar-se de encontrar a dependency:get goal, você precisa explicitamente dizer ao maven para usar a versão 2.1, ou seja, você precisa usar o nome completo do plugin, incluindo a versão:

mvn org.apache.maven.plugins:maven-dependency-plugin:2.1:get \
    -DrepoUrl=url \
    -Dartifact=groupId:artifactId:version

ATUALIZAÇÃO: Com versões mais antigas do Maven (anteriores a 2.1), é possível executar dependency:get normalmente (sem usar o nome e versão totalmente qualificados) forçando sua cópia do maven a usar uma determinada versão de um plugin.

Isso pode ser feito da seguinte forma:

1. Adicione a seguinte linha dentro do elemento <settings> do seu arquivo ~/.m2/settings.xml :

<usePluginRegistry>true</usePluginRegistry>

2. Adicione o arquivo ~/.m2/plugin-registry.xml com o seguinte conteúdo:

<?xml version="1.0" encoding="UTF-8"?>
<pluginRegistry xsi:schemaLocation="http://maven.apache.org/PLUGIN_REGISTRY/1.0.0 http://maven.apache.org/xsd/plugin-registry-1.0.0.xsd"
xmlns="http://maven.apache.org/PLUGIN_REGISTRY/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-dependency-plugin</artifactId>
      <useVersion>2.1</useVersion>
      <rejectedVersions/>
    </plugin>
  </plugins>
</pluginRegistry>

Mas isso parece não funcionar mais com o maven 2.1 / 2.2. Na verdade, de acordo com a Introdução ao Registro de Plugin , os recursos do plugin-registry.xml foram reprojetados (para portabilidade) e o registro do plugin está atualmente em um estado semi-inativo dentro do Maven 2 . Então eu acho que nós temos que usar o nome longo por enquanto (ao usar o plugin sem um pom, que é a idéia por trás da dependency:get ).


um forro para baixar o mais recente artefato maven sem mvn:

curl -O -J -L  "https://repository.sonatype.org/service/local/artifact/maven/content?r=central-proxy&g=io.staticcdn.sdk&a=staticcdn-sdk-standalone-optimizer&e=zip&v=LATEST"




maven-2