Dependencia no maven

11 respostas
R

Pessoal, estou aprendendo a usar o maven2 e estou parado num teste que fiz

Quero testar o uso de dependencia de um outro projeto criado por mim.
Fiz o seguinte:

  1. Criei o projeto DependencyTest que tem apenas a classe SimpleBusiness com o metedo getString
  2. Coloquei este projeto no repositório local
  3. Adicionei o DependencyTest no pom.xml do projeto que irá usar esta dependência

Porém quando dou um Update dependences no eclipse ele não joga o .jar do DependencyTest para o diretótio WEB-INF/lib
joga apenas naquele target/MyProject/WEB-INF/lib

Resultado, qdo quero usar a Classe SimpleBusiness o eclipse nem encontra, pois não está no web-inf

O que será que faltou eu fazer para a lib ser jogada no /lib ???

11 Respostas

D

Coloca o pom.xml do projeto de teste e o pom.xml do projeto que irá usar a dependencia ai.

N

se ele soh ta colocando na pasta target deve ser pq vc especificou a dependencia com runtime :stuck_out_tongue:

coloca ela como compile e seja feliz ^^

R

Ok, segue os 2 pom.xml

Projeto: DependencyTest
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>br.com.dependency</groupId>
  <artifactId>DependencyTest</artifactId>
  <version>0.0.1</version>
</project>
Projeto: Project
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>br.com.project</groupId>
    <artifactId>PaggoMaven</artifactId>
    <version>0.0.1</version>
    <packaging>war</packaging>
    <name>First Maven Project</name>
    <build>
    
        <finalName>${project.artifactId}</finalName>
        
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>jboss-maven-plugin</artifactId>
                <version>1.4</version>
                <configuration>
                    <jbossHome>C:\jboss-4.2.3.GA</jbossHome>
                    <serverName>default</serverName>
                    <fileName>target/${project.artifactId}.war</fileName>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate</artifactId>
            <version>3.2.7.ga</version>
        </dependency>
        <dependency>
            <groupId>javax.transaction</groupId>
            <artifactId>jta</artifactId>
            <version>1.1</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.11</version>
            <type>jar</type>
            <scope>runtime</scope>
        </dependency>
        <dependency>
        	<groupId>br.com.dependency</groupId>
        	<artifactId>DependencyTest</artifactId>
        	<version>0.0.1</version>
        </dependency>
    </dependencies>
</project>

Eu já tentei colocar esta dependencia como compile, provided, system, import
mas não mesmo assim o .jar não vai pro /lib e assim não consigo encontrar a classe....
O curioso é que o driver do mysql tb não vai pro /lib mas funciona qdo rodo no jboss

D

Cara tenta executar o seguinte comando sobre o projeto

mvn eclipse:eclipse -Dwtpversion=1.0

Ele vai gerar o projeto do eclipse colocando o jar nas dependencias, porém não jogará na web-inf\lib por não haver necessidade em desenvolvimento.
Ele só irá colocar no web-inf\lib quando gerar o pacote (dependendo do esquema que vc usar)

R

Então realmente está confuso, pois depois de empacotado o arquivo é colocado no WEB-INF/lib
Mas o problema é que eu não posso usar a classe SimpleBusiness que está dentro da dependencia
Se eu usá-la no código, o eclipse já diz que não existe e nem deixa empacotar
ele só deixa empacotar essa lib qdo eu não a classe constante nela em nenhuma parte do código

Deve ter algum detalhe que realmente não sei o que pode ser
talvez eu deva colocar algum plugin do maven no pom.xml???

D

Então se você executar o comando que eu te passei o maven vai gerar o projeto do eclipse com as libs lá dentro

R

entendi cara,
então assim deve ficar legal

é que pensei que fazendo um Run as/build ou install ou um Maven/update dependencies ele já faria isso
sinal que esse plugin do eclipse não faz tudo então

vou testar isso hoje a noite então, depois falo no que deu

abraços

D

Você deve estar falando do plugin de maven para o eclipse, bom ai não sei como ele funciona nunca usei, e te digo mais, acho que não é necessário mesmo.

R

Cara, deu certo… agora eu consigo programar com a classe do projeto da dependencia
mas está me gerando outro erro
toda vez que rodo o comando mvn eclipse:eclipse -Dwtpversion=1.0
aparece o erro no projeto:
Java compiler level does not match the version of the installed Java project facet.

Daí eu altero o Java Facets pra 6.0 mas qdo rodo esse comando, volta pra 1.4 e fica com erro

até mais

D

tenta por isso no seu codigo:

&lt;plugin&gt; &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt; &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt; &lt;version&gt;2.0.2&lt;/version&gt; &lt;configuration&gt; &lt;source&gt;1.6&lt;/source&gt; &lt;target&gt;1.6&lt;/target&gt; &lt;/configuration&gt; &lt;/plugin&gt;

R

é cara, deu certo =]
preciso ler depois sobre esse plugin
mas presumo que diz qual a versão do java que deve usar para compilar o projeto, certo?

valeeu

Criado 14 de março de 2010
Ultima resposta 18 de mar. de 2010
Respostas 11
Participantes 3