Hi Jörg,
You are right that the TCK was not designed for the RI to be run just
like any IUT, but only with the RI jars listed as dependencies. Since
this is a special case, the cleanest solution is probably to change the
dependencies in project.xml to name the DataNucleus version that you
want to run against and manually drop the jars into your local
repository. Also, instead of manually copying the jars you could change
maven.repo.remote in project.properties to list a URL from which the
jars could be downloaded by maven.
-- Michelle
Jörg von Frantzius wrote:
Hi,
again I'm stumbling on the problem of running the tck against
datanucleus as "implementation under test". Michelle had written previously:
From Michelle Caisse <mcai...@sonic.net>
Subject Re: runtck.iut
Date Fri, 03 Apr 2009 04:00:00 GMT
I just checked in a fix for this problem. When the tck datanucleus
dependencies change, both jdo.jdori.classpath in maven.xml and
iut.runtck.classpath in build.properties need to be updated in parallel.
The latter is used when runtck.iut is invoked.
-- Michelle
So I copied my datanucleus 1.1.4-snapshot jars to tck2/iut_jars and
changed tck2/build.properties as follows:
iut.runtck.classpath =
${jta.jarfile}${path.separator}${xmlparser}${path.separator}${asm.jarfile}${path.separator}${logging.log4j.jarfile}
Yet still I end up with datanucleus twice in the classpath, seemingly
because the RI is drawn in as a maven dependency:
[java] Exception in thread "main" Plugin (Bundle)
"org.datanucleus" is already registered. Ensure you dont have
multiple JAR versions of the same plugin in the classpath. The URL
"file:/home/joerg/jdo/trunk/tck2/iut_jars/datanucleus-core-1.1.4-SNAPSHOT.jar"
is already registered, and you are trying to register an identical
plugin located at URL
"file:/home/joerg/.maven/repository/org.datanucleus/jars/datanucleus-core-1.1-SNAPSHOT.jar."
[java] org.datanucleus.exceptions.NucleusException: Plugin
(Bundle) "org.datanucleus" is already registered. Ensure you dont
have multiple JAR versions of the same plugin in the classpath. The
URL
"file:/home/joerg/jdo/trunk/tck2/iut_jars/datanucleus-core-1.1.4-SNAPSHOT.jar"
is already registered, and you are trying to register an identical
plugin located at URL
"file:/home/joerg/.maven/repository/org.datanucleus/jars/datanucleus-core-1.1-SNAPSHOT.jar."
[java] at [..]
The only way around this probably is to overwrite the RI jars in the
local maven1 repo with the datanucleus 1.1.4-SNAPSHOT jars originating
from building with maven2, but using the maven1 names of the RI. That's
not a very clean approach, though...
I'm asking because maven1 build support has been dropped entirely from
datanucleus, so the jars cannot be put into the local maven1 repo by
simply building datanucleus (with maven1).
I don't know if conditional dependencies in maven1 are feasible at all?
With maven2, a clean way to do it would be profiles. Just to have
mentioned it ;)
Regards,
Jörg