I have the follow problem:
I've created an application divided in three layers, every layer has his own maven project:
· Persistence layer has only entities and DAO classes
· Domain layer has the bussiness classes and WebServices
· UI layer has the WEB
Every layer is managed with maven, and Domain depends on Persistence layer
If I run the Persistence layer, everything works fine, as it should, (Running JUnit test)
But when I add the dependency in Domain layer, can't run throwing a PersistenceException, it seems as maven don't export the persistence to de Domain project.
This is the POM for Persistence layer:
<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>gamerscreed.rocketstats</groupId>
<artifactId>RocketStatsCore</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>RocketStatsCore</name>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.40</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.2.3.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.3.0.Final</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
<resources>
<resource>
<directory>src</directory>
<includes>
<include>META-INF/persistence.xml</include>
</includes>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
And this is the pom for Domain layer:
<?xml version="1.0" encoding="UTF-8"?> <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>gamerscreed.rocketstats</groupId>
<artifactId>RocketStatsDomain</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>RocketStatsDomain</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.5.RELEASE</version>
<relativePath />
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>gamerscreed.rocketstats</groupId>
<artifactId>RocketStatsCore</artifactId>
</dependency>
<dependency>
<groupId>gamerscreed.profiler</groupId>
<artifactId>GamersCreedShared</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>gamerscreed.rocketstats</groupId>
<artifactId>RocketStatsCore</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
</dependencyManagement>
And here is the Exception thrown:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'playerBusinessLayer' defined in file [C:\Users\Xelit3\Documents\Eclipse workspace\git\GamersCreed\RocketStatsDomain\target\classes\gamerscreed\rocketstats\domain\implementation\PlayerBusinessLayer.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [gamerscreed.rocketstats.domain.implementation.PlayerBusinessLayer]: Constructor threw exception; nested exception is javax.persistence.PersistenceException: No Persistence provider for EntityManager named RocketStats
I've see this thread but nothing here helped me:
Thanks in advance
EDIT: Added persistence.xml:
<?xml version="1.0" encoding="UTF-8" ?> <persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" version="2.0" xmlns="http://java.sun.com/xml/ns/persistence">
<persistence-unit name="RocketStats" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<class>gamerscreed.rocketstats.model.dto.Match</class>
<class>gamerscreed.rocketstats.model.dto.MatchResultPlayer</class>
<class>gamerscreed.rocketstats.model.dto.MatchResultPlayerPK</class>
<class>gamerscreed.rocketstats.model.dto.MatchType</class>
<class>gamerscreed.rocketstats.model.dto.Player</class>
<class>gamerscreed.rocketstats.model.dto.Result</class>
<class>gamerscreed.rocketstats.model.dto.Role</class>
<class>gamerscreed.rocketstats.model.dto.Team</class>
<class>gamerscreed.rocketstats.model.dto.Tournament</class>
<validation-mode>AUTO</validation-mode>
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.user" value="chustasoft" />
<property name="javax.persistence.jdbc.password" value="chustaK4" />
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/cs_rocketstats" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
<property name="hibernate.max_fetch_depth" value="3" />
<property name="show_sql" value="true"></property>
</properties>
</persistence-unit>