forçar o Maven a copiar dependencies no target / lib

Como faço para que as dependencies de tempo de execução do meu projeto sejam copiadas para a pasta target/lib ?

Como está agora, após a mvn clean install do mvn clean install a pasta de target contém apenas o jar do meu projeto, mas nenhuma das dependencies do tempo de execução.

    Isso funciona para mim:

      ...   qa    maven-dependency-plugin   install  copy-dependencies   ${project.build.directory}/lib          

    A melhor abordagem depende do que você deseja fazer:

    • Se você deseja empacotar suas dependencies em um arquivo WAR ou EAR, simplesmente configure o tipo de empacotamento de seu projeto para EAR ou WAR. O Maven agrupará as dependencies no local correto.
    • Se você deseja criar um arquivo JAR que inclua seu código junto com todas as suas dependencies, use o plug-in de assembly com o descritor jar-with-dependencies . O Maven irá gerar um arquivo JAR completo com todas as suas classs, além das classs de quaisquer dependencies.
    • Se você quiser simplesmente colocar suas dependencies no diretório de destino interativamente, use o plugin de dependência para copiar seus arquivos.
    • Se você quiser extrair as dependencies de algum outro tipo de processamento, provavelmente precisará gerar seu próprio plugin. Existem APIs para obter a lista de dependencies e sua localização no disco. Você terá que tirar isso de lá …
     mvn install dependency:copy-dependencies 

    Funciona para mim com o diretório de dependencies criado na pasta de destino. Gosto disso!

    Dê uma olhada no plug-in de dependência do Maven , especificamente, a dependência: meta de dependencies de cópia . Dê uma olhada no exemplo sob o título O dependency: dependencies de cópia mojo . Defina a propriedade de configuração outputDirectory como $ {basedir} / target / lib (acredito, você terá que testar).

    Espero que isto ajude.

    Uma solução simples e elegante para o caso em que é necessário copiar as dependencies para um diretório de destino sem usar nenhuma outra fase do maven (achei isso muito útil ao trabalhar com o Vaadin).

    Exemplo completo de pom:

      4.0.0 groupId artifactId 1.0   org.mybatis mybatis-spring 1.1.1      maven-dependency-plugin   process-sources  copy-dependencies   ${targetdirectory}        

    Em seguida, execute mvn process-sources

    As dependencies do arquivo jar podem ser encontradas em /target/dependency

    Se você quiser fazer isso de forma ocasional (e, portanto, não quer mudar o seu POM), tente esta linha de comando:

      Dependência mvn: copy-dependencies -DoutputDirectory = $ {project.build.directory} / lib 

    Se você omitir o último argumento , as dependencies serão colocadas no target/dependencies .

    Tente algo assim:

      org.apache.maven.plugins maven-jar-plugin 2.4    true lib/ MainClass      org.apache.maven.plugins maven-dependency-plugin 2.4   copy install  copy-dependencies    ${project.build.directory}/lib      

    Tudo o que você precisa é o seguinte snippet dentro dos build/plugins do pom.xml:

      maven-dependency-plugin   prepare-package  copy-dependencies   ${project.build.directory}/lib     

    O acima será executado na fase de package quando você executar

     mvn clean package 

    E as dependencies serão copiadas para o outputDirectory especificado no snippet, ou seja, lib neste caso.

    Se você quiser fazer isso ocasionalmente, não será necessário fazer alterações em pom.xml. Basta executar o seguinte:

     mvn clean package dependency:copy-dependencies 

    Para replace o local padrão, que é ${project.build.directory}/dependencies , inclua uma propriedade System denominada outputDirectory , ie

      -DoutputDirectory=${project.build.directory}/lib 

    supondo

    • você não quer alterar o pom.xml
    • você não quer escopo de teste (por exemplo, junit.jar) ou dependencies fornecidas (por exemplo, wlfullclient.jar)

    aqui está o que funcionou para mim:

     mvn install dependência: copy-dependencies -DincludeScope = tempo de execução -DoutputDirectory = target / lib
    

    Se você quiser entregar um pacote do seu aplicativo jar, junto com todas as dependencies e alguns scripts para chamar o MainClass, consulte o appassembler-maven-plugin .

    A seguinte configuração irá gerar scripts para Window e Linux para iniciar o aplicativo (com um caminho gerado referenciando todos os jars de dependência, baixe todas as dependencies (em uma pasta lib abaixo de target / appassembler). O plugin assembly pode então ser usado para empacotar todo diretório appassembler para um zip que é instalado / implementado junto com o jar no repository.

       org.codehaus.mojo appassembler-maven-plugin 1.0   generate-jsw-scripts package  generate-daemons      myApp name.seller.rich.MyMainClass  start   jsw    ${project.build.directory}/appassembler    assemble-standalone integration-test  assemble     name.seller.rich.MyMainClass  mymain    windows unix  flat lib      maven-assembly-plugin 2.2-beta-4   integration-test  single    src/main/assembly/archive.xml      

    O descritor de assembly (em src / main / assembly) para empacotar o direcotry como um zip seria:

      archive  zip    ${project.build.directory}/appassembler /    

    Se você fizer do seu projeto uma guerra ou um tipo de ouvido, copiará as dependencies.

    Você pode usar o Shade Plugin para criar um jar em que você pode agrupar todas as suas dependencies de terceiros.

    Apenas para soletrar o que já foi dito em breve. Eu queria criar um arquivo JAR executável que incluísse minhas dependencies junto com meu código. Isso funcionou para mim:

    (1) No pom, sob , incluí:

      maven-assembly-plugin 2.2-beta-5    dk.certifikat.oces2.some.package.MyMainClass    jar-with-dependencies    

    (2) Executando o assembly de compilation mvn: o assembly produziu o desejado my-project-0.1-SNAPSHOT-jar-with-dependencies.jar no diretório de destino do projeto.

    (3) Eu corri o JAR com java -jar meu-projeto-0.1-SNAPSHOT-jar-with-dependencies.jar

    É uma solução pesada para incorporar dependencies pesadas, mas o Plugin de Montagem do Maven faz o truque para mim.

    Resposta @ Rich vendedor deve funcionar, embora para casos mais simples, você só precisa deste trecho do guia de uso :

         maven-assembly-plugin 2.2.2   jar-with-dependencies       

    Se você está tendo problemas relacionados a dependencies que não aparecem no arquivo WEB-INF / lib ao executar em um servidor Tomcat no Eclipse, dê uma olhada nisso:

    ClassNotFoundException DispatcherServlet ao iniciar o Tomcat (dependencies do Maven não copiadas para o wtpwebapps)

    Você simplesmente tinha que adicionar as Dependências do Maven em Propriedades do Projeto> Montagem de Implantação.

      4.0.0 com.edge STORM2 0.0.1-SNAPSHOT jar STORM2 http://maven.apache.org  UTF-8       maven-assembly-plugin    com.edge.STORM2.LogAnalyserStorm    jar-with-dependencies        junit junit 3.8.1 test   org.apache.storm storm-core 1.1.1 provided    

    @john Este é meu pom, estou faltando alguma coisa? as dependencies jar-com criadas, não contêm nenhuma class lib ou jar