Projetos com dependências erro Maven

Tenho dois projetos Projeto A e Projeto B. O projeto B depende do projeto A. Fiz uma alteração no projeto A, mas continuo usando a versão antiga do projeto A no projeto B. O que acontece é que o projeto B mesmo usando a versão antiga do jar do projeto A ele não sobe no JBoss AS 7.2 porque ele fica requisitando as alterações feitas na nova versão a qual não estou usando. Não entendo o porque.

Ambos estão abertos no seu Eclipse? Se sim, valide no projeto A na lista de dependências do Maven no próprio Eclipse se ele aponta para o projeto B aberto ou para o arquivo .jar do projeto B.

Se apontar para o projeto B aberto, ponha um breakpoint no trecho do código que você modificou para verificarmos se a alteração está lá, se não compile novamente o Projeto B dando um “clean install” do Maven, para que suas alterações subam ao repository local.

É possível que no seu repository você ainda esteja com a versão antiga do Projeto B.

Mas eu quero continuar usando a versão antiga, mas da erro. E verifiquei aqui ele não aponta para a versão nova não, por isso achei estranho, quero continuar usando a versão antiga e ele da o seguinte erro

11:41:27,026 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-5) MSC00001: Failed to start service jboss.deployment.unit."sinup.war".POST_MODULE: org.jboss.msc.service.StartException in service jboss.deployment.unit."sinup.war".POST_MODULE: JBAS018733: Failed to process phase POST_MODULE of deployment "sinup.war" at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:127) [jboss-as-server-7.2.0.Final.jar:7.2.0.Final] at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.4.GA.jar:1.0.4.GA] at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.4.GA.jar:1.0.4.GA] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_80] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_80] at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_80] Caused by: java.lang.RuntimeException: JBAS018757: Error getting reflective information for class br.unb.web.pessoa.negocio.EnderecoNegocioImpl with ClassLoader ModuleClassLoader for Module "deployment.sinup.war:main" from Service Module Loader at org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:72) [jboss-as-server-7.2.0.Final.jar:7.2.0.Final] at org.jboss.as.ee.metadata.MethodAnnotationAggregator.runtimeAnnotationInformation(MethodAnnotationAggregator.java:58) at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.handleAnnotations(InterceptorAnnotationProcessor.java:107) at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.processComponentConfig(InterceptorAnnotationProcessor.java:92) at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.deploy(InterceptorAnnotationProcessor.java:77) at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:120) [jboss-as-server-7.2.0.Final.jar:7.2.0.Final] ... 5 more Caused by: java.lang.NoClassDefFoundError: Lbr/unb/web/sitab/negocio/ManterBairroNegocio; at java.lang.Class.getDeclaredFields0(Native Method) [rt.jar:1.7.0_80] at java.lang.Class.privateGetDeclaredFields(Class.java:2509) [rt.jar:1.7.0_80] at java.lang.Class.getDeclaredFields(Class.java:1819) [rt.jar:1.7.0_80] at org.jboss.as.server.deployment.reflect.ClassReflectionIndex.<init>(ClassReflectionIndex.java:57) [jboss-as-server-7.2.0.Final.jar:7.2.0.Final] at org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:68) [jboss-as-server-7.2.0.Final.jar:7.2.0.Final] ... 10 more Caused by: java.lang.ClassNotFoundException: br.unb.web.sitab.negocio.ManterBairroNegocio from [Module "deployment.sinup.war:main" from Service Module Loader] at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190) [jboss-modules.jar:1.2.0.CR1] at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468) [jboss-modules.jar:1.2.0.CR1] at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456) [jboss-modules.jar:1.2.0.CR1] at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398) [jboss-modules.jar:1.2.0.CR1] at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120) [jboss-modules.jar:1.2.0.CR1] ... 15 more

o sinup.war é o projeto principal ou o secundário?

O Sinup é o projeto que usa o Sitab no caso e não quero atualizar o jar do sitab no sinup, mas preciso atualizar o projeto Sitab para utilizar em outro projeto.

Então o que está ocorrendo é isso. Seu POM do snup deve estar apontando para uma versão X.X do Sitab.

Por exemplo, antes de alterar o SITAB ele deveria ter no seu pom.xml algo como:

<groupId>com.mycompany.app</groupId> <artifactId>my-app</artifactId> <version>1.0</version> <packaging>jar</packaging>

Quando você executa o comando “clean install” o maven instala esse app no seu repository em um diretório {maven_repo}/com/mycompany/app/1.0

Assim quando você colocar a dependência desse jar apontando para a versão 1.0 do SITAB, ele vai buscar essa versão.

Então você faz a sua alteração mais nova e antes de executar o comando “clean install” você deve alterar a versão no seu POM para

<groupId>com.mycompany.app</groupId> <artifactId>my-app</artifactId> <version>1.1</version> <!-- OU QUALQUER NUMERO QUE SEJA SUA NOVA VERSÃO --> <packaging>jar</packaging>

E após executar o comando “clean install” você terá em seu repository o seguinte:

{maven_repo}

  • /com/mycompany/app/1.0
  • /com/mycompany/app/1.1

Então para alternar entre as versões da dependência você (no sinup) decide para qual das versões do SITAB deve apontar

ASSIM:
<dependency> <groupId>com.mycompany.app</groupId> <artifactId>my-app</artifactId> <version>1.0</version> </dependency>

OU ASSIM:
<dependency> <groupId>com.mycompany.app</groupId> <artifactId>my-app</artifactId> <version>1.1</version> </dependency>

Sendo que o primeiro vai trazer a primeira versão do seu código sem a alteração e a segunda trará sua alteração.

Se seu problema for apenas versão do Maven e gerenciar as dependências, creio que isso possa ajudar, se não for, vamos continuar analisando.

Espero ter ajudado. Abraços :wink: