Como resolver ProjectCycleException com Maven [RESOLVIDO]

Pessoal existe alguma alternativa para se resolver ProjectCycleException com maven?

Tenho um projeto que EJB na seguinte estrutura:

PAI
|EAR
|
EJB_1
|__ EJB_2
|__ EJB_3
|__ EJB_N +1
|__ WEB

O grande problema é que todos os EJB’s se comunicam com com todos os EJB’s causando a mensagem de erro: The cycle consists of projects e por mais que eu tente compilar utilizando a opção NON-RECURSIVE é gerado um ProjectCycleException. Alguém tem uma idéia de como pode ser resolvido isto?

Grato!

como esta seu application.xml e o pom?

Boa tarde,
Para resolver o problema de ProjectCycleException vc deve rever as depedencias entre os projetos verificar se cada EJB tem sua responsabilidade bem definida.
Esse é o famoso problema do ovo e da galinha … o projeto inicia desta forma e depois você tem muitos problemas.

[quote=tiozao_bp]Boa tarde,
Para resolver o problema de ProjectCycleException vc deve rever as depedencias entre os projetos verificar se cada EJB tem sua responsabilidade bem definida.
Esse é o famoso problema do ovo e da galinha … o projeto inicia desta forma e depois você tem muitos problemas.[/quote]

Ele não chega a criar o ear e por isso não chega a ter o application.xml

[quote=anderson.bonavides][quote=tiozao_bp]Boa tarde,
Para resolver o problema de ProjectCycleException vc deve rever as depedencias entre os projetos verificar se cada EJB tem sua responsabilidade bem definida.
Esse é o famoso problema do ovo e da galinha … o projeto inicia desta forma e depois você tem muitos problemas.[/quote]

Ele não chega a criar o ear e por isso não chega a ter o application.xml[/quote]

ta mais e o pom? como vc fez ele?

Sim claro, sem um pom não era nem reconhecido o projeto maven.
Essa é a estrutura que vc ta querendo saber:

PAI
| |EAR pom.xml
| |
EJB_1__pom.xml
| |
_ EJB_2__pom.xml
| |__ EJB_3__pom.xml
| |__ EJB_N +1 pom.xml
| |
_ WEB__pom.xml
|_pom.xml

O projeto foi montado por um Archetype, agora o motivo da exceção é que os projetos entram em um ciclo de compilação e dependência e acaba gerando o ProjectCycleException.

O problema n estara no Pom pai e sim nos modulos onde
M1 - Depende de M2
M2 - Depende de M1

Entao quando isso ocorre ou vc funde os 2 modulos ou atribui funcionalidade dependente ao modulo com maior afinidade.

Se seus problema esta relacionado a estas dependencias ciclicas da uma olhada em http://structure101.com/.
É uma ferramenta muito legal e ainda tem um trial de 30 dias.

[quote=tiozao_bp]O problema n estara no Pom pai e sim nos modulos onde
M1 - Depende de M2
M2 - Depende de M1

Entao quando isso ocorre ou vc funde os 2 modulos ou atribui funcionalidade dependente ao modulo com maior afinidade.[/quote]

Sim, isso mesmo tizão talvez não tenha sido claro na explicação mas foi exatamente isto que estou querendo falar. Vou dar uma olhada no projeto que vc falou.

Grato!

[quote=anderson.bonavides][quote=tiozao_bp]O problema n estara no Pom pai e sim nos modulos onde
M1 - Depende de M2
M2 - Depende de M1

Entao quando isso ocorre ou vc funde os 2 modulos ou atribui funcionalidade dependente ao modulo com maior afinidade.[/quote]

Sim, isso mesmo tizão talvez não tenha sido claro na explicação mas foi exatamente isto que estou querendo falar. Vou dar uma olhada no projeto que vc falou.

Grato! [/quote]

quando eu falo do pom… quero saber do pom do ear…

vc vai ter um POM pai… e dentro dele vai ter todos os outros filhos… vc criou um modulo pro ear? se criou quero ver como vc criou esse pom.xml do ear…

Segue o POM do projeto EAR:

[code]

<?xml version="1.0" encoding="UTF-8"?>


4.0.0
MODULO-EAR
ear

<parent>
	<!-- INFORMAÇÕES DO PARENT -->
</parent>

<properties>
	<project.build.sourceEncoding>ISO-8859-1</project.build.sourceEncoding>
</properties>

<dependencies>
	<dependency>
		<groupId>GRUP_ID</groupId>
		<artifactId>MODULO-WEB</artifactId>
		<type>war</type>
	</dependency>
	<dependency>
		<groupId>GRUP_ID</groupId>
		<artifactId>EJB_1</artifactId>
		<type>ejb</type>
	</dependency>
	<dependency>
		<groupId>GRUP_ID</groupId>
		<artifactId>EJB_2</artifactId>
		<type>ejb</type>
	</dependency>
	<dependency>
		<groupId>GRUP_ID</groupId>
		<artifactId>EJB_3</artifactId>
		<type>ejb</type>
	</dependency>
</dependencies>

<build>
	<finalName>NOME_PROJETO</finalName>
	<plugins>
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-ear-plugin</artifactId>
			<version>2.6</version>
			<configuration>
				<version>5</version>
				<defaultLibBundleDir>lib</defaultLibBundleDir>
				<modules></modules>
			</configuration>
		</plugin>
		<plugin>
			<groupId>org.jboss.as.plugins</groupId>
			<artifactId>jboss-as-maven-plugin</artifactId>
			<configuration>
				<skip>false</skip>
			</configuration>
		</plugin>
	</plugins>
</build>

<profiles>
	<profile>
		<id>openshift</id>
		<build>
			<plugins>
				<plugin>
					<artifactId>maven-ear-plugin</artifactId>
					<version>2.6</version>
					<configuration>
						<outputDirectory>deployments</outputDirectory>
					</configuration>
				</plugin>
			</plugins>
		</build>
	</profile>
</profiles>

[/code]

[quote=anderson.bonavides]Segue o POM do projeto EAR:

[code]

<?xml version="1.0" encoding="UTF-8"?>


4.0.0
MODULO-EAR
ear

<parent>
	<!-- INFORMAÇÕES DO PARENT -->
</parent>

<properties>
	<project.build.sourceEncoding>ISO-8859-1</project.build.sourceEncoding>
</properties>

<dependencies>
	<dependency>
		<groupId>GRUP_ID</groupId>
		<artifactId>MODULO-WEB</artifactId>
		<type>war</type>
	</dependency>
	<dependency>
		<groupId>GRUP_ID</groupId>
		<artifactId>EJB_1</artifactId>
		<type>ejb</type>
	</dependency>
	<dependency>
		<groupId>GRUP_ID</groupId>
		<artifactId>EJB_2</artifactId>
		<type>ejb</type>
	</dependency>
	<dependency>
		<groupId>GRUP_ID</groupId>
		<artifactId>EJB_3</artifactId>
		<type>ejb</type>
	</dependency>
</dependencies>

<build>
	<finalName>NOME_PROJETO</finalName>
	<plugins>
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-ear-plugin</artifactId>
			<version>2.6</version>
			<configuration>
				<version>5</version>
				<defaultLibBundleDir>lib</defaultLibBundleDir>
				<modules></modules>
			</configuration>
		</plugin>
		<plugin>
			<groupId>org.jboss.as.plugins</groupId>
			<artifactId>jboss-as-maven-plugin</artifactId>
			<configuration>
				<skip>false</skip>
			</configuration>
		</plugin>
	</plugins>
</build>

<profiles>
	<profile>
		<id>openshift</id>
		<build>
			<plugins>
				<plugin>
					<artifactId>maven-ear-plugin</artifactId>
					<version>2.6</version>
					<configuration>
						<outputDirectory>deployments</outputDirectory>
					</configuration>
				</plugin>
			</plugins>
		</build>
	</profile>
</profiles>

[/code][/quote]

em baixo do do plugin do ear
coloca

[code]
true


${project.groupId}
projetoweb
/projetoweb


${project.groupId}
ejb

[/code]

é isso que precisa ser feito para ser gerado o application.xml

ele gera o application.xml, ele só não ta gerando por conta do problema ciclico de projetos EJBs que dependem um do outro. Estou com um projeto menor na mesma estrutura que gera o application.xml corretamente.

vc ja identificou quem esta com esse relacionamento ciclico?

Todos os EJB tem esse relacionamento ciclico, é um projeto web comum o qual estou transformando em um projeto maven.

é complicado… bom se eu estivesse com esse problema criaria um novo modulo maven, e colocaria todos os dependentes comum lá… ou iria rever como esta fazendo e dependendo mover classes de um modulo para outro…

nao tem como mover algumas classes para outro modulo?

Sim, as classes comuns estão em um projeto separado, mas o grande problema é que os EJBs acessam servidos dos outros EJBs. Uma possível solução seria um projeto único EJB e depois realizar alguma forma de cada pacote gerar o seu arquivo JAR separado.

todos ejb se comunicam entre si? é essa situação? ou tem um certo ejb que todos precisam acessar?

todos ejb se comunicam entre si? é essa situação? ou tem um certo ejb que todos precisam acessar?[/quote]

Todos se comunicam entre si.

todos ejb se comunicam entre si? é essa situação? ou tem um certo ejb que todos precisam acessar?[/quote]

Todos se comunicam entre si.[/quote]

tem um jeito… mas vc vai ter que migrar tudo para @remote… e criar um ear para cada ejb… pq local ta dificil uma solução facil…
vou perguntar a uns conhecidos o que eles recomendam…