São meus primeiros dias aprendendo Maven e ainda estou lutando com o básico. Eu tenho um arquivo .jar externo (não disponível nos repositórios públicos) que preciso fazer referência no meu projeto e estou tentando descobrir qual é a minha melhor opção.
É um projeto de pequena escala sem um repositório central para bibliotecas, portanto, ele deve ser um repositório local (de alguma forma adicionado ao controle de origem, não sei se deve funcionar dessa maneira?) Ou o .jar precisa ser armazenado em disco fora de qualquer repositório formal.
1) Qual é a minha melhor opção para adicionar o arquivo .jar às referências do meu projeto com o maven, pois quero que o projeto e a biblioteca estejam no controle de origem?
2) Ainda não consigo fazer com que o Eclipse veja a dependência. Adicionei-o manualmente à seção do pom e ele aparece bem na lista Dependências no m2eclipse. O mvn compile e o mvn package são bem-sucedidos, mas a execução do programa resulta em:
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
LibraryStuff cannot be resolved to a type
Isso ocorre depois de editar o POM como:
<dependency>
<groupId>stuff</groupId>
<artifactId>library</artifactId>
<version>1.0</version>
<systemPath>${lib.location}/MyLibrary.jar</systemPath>
<scope>system</scope>
</dependency>
Devo estar executando o mvn install: install-file, mesmo que eu já tenha o pom.xml editado como acima?
Obrigado!
mvn install::install-file
: mkyong.com/maven/…mvn install::install-file
em seu repositório local significaria que qualquer pessoa que clonasse seu código-fonte também teria que executar esta etapa do manual. Caso contrário, a compilação será quebradaVocê pode criar um repositório no projeto, para não precisar
run mvn install:install-file
toda vez que trabalhar em um novo computador/groupId/artifactId/version/artifactId-verion.jar
detalhes leia esta postagem do blog
https://web.archive.org/web/20121026021311/charlie.cu.cc/2012/06/how-add-external-libraries-maven
fonte
mvn install:install-file
e copiar toda a estrutura de diretórios do repositório local para o repositório no projeto.Isso pode ser facilmente alcançado usando o elemento <scope> aninhado dentro do elemento <dependency>.
Por exemplo:
Referência: http://www.tutorialspoint.com/maven/maven_external_dependencies.htm
fonte
install
meta no projeto dependente. Ofc com um sistema de airgapped e todos os plugins, exceto o plug-in de instalação, é uma situação bastante rara."The POM for … is missing, no dependency information available” even though it exists in Maven Repository
O manual do Maven diz para fazer isso:
fonte
update Desde então, instalamos nosso próprio servidor Nexus, muito mais fácil e limpo.
Em nossa empresa, tínhamos alguns frascos que eram comuns, mas não estavam hospedados em nenhum repositório maven, nem queríamos tê-los no armazenamento local. Criamos um repositório mvn (público) muito simples no Github (mas você pode hospedá-lo em qualquer servidor ou localmente):
observe que isso é ideal apenas para gerenciar alguns arquivos jar raramente perseguindo
Crie um repositório no GitHub:
https://github.com/<user_name>/mvn-repo/
Adicionar repositório no pom.xml
(observe que o arquivo bruto do caminho completo será um pouco diferente do nome do repositório )
Adicionar dependência ao host (Github ou servidor privado)
a. Tudo que você precisa saber é que os arquivos são armazenados no padrão mencionado por @glitch
/groupId/artifactId/version/artifactId-version.jar
b. No seu host, crie as pastas para corresponder a esse padrão.
ou seja, se você tiver um arquivo jar nomeado
service-sdk-0.0.1.jar
, crie a pastaservice-sdk/service-sdk/0.0.1/
e coloque o arquivo jarservice-sdk-0.0.1.jar
nela.c. Teste-o tentando baixar o jar de um navegador (no nosso caso:
https://github.com/<user_name>/mvn-repo/raw/master/service-sdk/service-sdk/0.0.1/service-sdk-0.0.1.jar
Adicione dependência ao seu arquivo pom.xml:
Aproveitar
fonte
Não use systemPath. Ao contrário do que as pessoas disseram aqui, você pode colocar um jar externo em uma pasta no diretório do projeto com check-out e para que o Maven o encontre como outras dependências. Aqui estão duas etapas cruciais:
É bastante simples e você pode encontrar um exemplo passo a passo aqui: http://randomizedsort.blogspot.com/2011/10/configuring-maven-to-use-local-library.html
fonte
Maven maneira de adicionar frascos não maven para projeto maven
Projeto Maven e frascos não maven
Adicione os plugins de instalação do maven na sua seção de compilação
Adicione a dependência
Referências Nota Eu sou o proprietário do blog
fonte
Se você encontrar o mesmo problema e estiver usando o spring-boot v1.4 + , poderá fazê-lo dessa maneira.
Existe um includeSystemScope que você pode usar para adicionar dependências de escopo do sistema ao jar.
por exemplo
Estou usando o driver oracle no meu projeto.
então faça includeSystemScope = true para incluir o jar no caminho / BOOT-INF / lib / **
e excluir do recurso para evitar a inclusão duplicada, o frasco é bastante gordo ~
Boa sorte!
fonte
Mude o seu systemPath .
fonte
O pom.xml examinará seu repositório local para tentar encontrar a dependência que corresponde ao seu artefato. Além disso, você realmente não deveria estar usando o escopo do sistema ou os atributos systemPath, eles normalmente são reservados para itens que estão no JDK e não no JRE
Consulte esta pergunta para saber como instalar artefatos maven.
fonte
Observe que todo o exemplo que usa
requer externa
etiquetas anexas. Não está claro em alguns exemplos.
fonte
A melhor solução aqui é instalar um repositório: Nexus ou Artifactory. Se lhe der um lugar para colocar coisas assim, e ainda mais, as coisas serão armazenadas em cache do lado de fora.
Se a coisa com a qual você está lidando é de código aberto, considere a possibilidade de incluir o central.
Veja o guia .
fonte
Com o Eclipse Oxygen, você pode fazer o seguinte:
O Maven irá levá-los ao instalar o projeto.
fonte
Se o jar externo for criado apenas por um projeto Maven, você poderá copiar todo o projeto em seu sistema e executar um
no diretório do projeto. Isso adicionará o jar ao diretório .m2, que é o repositório maven local.
Agora você pode adicionar o
Isso garantirá que você
trabalho. Se você usar sugerido aqui
Então você terá que adicionar classes individualmente enquanto estiver executando através da linha de comando.
Você pode adicionar os frascos externos pelo seguinte comando descrito aqui
fonte
A maneira mais eficiente e limpa de encontrar esse problema é usando os Pacotes do Github
Crie um repositório público / privado vazio e simples no GitHub, conforme sua necessidade, se você deseja que seu jar externo seja hospedado publicamente ou não.
Execute o comando maven abaixo para implantar seu jar externo no repositório github criado acima
mvn deploy:deploy-file \ -DgroupId= your-group-id \ -DartifactId= your-artifact-id \ -Dversion= 1.0.0 -Dpackaging= jar -Dfile= path-to-file \ -DrepositoryId= id-to-map-on-server-section-of-settings.xml \ -Durl=https://maven.pkg.github.com/github-username/github-reponame-created-in-above-step
O comando acima irá implantar seu jar externo no repositório do GitHub mencionado em
-Durl=
. Você pode consultar este link em Como implantar dependências como pacotes do GitHub Tutorial de implantação de pacotes do GitHubDepois que você pode adicionar a dependência usando
groupId
,artifactId
eversion
mencionado na etapa anterior em mavenpom.xml
e corrermvn install
O Maven buscará a dependência do jar externo no registro de pacotes do GitHub e fornecerá em seu projeto maven.
Para que isso funcione, você também precisará configurar o maven
settings.xml
para buscar no registro do pacote GitHub.fonte