Como instalar manualmente um artefato no Maven 2?


96

Encontrei alguns erros quando tentei instalar um artefato manualmente com o Maven 2. Eu queria instalar um jar de um diretório local com o comando

mvn install:install-file -Dfile=jta-1.0.1B.jar

Mas Maven deu um erro de compilação que se parece com:

Invalid task '.01B.jar': you must
specify a valid lifecycle phase, or a
goal in the format plugin:goal or
pluginGroupId:pluginArtifactId:pluginVersion:goal

Existe um erro com o meu comando?


Qual é o status disso? Sua pergunta está resolvida?
Matt

Respostas:


147

Você precisa indicar o groupId, o artifactId e a versão do seu artefato:

mvn install:install-file \
  -DgroupId=javax.transaction \
  -DartifactId=jta \
  -Dpackaging=jar \
  -Dversion=1.0.1B \
  -Dfile=jta-1.0.1B.jar \
  -DgeneratePom=true

8
-Dpackaging = jar ou similar está faltando
kaboom

@kaboom Não! Por padrão, a embalagem é jar, então você não precisa especificar isso no comando ...
Romain Linsolas

5
@romaintaz kaboom está correto; você precisa de -Dpackaging = jar (ou qualquer que seja o tipo), caso contrário, você receberá um erro sobre "'embalagem' ausente."
Jack Edmonds

3
Parece que o parâmetro de empacotamento é necessário, exceto se você fornecer um arquivo pom. Neste último caso, o tipo de embalagem é retirado do pom.
Romain Linsolas

1
Se estiver usando o PowerShell, certifique-se de usar citação da mesma forma"-DgroupId=javax.transaction"
ankitjaininfo

38

De acordo com o Guia do maven para instalação de JARs de terceiros , o comando é:

mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> \
-DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>

Você realmente precisa da opção de embalagem. Isso responde à pergunta original.

Agora, no seu contexto, você está lutando com um jarro fornecido pela Sun. Você também deve ler a página Coping with Sun JARs . Lá, você aprenderá como ajudar o maven a fornecer melhores informações sobre a localização dos jars Sun e como adicionar o repositório Java.net Maven 2 que contém jta-1.0.1B.jar . Adicione isto em seu settings.xml(não portátil) ou pom.xml (portátil):

  <repositories>
    <repository>
      <id>maven2-repository.dev.java.net</id>
      <name>Java.net Repository for Maven</name>
      <url>http://download.java.net/maven/2/</url>
      <layout>default</layout>
    </repository>
  </repositories>

13

Tive que adicionar uma embalagem, então:

mvn install:install-file \
  -DgroupId=javax.transaction \
  -DartifactId=jta \
  -Dversion=1.0.1B \
  -Dfile=jta-1.0.1B.jar \
  -DgeneratePom=true \
  -Dpackaging=jar

Tive muitos problemas ao instalar um arquivo jar manualmente, e ele continuou falhando até que eu digitei exatamente dessa maneira. Agora funciona!
gregturn


4

Se você receber erros semelhantes ao usar o Windows PowerShell, experimente a linha de comando simples do Windows. Não descobri o que causou isso, mas o PowerShell parece interpretar alguns dos parâmetros do Maven.


Veja a resposta de S. Bollweber acima. E pelo menos TakeCommand expressa o mesmo comportamento.
Martin

1
Não há razão para negar minha resposta - S. Bollweber respondeu alguns meses depois de mim.
Koraktor

2

Todas as respostas postadas discutem isso de uma perspectiva estritamente maven. Meu problema era fazer esta instalação para maven usando Netbeans como meu IDE principal. Eu achei o artigo abaixo útil.

Crédito para o seguinte artigo do fórum netbeans: http://forums.netbeans.org/topic22907.html

  1. No projeto Maven, abra a caixa de diálogo "Adicionar dependência"
  2. Crie alguns groupId, artifactId e version e preencha-os, OK.
  3. A dependência será adicionada ao pom.xml e aparecerá no nó "Bibliotecas" do projeto maven
  4. Clique com o botão direito no nó Lib e em "instalar artefato manualmente", preencha o caminho para o jar. O Jar deve ser instalado no repositório Maven local com as coordenadas inseridas na etapa 2)
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.