I have two persistence.xml files, for the sake of testing:
src/main/resources/META-INF/persistence.xmlsrc/test/resources/META-INF/persistence.xml
How to instruct Maven to ignore the first file during testing? Now it is not ignored since OpenEJB says:
ERROR - FAIL ... Finder: @PersistenceContext unitName has multiple matches:
unitName "abc" has 2 possible matches.
Check out the alternate descriptors functionality which is aimed at what you’re trying to do.
Try this setup:
src/main/resources/META-INF/persistence.xmlsrc/main/resources/META-INF/test.persistence.xmlThen you can construct OpenEJB to prefer the
test.persistence.xmlfile by setting theopenejb.altdd.prefixSystem or InitialContext property totestA different possible solution could be to override the persistence unit properties in the test. With that approach you could avoid the need for a second
persistence.xmlwhich can be nice as maintaining two can be a pain.You can use the Maven approach, but be aware that per spec the persistence provider will only look (aka scan) for
@Entitybeans in the exact jar or directory where thepersistence.xmlis found. So be keenly aware that in Maven these are two different locations:target/classestarget/test-classesEDIT More details on the overriding capabilities
You can override any property in your test setup via either system properties or the initial context properties (this includes jndi.properties files). The format is:
So for example with the following
persistence.xml:You can override and add persistence unit properties in your test case. There are currently no facilities for removing them (if you have a need for that let us know – it hasn’t really come up so far).
Or alternatively via a
jndi.propertiesfile