As instruções para instalar no meu build tinham tudo, exceto a parte generatePom. Isso parece ser crucial.
Jason D #
4
<path-to-file> o que isso significa? Como em C: /Users/XXX/WorkspaceDocx/maven/src/main/resources/myJar.jar ...... ou podemos fazer $ {project.basedir} /src/main/resources/myJar.jar
Igor Beaufils
17
A resposta não menciona um README ou que os frascos são trazidos. No entanto, se o projeto levar os frascos, você poderá colocar o repositório no projeto, como mencionado aqui stackoverflow.com/a/36602256/1000011 , não será necessário um README, pois o projeto funcionará como se os frascos estavam na central maven sem etapas manuais extras.
opticyclic
8
@opticyclic, seu comentário precisa de mais votos positivos, ou esta resposta precisa ser editada. É uma receita para o desastre para iniciantes que não percebem que a instalação no repositório local do Maven não incluiria para todos os outros.
Em novas versões, esse recurso é marcado como obsoleto, mas ainda está funcionando e ainda não foi removido (você vê apenas um aviso no log durante o início do processo) Foi levantado um problema no grupo maven sobre este https://issues.apache.org/jira/browse/MNG-6523 (Você pode participar e descrever por que esse recurso é útil em alguns casos). Espero que esse recurso permaneça lá!
Se você está me perguntando, desde que o recurso não seja removido, eu uso isso para fazer dependência de apenas um arquivo jar impertinente no meu projeto que não se encaixa no repositório. Se esse recurso for removido, bem, há muitas boas respostas aqui, das quais posso escolher mais tarde!
Há momentos em que você deseja testar especificamente um jar antigo, por exemplo, e acho que essa resposta é adequada. É o que eu precisava. Upvoted
John Lockwood
36
Tão agradável e fácil quanto parece, esta solução tem o problema de que yourJar.jar não será incluído em um arquivo WAR para seu aplicativo.
Matthias
40
A solução acima não funciona mais, ela retorna: "'dependencies.dependency.systemPath' para xx.jar não deve apontar para arquivos no diretório do projeto" Isso já foi tratado em stackoverflow.com/questions/10935135/…
sarah .ferguson
8
Nesta resposta, não são a artifactIde groupIdda forma errada?
Em primeiro lugar, gostaria de dar crédito por esta resposta a um usuário anônimo do Stack Overflow - tenho certeza de que já vi uma resposta semelhante aqui antes - mas agora não consigo encontrá-la.
A melhor opção para ter arquivos JAR locais como uma dependência é criar um repositório Maven local. Esse repositório nada mais é do que uma estrutura de diretórios adequada com arquivos pom nele.
Para o meu exemplo: eu tenho meu projeto mestre no ${master_project}local e o subprojeto1 está ativado ${master_project}/${subproject1}.
Então eu criar um repositório Maven em:
${master_project}/local-maven-repo.
No arquivo pom no subprojeto1 localizado em ${master_project}/${subproject1}/pom.xml, o repositório precisa ser especificado, o que levaria o caminho do arquivo como um parâmetro de URL:
A dependência pode ser especificada como para qualquer outro repositório. Isso torna seu repositório pom independente. Por exemplo, quando o JAR desejado estiver disponível no Maven central, você só precisará excluí-lo do seu repositório local e ele será retirado do repositório padrão.
Depois que o arquivo JAR é instalado, seu repositório Maven pode ser confirmado em um repositório de códigos, e toda a configuração é independente do sistema. ( Exemplo de trabalho no GitHub ).
Concordo que ter JARs comprometidos com repo código fonte não é uma boa prática, mas na vida real, soluções rápidas e sujas às vezes são melhores que um repo Nexus completo para hospedar um JAR que você não pode publicar.
@Kai Wang Esta solução funciona muito melhor! talvez você devesse adicionar isso como resposta.
Lockwobr #
7
Como ${project.parent.basedir}não parece resolver nada hoje em dia, usei ${project.basedir}/..e trabalhei perfeitamente.
O Empalador
1
Uma dica: verifique $ HOME / .m2 / settings.xml , para evitar que "local-maven-repo" seja espelhado por settings / mirrors / mirror <mirrorOf>*</mirrorOf>.
btpka3
125
Crie uma nova pasta, digamos local-maven-repona raiz do seu projeto Maven.
Basta adicionar um repositório local dentro <project>do seu pom.xml:
Esta é a única resposta correta aqui, pois criará seu repositório corretamente ao usar o deploy.
Opticyclic
Essa abordagem funcionaria se o código fosse implantado usando um servidor de criação de IC? Parece que construções automatizadas não teriam acesso à dependência.
Wallace Howery 08/0318
2
@ user2748659 yes se nos servidores de criação de IC a pasta local-maven-repoestiver incluída (como filho neste exemplo) na pasta de origem
Anthony O.
3
Esta resposta é o que funcionou para mim. Para um projeto compartilhado, ter o repositório no diretório do projeto e adicionar ao controle de versão garante que quem fizer check-out do projeto não terá dependências ausentes. Se você tiver muitas dependências, um repositório remoto compartilhado provavelmente é uma solução melhor; caso contrário, manter o repositório no diretório do projeto é perfeitamente adequado.
Aquarelle
2
Observe que, para fazer isso, pode ser necessário adicionar -Dpackaging = jar. Caso contrário, você receberá "as informações do artefato estão incompletas ou inválidas: o pacote está ausente".
J Woodchuck
43
Gostaria dessa solução - use maven-install-pluginno arquivo pom:
Nesse caso, você pode executar mvn initializee o jar será instalado no repositório maven local. Agora, este jar está disponível durante qualquer etapa do maven nesta máquina (não se esqueça de incluir essa dependência como qualquer outra dependência do maven no pom com <dependency></dependency>tag). Também é possível vincular a instalação do jar não para a initializeetapa, mas para qualquer outra etapa que você desejar.
Isso funciona bem para mim, mas somente se eu executar mvn initializeantes mvn package: não posso mvn initialize packageou então ele tenta baixar o JAR do repositório central. Por que é isso? Eu pensei que iria executar esses objetivos / fases em ordem.
Davids
1
Na verdade, eles devem ser executados em ordem. Dê uma olhada na lista do ciclo de vida padrão: maven.apache.org/guides/introduction/… Você pode usar outra etapa para ligar.
Sphinks
2
Eu tentei todos os métodos, mas no final tive que recorrer a essa solução. A principal razão é que eu queria poder construir os pacotes localmente no modo offline. Se eu o declarasse como uma dependência de um repositório definido localmente, isso sempre seria considerado apenas mais um repositório on-line e a construção do maven reclamaria de não multar o artefato. Esta solução funciona bem para todos os casos.
Mauli
2
Eu acho que é melhor usar a fase limpa, porque a inicialização será executada sempre que usarmos o pacote mvn quando for desnecessário. Finalmente, se precisarmos apenas gerar o jar / war, podemos usar diretamente o pacote mvn clean .
Deoxyseia
" Também é possível vincular a instalação do jar para não inicializar a etapa, mas qualquer outra etapa que você goste. " Não é necessariamente verdadeira. Se a dependência ainda não estiver no repositório e for usada uma fase que vem depois de uma fase que resolve dependências (por exemplo compile), a compilação falhará.
GeroldBroser restabelece Monica
29
<dependency><groupId>group id name</groupId><artifactId>artifact name</artifactId><version>version number</version><scope>system</scope><systemPath>jar location</systemPath></dependency>
No entanto, isso permanecerá apenas na sua máquina (obviamente), pois, para compartilhar, geralmente faz sentido usar um arquivo m2 adequado (nexus / artifactory) ou se você não possui nenhum desses itens ou não deseja configurar um maven local arquivo estruturado e configure um "repositório" em seu pom: local:
Eu recebo um erro Falha ao instalar o artefato (acesso negado). Como posso resolver isso? @Aurasphere
Ramzah Rehman
1
@RamzahRehman tente abrir o prompt de comando com privilégios admi clicando o botão direito e, em seguida, escolher "Executar como administrador"
Aurasphere
9
Uma maneira é fazer o upload para o seu próprio gerenciador de repositório Maven (como o Nexus). É uma boa prática ter um gerenciador de repositório próprio de qualquer maneira.
Outra maneira interessante que vi recentemente é incluir o Maven Install Plugin no seu ciclo de vida de construção: Você declara no POM para instalar os arquivos no repositório local. É uma sobrecarga pequena, mas pequena, e nenhuma etapa manual envolvida.
Termine mudando para gradle. Não funciona Se o jar local for definido como dependências, o maven não executará plug-ins antes de resolver as dependências, uma instalação manual é inevitável. encontrou uma divergência sobre esta situação: stackoverflow.com/questions/5951999/…
xinthink 15/15
7
Claro que você pode adicionar jarros a essa pasta. Mas talvez não seja o que você deseja alcançar ...
Outro caso interessante é quando você deseja ter em seu projeto frascos de maven privados. Convém manter os recursos do Maven para resolver dependências transitivas. A solução é bastante fácil.
Crie uma pasta libs no seu projeto
Adicione as seguintes linhas ao seu arquivo pom.xml
Eu acho que uma solução melhor para esse problema é usar o maven-install-plugin para instalar automaticamente os arquivos no momento da instalação. É assim que eu o configurei para o meu projeto.
Primeiro, adicione o caminho (onde você armazena os .jars locais) como uma propriedade.
Configurando seu projeto assim, o projeto continuará sendo construído mesmo quando você o levar para outro computador (já que ele possui todos os arquivos jar no caminho especificado pela propriedade local.sdk).
Para groupIdusar um nome exclusivo, apenas para garantir que não haja conflitos.
Quero compartilhar um código no qual você possa carregar uma pasta cheia de potes. É útil quando um provedor não possui um repositório público e você precisa adicionar muitas bibliotecas manualmente. Decidi criar um .bat em vez de chamar diretamente para o maven, pois poderia haver erros de falta de memória. Foi preparado para um ambiente Windows, mas é fácil adaptá-lo ao SO Linux:
import java.io.File;import java.io.IOException;import java.io.PrintWriter;import java.util.Date;import java.util.jar.Attributes;import java.util.jar.JarFile;import java.util.jar.Manifest;publicclassCreateMavenRepoApp{privatestaticfinalString OCB_PLUGIN_FOLDER ="C://your_folder_with_jars";publicstaticvoid main(String[] args)throwsIOException{File directory =newFile();//get all the files from a directoryPrintWriter writer =newPrintWriter("update_repo_maven.bat","UTF-8");
writer.println("rem "+newDate());File[] fList = directory.listFiles();for(File file : fList){if(file.isFile()){String absolutePath = file.getAbsolutePath();Manifest m =newJarFile(absolutePath).getManifest();Attributes attributes = m.getMainAttributes();String symbolicName = attributes.getValue("Bundle-SymbolicName");if(symbolicName!=null&&symbolicName.contains("com.yourCompany.yourProject")){String[] parts =symbolicName.split("\\.");String artifactId = parts[parts.length-1];String groupId = symbolicName.substring(0,symbolicName.length()-artifactId.length()-1);String version = attributes.getValue("Bundle-Version");String mavenLine="call mvn org.apache.maven.plugins:maven-install-plugin:2.5.1:install-file -Dfile="+ absolutePath+" -DgroupId="+ groupId+" -DartifactId="+ artifactId+" -Dversion="+ version+" -Dpackaging=jar ";
writer.println(mavenLine);}}}
writer.close();}}
Depois de executar este main a partir de qualquer IDE, execute o update_repo_maven.bat.
Seu código String symbolicName = attributes.getValue("Bundle-SymbolicName"); if(symbolicName!=null &&symbolicName.contains("com.yourCompany.yourProject"))parece indicar que apenas os frascos personalizados serão suportados. Não é disso que precisamos: em vez disso, um monte de potes de terceiros. Você tem sugestões de como instalar qualquer jar dessa maneira?
Javadba 27/11
Eu fixo o seu código: i colocar uma resposta na parte inferior.
Javadba 27/11
3
Esta é uma sintaxe curta para versões mais recentes:
mvn install:install-file -Dfile=<path-to-file>
Funciona quando o JAR foi construído pelo Apache Maven - o caso mais comum. Em seguida, ele conterá um pom.xml em uma subpasta do diretório META-INF, que será lido por padrão.
Dependências do Maven . Esse é o padrão, mas, em alguns casos, encontrei explicitamente definindo esse escopo também como Maven para encontrar bibliotecas locais no repositório local.
Por alguma razão, no aplicativo da Web para o qual estou dando manutenção, nem a solução de Alireza Fattahi nem a solução de JJ Roman funcionaram corretamente. Nos dois casos, a compilação corre bem (vê o frasco), mas a embalagem falha ao incluir o frasco dentro da guerra.
A única maneira de conseguir fazê-lo funcionar foi colocar o frasco /src/main/webapp/WEB-INF/lib/e combiná-lo com a solução de Fattahis ou Roman.
Observe que NÃO é necessariamente uma boa ideia usar um repositório local. Se este projeto for compartilhado com outras pessoas, todos os outros terão problemas e perguntas quando não funcionar, e o jar não estará disponível nem no seu sistema de controle de origem!
Embora o repositório compartilhado seja a melhor resposta, se você não puder fazer isso por algum motivo, a incorporação do jar é melhor do que um repositório local. O conteúdo de repositório somente local pode causar muitos problemas, especialmente com o tempo.
se você adicionar os jars no sistema de controle de origem, as bibliotecas sempre estarão disponíveis junto com a fonte. Sem fonte, sem bibliotecas. Com o maven, a fonte pode estar ok, mas o repositório indisponível.
Sarah.ferguson
@ Frank ... alguma idéia sobre como criar jar executável sem incluir dependências externas (arquivos de biblioteca)?
Satish Karuturi
Para alguém iniciante no assunto, e procurando uma resposta para a pergunta original, o que significa "incorporar a jarra"?
Cdock
1
No seu repositório local, você pode instalar seu jar emitindo os comandos
Você pode escrever o código abaixo na linha de comando ou, se estiver usando o eclipse embutido, clique com o botão direito do mouse em projeto -> Executar como -> execute configurações ... -> no painel esquerdo, clique com o botão direito em Maven Build -> nova configuração -> escreva o código em Objetivos e no diretório base: $ {project_loc: NameOfYourProject} -> Executar
Certifique-se de editar o filecaminho com base no caminho real do arquivo (recomendado é colocar esses frascos externos que não sejam de maven dentro de alguma pasta, digamos lib, e coloque essa libpasta dentro do seu projeto para usar o caminho relativo específico do projeto e evitar adicionar sistemas caminho absoluto específico.
Se você tiver vários frascos externos, repita o mesmo <execution>para outros frascos dentro do mesmo maven-install-plugin.
Etapa 2: Depois de configurar o maven-install-plugincomo mostrado acima no seu pom.xmlarquivo, você deverá usar esses jars no seu, pom.xmlcomo de costume:
Observe que maven-install-pluginapenas copia seus jars externos para o .m2repositório maven local . É isso aí. Ele não inclui automaticamente esses frascos como dependências importantes para o seu projeto.
Eu tive o mesmo erro para um conjunto de dependências no meu pom.xml. As versões das dependências não foram especificadas no pom.xml e foram mencionadas no repositório pai. Por alguma razão, os detalhes da versão não estavam sendo sincronizados com este repositório. Daí eu inseri manualmente as versões usando a tag e funcionou como um encanto. Pouco tempo necessário para procurar as versões no pai e especificar aqui. Mas isso pode ser feito apenas para os frascos que estão mostrando o erro do artefato e ele funciona. Espero que isso ajude alguém.
No Apache Maven 3.5.4, tive que adicionar aspas duplas. Sem aspas duplas, não funcionou para mim.
exemplo: mvn install: install-file "-Dfile = local no arquivo jar" "-DgroupId = id do grupo" "-DartifactId = id do artefato" "-Dversion = version" "-Dpackaging = package type"
Se você estiver usando o Eclipse, coloque o jar no lib /, clique com o botão direito do mouse no nome do jar e clique em "add to build path". O Eclipse criará uma "biblioteca referenciada" e colocará o jar para você
Resolveu a importação do jar imediatamente no programa para mim
Que irá adicionar entrada em Eclipse .classpath, mas a sua construção Maven mvn packageserá brocket uma vez que você começar a usar essa dependência, como maven não tem uma definição dele, e ele deve ser apenas empom.xml
Paul Verest
Sim, você está certo, o pacote não inclui o frasco local. Mas eu respondi à pergunta, como adicioná-lo a um projeto (de maneira eclipse).
install-file
scripts complicados de cmd .Respostas:
Instale o JAR no seu repositório Maven local da seguinte maneira:
Onde cada um se refere a:
<path-to-file>
: o caminho para o arquivo a ser carregado, por exemplo →c:\kaptcha-2.3.jar
<group-id>
: o grupo em que o arquivo deve ser registrado, por exemplo, →com.google.code
<artifact-id>
: o nome do artefato para o arquivo, por exemplo, →kaptcha
<version>
: a versão do arquivo, por exemplo, →2.3
<packaging>
: a embalagem do arquivo, por exemplo, →jar
Referência
install:install-file
objetivofonte
Você pode adicionar dependências locais diretamente (como mencionado no projeto build maven com bibliotecas de propriedades incluídas ) assim:
Atualizar
Em novas versões, esse recurso é marcado como obsoleto, mas ainda está funcionando e ainda não foi removido (você vê apenas um aviso no log durante o início do processo) Foi levantado um problema no grupo maven sobre este https://issues.apache.org/jira/browse/MNG-6523 (Você pode participar e descrever por que esse recurso é útil em alguns casos). Espero que esse recurso permaneça lá!
Se você está me perguntando, desde que o recurso não seja removido, eu uso isso para fazer dependência de apenas um arquivo jar impertinente no meu projeto que não se encaixa no repositório. Se esse recurso for removido, bem, há muitas boas respostas aqui, das quais posso escolher mais tarde!
fonte
artifactId
egroupId
da forma errada?Em primeiro lugar, gostaria de dar crédito por esta resposta a um usuário anônimo do Stack Overflow - tenho certeza de que já vi uma resposta semelhante aqui antes - mas agora não consigo encontrá-la.
A melhor opção para ter arquivos JAR locais como uma dependência é criar um repositório Maven local. Esse repositório nada mais é do que uma estrutura de diretórios adequada com arquivos pom nele.
Para o meu exemplo: eu tenho meu projeto mestre no
${master_project}
local e o subprojeto1 está ativado${master_project}/${subproject1}
.Então eu criar um repositório Maven em:
${master_project}/local-maven-repo
.No arquivo pom no subprojeto1 localizado em
${master_project}/${subproject1}/pom.xml
, o repositório precisa ser especificado, o que levaria o caminho do arquivo como um parâmetro de URL:A dependência pode ser especificada como para qualquer outro repositório. Isso torna seu repositório pom independente. Por exemplo, quando o JAR desejado estiver disponível no Maven central, você só precisará excluí-lo do seu repositório local e ele será retirado do repositório padrão.
A última coisa, mas não menos importante, é adicionar o arquivo JAR ao repositório local usando a opção -DlocalRepositoryPath da seguinte maneira:
Depois que o arquivo JAR é instalado, seu repositório Maven pode ser confirmado em um repositório de códigos, e toda a configuração é independente do sistema. ( Exemplo de trabalho no GitHub ).
Concordo que ter JARs comprometidos com repo código fonte não é uma boa prática, mas na vida real, soluções rápidas e sujas às vezes são melhores que um repo Nexus completo para hospedar um JAR que você não pode publicar.
fonte
${project.parent.basedir}
não parece resolver nada hoje em dia, usei${project.basedir}/..
e trabalhei perfeitamente.<mirrorOf>*</mirrorOf>
.Crie uma nova pasta, digamos
local-maven-repo
na raiz do seu projeto Maven.Basta adicionar um repositório local dentro
<project>
do seupom.xml
:Em seguida, para cada jar externo que você deseja instalar, acesse a raiz do seu projeto e execute:
fonte
local-maven-repo
estiver incluída (como filho neste exemplo) na pasta de origemGostaria dessa solução - use
maven-install-plugin
no arquivo pom:Nesse caso, você pode executar
mvn initialize
e o jar será instalado no repositório maven local. Agora, este jar está disponível durante qualquer etapa do maven nesta máquina (não se esqueça de incluir essa dependência como qualquer outra dependência do maven no pom com<dependency></dependency>
tag). Também é possível vincular a instalação do jar não para ainitialize
etapa, mas para qualquer outra etapa que você desejar.fonte
mvn initialize
antesmvn package
: não possomvn initialize package
ou então ele tenta baixar o JAR do repositório central. Por que é isso? Eu pensei que iria executar esses objetivos / fases em ordem.compile
), a compilação falhará.fonte
<scope>system
está obsoleto agora.install:install-file
o artefato para o repositório local e use-o como uma dependência "normal" (com escopo padrãocompile
) ou use uma solução de repositório no projeto .Sim, você pode ter, mas não é uma boa ideia.
Em vez disso, instale todos esses frascos em repositórios de máquinas
Veja também
fonte
A maneira realmente rápida e suja é apontar para um arquivo local:
No entanto, isso permanecerá apenas na sua máquina (obviamente), pois, para compartilhar, geralmente faz sentido usar um arquivo m2 adequado (nexus / artifactory) ou se você não possui nenhum desses itens ou não deseja configurar um maven local arquivo estruturado e configure um "repositório" em seu pom: local:
controlo remoto:
para isso, também é possível um caminho relativo usando a variável basedir:
fonte
<url>file:${basedir}</url>
como URL base.Adicione seu próprio JAR local no arquivo POM e use-o no maven build.
Por exemplo:
Em seguida, adicione-o ao POM assim:
fonte
Uma maneira é fazer o upload para o seu próprio gerenciador de repositório Maven (como o Nexus). É uma boa prática ter um gerenciador de repositório próprio de qualquer maneira.
Outra maneira interessante que vi recentemente é incluir o Maven Install Plugin no seu ciclo de vida de construção: Você declara no POM para instalar os arquivos no repositório local. É uma sobrecarga pequena, mas pequena, e nenhuma etapa manual envolvida.
http://maven.apache.org/plugins/maven-install-plugin/install-file-mojo.html
fonte
Claro que você pode adicionar jarros a essa pasta. Mas talvez não seja o que você deseja alcançar ...
Se você precisar desses jarros para compilação, verifique esta pergunta relacionada: Posso adicionar jarros ao maven 2 build classpath sem instalá-los?
Além disso, antes que alguém o sugira, NÃO use o escopo do sistema.
fonte
Outro caso interessante é quando você deseja ter em seu projeto frascos de maven privados. Convém manter os recursos do Maven para resolver dependências transitivas. A solução é bastante fácil.
Adicione as seguintes linhas ao seu arquivo pom.xml
Abra a pasta .m2 / repository e copie a estrutura de diretórios do projeto que você deseja importar para a pasta libs .
Por exemplo, suponha que você queira importar a dependência
Basta ir em .m2 / repository e você verá a seguinte pasta
com / minhaempresa / meuprojeto / 1.2.3
Copie tudo na sua pasta libs (novamente, incluindo as pastas em .m2 / repository ) e pronto.
fonte
linha de comando :
fonte
Parte importante da dependência é: $ {pom.basedir} (em vez de apenas $ {basedir})
fonte
Eu acho que uma solução melhor para esse problema é usar o maven-install-plugin para instalar automaticamente os arquivos no momento da instalação. É assim que eu o configurei para o meu projeto.
Primeiro, adicione o caminho (onde você armazena os .jars locais) como uma propriedade.
Em seguida,
plugins
adicione um plug-in para instalar os jars ao compilar.Finalmente, nas dependências, você pode adicionar os jars
Configurando seu projeto assim, o projeto continuará sendo construído mesmo quando você o levar para outro computador (já que ele possui todos os arquivos jar no caminho especificado pela propriedade
local.sdk
).Para
groupId
usar um nome exclusivo, apenas para garantir que não haja conflitos.Agora, quando você
mvn install
oumvn test
os frascos locais serão adicionados automaticamente.fonte
A maneira preferida seria criar seu próprio repositório remoto.
Veja aqui para detalhes sobre como fazê-lo. Dê uma olhada na seção ' Upload para um repositório remoto '.
fonte
Quero compartilhar um código no qual você possa carregar uma pasta cheia de potes. É útil quando um provedor não possui um repositório público e você precisa adicionar muitas bibliotecas manualmente. Decidi criar um .bat em vez de chamar diretamente para o maven, pois poderia haver erros de falta de memória. Foi preparado para um ambiente Windows, mas é fácil adaptá-lo ao SO Linux:
Depois de executar este main a partir de qualquer IDE, execute o update_repo_maven.bat.
fonte
String symbolicName = attributes.getValue("Bundle-SymbolicName"); if(symbolicName!=null &&symbolicName.contains("com.yourCompany.yourProject"))
parece indicar que apenas os frascos personalizados serão suportados. Não é disso que precisamos: em vez disso, um monte de potes de terceiros. Você tem sugestões de como instalar qualquer jar dessa maneira?Esta é uma sintaxe curta para versões mais recentes:
Funciona quando o JAR foi construído pelo Apache Maven - o caso mais comum. Em seguida, ele conterá um pom.xml em uma subpasta do diretório META-INF, que será lido por padrão.
Fonte: http://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html
fonte
Veja também ...
Dependências do Maven . Esse é o padrão, mas, em alguns casos, encontrei explicitamente definindo esse escopo também como Maven para encontrar bibliotecas locais no repositório local.
fonte
Por alguma razão, no aplicativo da Web para o qual estou dando manutenção, nem a solução de Alireza Fattahi nem a solução de JJ Roman funcionaram corretamente. Nos dois casos, a compilação corre bem (vê o frasco), mas a embalagem falha ao incluir o frasco dentro da guerra.
A única maneira de conseguir fazê-lo funcionar foi colocar o frasco
/src/main/webapp/WEB-INF/lib/
e combiná-lo com a solução de Fattahis ou Roman.fonte
Observe que NÃO é necessariamente uma boa ideia usar um repositório local. Se este projeto for compartilhado com outras pessoas, todos os outros terão problemas e perguntas quando não funcionar, e o jar não estará disponível nem no seu sistema de controle de origem!
Embora o repositório compartilhado seja a melhor resposta, se você não puder fazer isso por algum motivo, a incorporação do jar é melhor do que um repositório local. O conteúdo de repositório somente local pode causar muitos problemas, especialmente com o tempo.
fonte
No seu repositório local, você pode instalar seu jar emitindo os comandos
Siga este link útil para fazer o mesmo no site de mkyoung. Você também pode verificar o guia do maven para o mesmo
fonte
Para instalar jar de terceiros, chame o comando como abaixo
fonte
Você pode escrever o código abaixo na linha de comando ou, se estiver usando o eclipse embutido, clique com o botão direito do mouse em projeto -> Executar como -> execute configurações ... -> no painel esquerdo, clique com o botão direito em Maven Build -> nova configuração -> escreva o código em Objetivos e no diretório base: $ {project_loc: NameOfYourProject} -> Executar
Onde cada um se refere a:
<caminho para o arquivo>: o caminho para o arquivo a ser carregado, por exemplo - -> c: \ kaptcha-2.3.jar
<id do grupo>: o grupo em que o arquivo deve ser registrado em, por exemplo - -> com.google.code
<id do artefato>: o nome do artefato para o arquivo, por exemplo - -> kaptcha
<version>: a versão do arquivo, por exemplo -> 2.3
<embalagem>: a embalagem do arquivo, por exemplo - -> jar
fonte
Etapa 1: configure
maven-install-plugin
o objetivo com oinstall-file
seupom.xml
Certifique-se de editar o
file
caminho com base no caminho real do arquivo (recomendado é colocar esses frascos externos que não sejam de maven dentro de alguma pasta, digamoslib
, e coloque essalib
pasta dentro do seu projeto para usar o caminho relativo específico do projeto e evitar adicionar sistemas caminho absoluto específico.Se você tiver vários frascos externos, repita o mesmo
<execution>
para outros frascos dentro do mesmomaven-install-plugin
.Etapa 2: Depois de configurar o
maven-install-plugin
como mostrado acima no seupom.xml
arquivo, você deverá usar esses jars no seu,pom.xml
como de costume:Observe que
maven-install-plugin
apenas copia seus jars externos para o.m2
repositório maven local . É isso aí. Ele não inclui automaticamente esses frascos como dependências importantes para o seu projeto.É um ponto menor, mas às vezes fácil de perder.
fonte
Eu tive o mesmo erro para um conjunto de dependências no meu pom.xml. As versões das dependências não foram especificadas no pom.xml e foram mencionadas no repositório pai. Por alguma razão, os detalhes da versão não estavam sendo sincronizados com este repositório. Daí eu inseri manualmente as versões usando a tag e funcionou como um encanto. Pouco tempo necessário para procurar as versões no pai e especificar aqui. Mas isso pode ser feito apenas para os frascos que estão mostrando o erro do artefato e ele funciona. Espero que isso ajude alguém.
fonte
No Apache Maven 3.5.4, tive que adicionar aspas duplas. Sem aspas duplas, não funcionou para mim.
exemplo: mvn install: install-file "-Dfile = local no arquivo jar" "-DgroupId = id do grupo" "-DartifactId = id do artefato" "-Dversion = version" "-Dpackaging = package type"
fonte
fonte
ESTA RESPOSTA É APENAS PARA USUÁRIOS DA ECLIPSE:
Se você estiver usando o Eclipse, coloque o jar no lib /, clique com o botão direito do mouse no nome do jar e clique em "add to build path". O Eclipse criará uma "biblioteca referenciada" e colocará o jar para você
Resolveu a importação do jar imediatamente no programa para mim
fonte
.classpath
, mas a sua construção Mavenmvn package
será brocket uma vez que você começar a usar essa dependência, como maven não tem uma definição dele, e ele deve ser apenas empom.xml