em meu projeto J2EE, tenho algumas dependências, que não estão disponíveis em nenhum repositório Maven, porque são bibliotecas proprietárias. Essas bibliotecas precisam estar disponíveis em tempo de execução, portanto, devem ser copiadas para o destino /.../ WEB-INF / lib ...
No momento, estou listando-os como dependência do sistema em meu POM, mas com esse método o problema é que eles não estão sendo copiados para a compilação de destino durante a compilação. Além disso, este método não é muito elegante.
Então qual a melhor forma de integrá-los no Maven?
Observação: não quero criar meu próprio repositório Maven.
java
maven-2
build-process
Sansão
fonte
fonte
Respostas:
Como você disse que não deseja configurar seu próprio repositório, talvez isso ajude.
Você pode usar o objetivo install-file do maven-install-plugin para instalar um arquivo no repositório local. Se você criar um script com uma invocação Maven para cada arquivo e mantê-lo junto com os jars, você (e qualquer outra pessoa com acesso) pode instalar facilmente os jars (e os arquivos pom associados) em seu repositório local.
Por exemplo:
ou apenas
Você pode então fazer referência às dependências normalmente em seu projeto.
No entanto, sua melhor aposta ainda é configurar um repositório remoto interno e eu recomendo usar o Nexus . Ele pode ser executado em sua caixa de desenvolvimento, se necessário, e a sobrecarga é mínima.
fonte
Para pessoas que desejam uma solução rápida para este problema:
apenas forneça à sua biblioteca um groupID e nome de artefato exclusivos e aponte para onde ele está no sistema de arquivos. Você está pronto para ir.
Claro que esta é uma solução rápida suja que funcionará SOMENTE em sua máquina e se você não alterar o caminho para as libs. Mas às vezes, é tudo o que você quer, executar e fazer alguns testes.
EDIT: acabei de refazer a pergunta e percebi que o usuário já estava usando minha solução como uma correção temporária. Vou deixar minha resposta como uma ajuda rápida para outras pessoas que vierem a esta pergunta. Se alguém discordar disso, deixe-me um comentário. :)
fonte
Crie uma pasta de repositório em seu projeto. Vamos levar
Em seguida, instale seu jar personalizado neste repo:
Por último, adicione as seguintes definições de repositório e dependência ao projeto pom.xml:
fonte
/
(ou seja, indicando uma pasta), o repo é criado com groupId. Ex: se o id do grupo forfoo.com
e localRepositoryPath forrepo
, a pasta repo se tornarárepo.foo.com
.Você precisa configurar um repositório local que hospedará essas bibliotecas. Existem vários projetos que fazem exatamente isso. Por exemplo Artifactory .
fonte
Nenhuma das soluções funciona se você estiver usando o Jenkins build !! Quando o pom é executado dentro do servidor de compilação Jenkins .. essas soluções irão falhar, pois o pom do Jenkins irá tentar baixar esses arquivos do repositório corporativo.
Copie os jars em src / main / resources / lib (crie a pasta lib). Eles farão parte do seu projeto e irão até o servidor de implantação. No servidor de implantação, certifique-se de que seus scripts de inicialização contenham src / main / resources / lib / * no classpath. Viola.
fonte
você pode instalá-los em um repositório local privado (por exemplo .m2 / repositório em seu diretório inicial): mais detalhes aqui
fonte
Se eu estou entendendo bem, se o que você quer fazer é exportar dependências durante a fase de compilação para que não haja necessidade de recuperar manualmente cada biblioteca necessária, você pode usar o mojo copy-dependencies .
Espero que possa ser útil no seu caso ( exemplos )
fonte
A solução da @Ric Jafe é o que funcionou para mim.
Isso é exatamente o que eu estava procurando. Uma maneira de enviá-lo para o código de teste de pesquisa. Nada chique. Sim, eu sei que isso é o que todos dizem :) As várias soluções de plug-ins do maven parecem ser exageradas para meus propósitos. Eu tenho alguns jars que foram dados a mim como libs de terceiros com um arquivo pom. Eu quero que ele compile / execute rapidamente. Esta solução que eu adaptei trivialmente para Python fez maravilhas para mim. Recortado e colado no meu pom. O código Python / Perl para esta tarefa está neste Q&A: Posso adicionar jars ao maven 2 build classpath sem instalá-los?
fonte
Continue a usá-los como uma dependência do sistema e copie-os para target /.../ WEB-INF / lib ... usando o plugin de dependência Maven:
http://maven.apache.org/plugins/maven-dependency-plugin/examples/copying-artifacts.html
fonte
Instalar sozinho não funcionou para mim.
fonte