Maven Build: Utilizar Jars externos

7 respostas
L

Bom dia a todos.

Estou com o seguinte problema relacionado ao processo de build de um projeto com o Maven.

Tenho uma aplicação JavaEE onde utilizo o Maven para gerenciar as dependências e gerar o pacote WAR para deploy.
Sempre funcionou OK, inclusive os testes automatizados com JUnit.

Contudo, necessitei adicionar Jars específicos que não estão em repositório.
Por ser uma aplicação WEB, adicionei os mesmos na pasta lib, dentro de WEB-INF.
Pro editor de códigos do Eclipse, tudo OK. Ele localiza as bibliotecas e não aparecem erros referentes à falta das classes.
Contudo, ao executar o pom para gerar o pacote da aplicação, o maven avisa que estão faltando as classes que estão dentro destes jars externos.

[INFO] Compiling 50 source files to /home/lennon/java_home/wrk_projetos_xxxxx/xxxxx/target/classes
[ERROR] 

Mojo: 

    org.apache.maven.plugins:maven-compiler-plugin:2.0.2:compile

FAILED for project: 

    br.com.xxxxx:xxxxxx:war:0.0.1

Reason:
/home/lennon/java_home/wrk_projetos_xxxxxx/xxxxxx.... does not exist

Alguém sabe como devo proceder para que o maven passe a enxergar os jars externos durante o build?

Abraços.

7 Respostas

M

Você precisa adiciona-los como dependência no pom.xml.

supondo que na sua pasta repository esteja assim: /repository/org.userjar/1.0/userjar-1.0.jar

aí vc coloca no xml:

<dependency>
      <groupId>org.userjar</groupId>
      <artifactId>userjar</artifactId>
      <version>1.0</version>
</dependency>
L

marcoswp3x:
Você precisa adiciona-los como dependência no pom.xml.

supondo que na sua pasta repository esteja assim: /repository/org.userjar/1.0/userjar-1.0.jar

aí vc coloca no xml:

<dependency>
      <groupId>org.userjar</groupId>
      <artifactId>userjar</artifactId>
      <version>1.0</version>
</dependency>


O detalhe é: estes jars não fazem parte do meu repositório.
Gostaria de adicioná-los sem que necessitassem ser parte do repositório.

Abraços.

A

Isso não existe para o Maven. TODOS os jars, mesmo os que vc não encontra em algum repositório na web, devem ser catalogados.
Esses jars “avulsos” devem ser catalogados no seu repositório local.

L

Taz:
lgi2020:

Gostaria de adicioná-los sem que necessitassem ser parte do repositório.

Isso não existe para o Maven. TODOS os jars, mesmo os que vc não encontra em algum repositório na web, devem ser catalogados.
Esses jars “avulsos” devem ser catalogados no seu repositório local.

Entendi…

Agradeço muito a informação.

Abraços.

R

Eu acho que tem como sim.
Tente dessa maneira

<dependency>
        <groupId>abc</groupId>
        <artifactId>bcd</artifactId>
        <version>1.0</version>
        <scope>system</scope>
        <systemPath>
            ${basedir}\seu_jar.jar
        </systemPath>
    </dependency>

Até.

M

Vc tem que “instalar” esses jars avulsos no seu repositório local.

Por exemplo, suponha que vc colocou o jar do jta 1.1 na sua aplicação, vc vai ter que colocar ele no seu repositório e depois no pom.xml da sua aplicação como dependência.

Supondo que o jar do jta seja o jta-1.1-classes.jar

Para instalar ele no seu repositório vc usa o comando

mvn install:install-file -DgroupId=javax.transaction -DartifactId=jta -Dversion=1.1 -Dpackaging=jar -Dfile=c:\path\to\jar\jta-1.1-classes.jar

no seu pom.xml, a dependencia fica assim:

<dependency>
            <groupId>javax.transaction</groupId>
            <artifactId>jta</artifactId>
            <version>1.1</version>
        </dependency>

ai quando vc fizer o seu build, o mavem vai colocar o jar junto.

peguei esse exemplo daqui: http://struts.apache.org/2.x/docs/struts-2-spring-2-jpa-ajax.html

[]'s

F

riccaio:
Eu acho que tem como sim.
Tente dessa maneira

&lt;dependency&gt;
        &lt;groupId&gt;abc&lt;/groupId&gt;
        &lt;artifactId&gt;bcd&lt;/artifactId&gt;
        &lt;version&gt;1.0&lt;/version&gt;
        &lt;scope&gt;system&lt;/scope&gt;
        &lt;systemPath&gt;
            ${basedir}\seu_jar.jar
        &lt;/systemPath&gt;
    &lt;/dependency&gt;

Até.

Dessa forma funciona. Eu uso assim tb. Tem casos que é necessário mesmo. Nesse ponto o ant se sai melhor :slight_smile:

Criado 23 de março de 2009
Ultima resposta 24 de out. de 2012
Respostas 7
Participantes 6