Adicionar uma dependência no Maven


134

Como pego um arquivo jar que eu tenho e o adiciono ao sistema de dependência no maven 2? Eu serei o mantenedor dessa dependência e meu código precisa desse jar no caminho da classe para que ele seja compilado.

Respostas:


139

Você precisará fazer isso em duas etapas:

1. Dê ao seu JAR um groupId, artifactId e version e adicione-o ao seu repositório.

Se você não possui um repositório interno e está apenas tentando adicionar seu JAR ao seu repositório local, pode instalá-lo da seguinte maneira, usando qualquer groupId / artifactIds arbitrário:

mvn install:install-file -DgroupId=com.stackoverflow... -DartifactId=yourartifactid... -Dversion=1.0 -Dpackaging=jar -Dfile=/path/to/jarfile

Você também pode implantá-lo no seu repositório interno, se tiver um, e desejar disponibilizar isso para outros desenvolvedores da sua organização. Eu apenas uso a interface baseada na Web do meu repositório para adicionar artefatos, mas você deve conseguir fazer a mesma coisa usando mvn deploy:deploy-file ....

2. Atualize os projetos dependentes para fazer referência a este JAR.

Atualize a dependência no pom.xml dos projetos que usam o JAR adicionando o seguinte ao elemento:

<dependencies>
    ...
    <dependency>
        <groupId>com.stackoverflow...</groupId>
        <artifactId>artifactId...</artifactId>
        <version>1.0</version>
    </dependency>
    ...
</dependencies>

3
Você pode adicionar mais detalhes sobre a implantação? Temos um repositório interno e quero implantar meu arquivo instalado no jar local nesse repositório para que outros desenvolvedores e nosso servidor de compilação também obtenham o jar.
Kieveli 11/01/09

Esta resposta deve receber todos os gostos! Usei isso para adicionar com êxito dependências para meus projetos importantes no Google App Engine e no Heroku.
Leo C Han

93

Você também pode especificar uma dependência que não está em um repositório maven. Pode ser útil quando não existe nenhum repositório central para sua equipe ou se você possui um servidor de IC

    <dependency>
        <groupId>com.stackoverflow</groupId>
        <artifactId>commons-utils</artifactId>
        <version>1.3</version>
        <scope>system</scope>
        <systemPath>${basedir}/lib/commons-utils.jar</systemPath>
    </dependency>

4
Posso depender de outro arquivo pom em vez de um jar?
21413 Jayen

45

Na verdade, ao investigar isso, acho que todas essas respostas estão incorretas. Sua pergunta é enganosa por causa do nosso nível de compreensão de maven. E digo o nosso porque estou apenas sendo apresentado maven.

Em Eclipse, quando você deseja adicionar um arquivo jar ao seu projeto, normalmente você baixa o jar manualmente e o solta no diretório lib . Com o maven, você não faz dessa maneira. Aqui está o que você faz:

  • Vá para mvnrepository
  • Procure a biblioteca que você deseja adicionar
  • Copie a dependencydeclaração para o seupom.xml
  • reconstruir via mvn

Agora, mavenconectará e fará o download jarjunto com a lista de dependências e resolverá automaticamente todas as dependências adicionais que jarpossam ter tido. Portanto, se o jarlog comum também for necessário, isso também será baixado.


5
Estou usando o Spring Tool Suite (construído no Eclipse). Após as etapas 1 e 2 da solução acima: 1. Abra o pom.xml no editor STS, clique na guia "Dependencies" na parte inferior 2. Clique em "Add" no grupo Dependencies 3. Copie / cole as informações de dependência da guia "Maven" na janela do navegador ( groupId, artifactId, versão) nos campos correspondentes no pop-up "Selecionar dependência" no STS 4. Clique em OK 5. Salvar pom.xml Depois de salvo, meu diretório maven no disco rígido e a configuração de dependência maven no STS são atualizados em segundos. Você pode editar o arquivo .xml diretamente, mas o uso da ferramenta pode ajudar a evitar problemas de formato xml.
Chris R

2
Esta é realmente a maneira preferida de fazer as coisas, mas há situações em que você não pode fazer isso (por exemplo, jar proprietário não no mvnrepository). Nesse caso, você precisará adicioná-lo "manualmente"; nesse caso, outra resposta teria a solução.
Thunderforge

Também é possível que a pergunta feita tenha sido menos do que uma pergunta para iniciantes. Eu coloquei isso para pessoas que procuram fazer algo sem o fraseado adequado que advém do tempo gasto trabalhando com maven. (Como eu estava na época)
Kieveli 20/02

BEIJO Obrigado, eu li que esse é o equivalente do C # Nuget em Java, mas eu estava tentando descobrir em qual botão clicar ou cmd para executar. Não é exatamente 1: 1, mas faz o trabalho.
Terrance

Como reconstruir o projeto no maven no intelleJ?
Irfan Nasim

14

Eu faria o seguinte:

  1. adicione a dependência como quiser no seu pom:

    <dependency>
            <groupId>com.stackoverflow...</groupId>
            <artifactId>artifactId...</artifactId>
            <version>1.0</version>
    </dependency>

  2. executá- mvn installlo tentará baixar o jar e falhará. No processo, ele fornecerá o comando completo da instalação do jar com a mensagem de erro. Copie esse comando e execute-o! fácil né ?!


3

Suponho que você esteja perguntando como enviar uma dependência para um "repositório conhecido" e não apenas perguntando como atualizar seu POM.

Se sim, então é isso que você deseja ler.

E para quem deseja configurar um servidor de repositório interno, veja aqui (metade do problema com o uso do Maven 2 é encontrar os documentos)


Eu também gostaria de manter uma dependência. Esta é uma biblioteca interna.
Milhous
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.