You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by Jeremy Boynes <jb...@apache.org> on 2006/07/12 04:32:25 UTC
JAXB databinding - problem with test code leaking into output jar
The JAXB databinding attaches the jaxb plugin to the generate sources
phase and this results in the test code ending up in the output jar:
$ jar tf target/databinding-jaxb-1.0-chianti-SNAPSHOT.jar
META-INF/
META-INF/MANIFEST.MF
com/
com/example/
com/example/ipo/
com/example/ipo/jaxb/
org/
org/apache/
org/apache/tuscany/
org/apache/tuscany/databinding/
org/apache/tuscany/databinding/jaxb/
com/example/ipo/jaxb/Address.class
com/example/ipo/jaxb/Items$Item.class
com/example/ipo/jaxb/Items.class
com/example/ipo/jaxb/ObjectFactory.class
com/example/ipo/jaxb/package-info.class
com/example/ipo/jaxb/PurchaseOrderType.class
com/example/ipo/jaxb/UKAddress.class
com/example/ipo/jaxb/USAddress.class
com/example/ipo/jaxb/USState.class
org/apache/tuscany/databinding/jaxb/JAXB2Node.class
org/apache/tuscany/databinding/jaxb/Node2JAXB.class
org/apache/tuscany/databinding/jaxb/XMLStreamReader2JAXB.class
META-INF/maven/
META-INF/maven/org.apache.tuscany.databinding/
META-INF/maven/org.apache.tuscany.databinding/databinding-jaxb/
META-INF/maven/org.apache.tuscany.databinding/databinding-jaxb/pom.xml
META-INF/maven/org.apache.tuscany.databinding/databinding-jaxb/
pom.properties
If I change the pom to attach this to the generate-test-sources phase:
$ svn diff pom.xml
Index: pom.xml
===================================================================
--- pom.xml (revision 421082)
+++ pom.xml (working copy)
@@ -100,7 +100,7 @@
<executions>
<execution>
<id>generate-jaxb</id>
- <phase>generate-sources</phase>
+ <phase>generate-test-sources</phase>
<goals>
<goal>generate</goal>
</goals>
then I get an error running the tests:
$ mvn -o clean test
[INFO]
NOTE: Maven is executing in offline mode. Any artifacts not already
in your local
repository will be inaccessible.
[INFO] Scanning for projects...
[INFO]
------------------------------------------------------------------------
----
[INFO] Building Tuscany JAXB Data Binding
[INFO] task-segment: [clean, test]
[INFO]
------------------------------------------------------------------------
----
[INFO] [clean:clean]
[INFO] Deleting directory /Users/jboynes/tuscany/sandbox/chianti/sca/
databinding/databinding-jaxb/target
[INFO] Deleting directory /Users/jboynes/tuscany/sandbox/chianti/sca/
databinding/databinding-jaxb/target/classes
[INFO] Deleting directory /Users/jboynes/tuscany/sandbox/chianti/sca/
databinding/databinding-jaxb/target/test-classes
[INFO] [resources:resources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:compile]
Compiling 3 source files to /Users/jboynes/tuscany/sandbox/chianti/
sca/databinding/databinding-jaxb/target/classes
[INFO] [jaxb:generate {execution: generate-jaxb}]
[INFO] /Users/jboynes/tuscany/sandbox/chianti/sca/databinding/
databinding-jaxb/target/jaxb-source/com/example/ipo/jaxb is not found
and thus excluded from the dependency check
[INFO] Compiling file:/Users/jboynes/tuscany/sandbox/chianti/sca/
databinding/databinding-jaxb/src/test/resources/ipo.xsd
[INFO] Writing output to /Users/jboynes/tuscany/sandbox/chianti/sca/
databinding/databinding-jaxb/target/jaxb-source
[INFO] [resources:testResources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:testCompile]
Compiling 1 source file to /Users/jboynes/tuscany/sandbox/chianti/sca/
databinding/databinding-jaxb/target/test-classes
[INFO] [surefire:test]
[INFO] Surefire report directory: /Users/jboynes/tuscany/sandbox/
chianti/sca/databinding/databinding-jaxb/target/surefire-reports
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running org.apache.tuscany.databinding.jaxb.JAXBTestCase
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.083
sec <<< FAILURE!
testTransform(org.apache.tuscany.databinding.jaxb.JAXBTestCase) Time
elapsed: 0.041 sec <<< ERROR!
javax.xml.bind.JAXBException: "com.example.ipo.jaxb" doesnt contain
ObjectFactory.class or jaxb.index
at com.sun.xml.bind.v2.ContextFactory.createContext
(ContextFactory.java:119)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at javax.xml.bind.ContextFinder.newInstance
(ContextFinder.java:132)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:286)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:372)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:337)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:244)
at
org.apache.tuscany.databinding.jaxb.JAXBTestCase.testTransform
(JAXBTestCase.java:48)
Results :
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0
[INFO]
------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO]
------------------------------------------------------------------------
[INFO] There are test failures.
[INFO]
------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO]
------------------------------------------------------------------------
[INFO] Total time: 5 seconds
[INFO] Finished at: Tue Jul 11 19:29:45 PDT 2006
[INFO] Final Memory: 6M/15M
[INFO]
------------------------------------------------------------------------
Could someone more familiar with this plugin tell me what is going
wrong and how we can avoid have the test code in the output jar?
Thanks
--
Jeremy
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-dev-help@ws.apache.org
Re: [PATCH] Re: JAXB databinding - problem with test code leaking into output jar
Posted by Jeremy Boynes <jb...@apache.org>.
On Jul 12, 2006, at 12:38 PM, Raymond Feng wrote:
> Hi,
>
> After more investigation, I found the patch doesn't fix the problem
> completely. Now the testSourceDirectory is switched and test cases
> in the test/src/java folder cannot be detected by Surefire plugin
> any more. The key question is that if maven 2 supports more than
> one test source folders. The result from google search is not very
> promising.
>
> One work around to this issue is to have generated code placed in
> src/test/java. But it's not very nice.
m2 does support multiple (main) source folders as this is used by
other code generators to generate main-line code. The generator mojo
is responsible for adding the root of its generated code to the set
of source folders.
I think the same function is there in m2 for test source folders.
However, it may be that the plugin is not able to do that. I would
suggest asking on the plugin's dev list (or use the source) if this
is something it supports.
--
Jeremy
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-dev-help@ws.apache.org
Re: [PATCH] Re: JAXB databinding - problem with test code leaking into output jar
Posted by Raymond Feng <en...@gmail.com>.
Hi,
After more investigation, I found the patch doesn't fix the problem
completely. Now the testSourceDirectory is switched and test cases in the
test/src/java folder cannot be detected by Surefire plugin any more. The key
question is that if maven 2 supports more than one test source folders. The
result from google search is not very promising.
One work around to this issue is to have generated code placed in
src/test/java. But it's not very nice.
Thanks,
Raymond
----- Original Message -----
From: "Jeremy Boynes" <jb...@apache.org>
To: <tu...@ws.apache.org>
Sent: Wednesday, July 12, 2006 6:26 AM
Subject: Re: [PATCH] Re: JAXB databinding - problem with test code leaking
into output jar
> On Jul 11, 2006, at 11:18 PM, Raymond Feng wrote:
>
>> Hi,
>>
>> Here's the patch to fix this problem. I'll adjust for other projects
>> later on.
>>
>
> Thanks Raymond, worked like a charm.
> --
> Jeremy
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
> For additional commands, e-mail: tuscany-dev-help@ws.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-dev-help@ws.apache.org
Re: [PATCH] Re: JAXB databinding - problem with test code leaking into output jar
Posted by Jeremy Boynes <jb...@apache.org>.
On Jul 11, 2006, at 11:18 PM, Raymond Feng wrote:
> Hi,
>
> Here's the patch to fix this problem. I'll adjust for other
> projects later on.
>
Thanks Raymond, worked like a charm.
--
Jeremy
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-dev-help@ws.apache.org
[PATCH] Re: JAXB databinding - problem with test code leaking into output jar
Posted by Raymond Feng <en...@gmail.com>.
Hi,
Here's the patch to fix this problem. I'll adjust for other projects later
on.
Thanks,
Raymond
----- Original Message -----
From: "Jeremy Boynes" <jb...@apache.org>
To: <tu...@ws.apache.org>
Sent: Tuesday, July 11, 2006 7:32 PM
Subject: JAXB databinding - problem with test code leaking into output jar
> The JAXB databinding attaches the jaxb plugin to the generate sources
> phase and this results in the test code ending up in the output jar:
> $ jar tf target/databinding-jaxb-1.0-chianti-SNAPSHOT.jar
> META-INF/
> META-INF/MANIFEST.MF
> com/
> com/example/
> com/example/ipo/
> com/example/ipo/jaxb/
> org/
> org/apache/
> org/apache/tuscany/
> org/apache/tuscany/databinding/
> org/apache/tuscany/databinding/jaxb/
> com/example/ipo/jaxb/Address.class
> com/example/ipo/jaxb/Items$Item.class
> com/example/ipo/jaxb/Items.class
> com/example/ipo/jaxb/ObjectFactory.class
> com/example/ipo/jaxb/package-info.class
> com/example/ipo/jaxb/PurchaseOrderType.class
> com/example/ipo/jaxb/UKAddress.class
> com/example/ipo/jaxb/USAddress.class
> com/example/ipo/jaxb/USState.class
> org/apache/tuscany/databinding/jaxb/JAXB2Node.class
> org/apache/tuscany/databinding/jaxb/Node2JAXB.class
> org/apache/tuscany/databinding/jaxb/XMLStreamReader2JAXB.class
> META-INF/maven/
> META-INF/maven/org.apache.tuscany.databinding/
> META-INF/maven/org.apache.tuscany.databinding/databinding-jaxb/
> META-INF/maven/org.apache.tuscany.databinding/databinding-jaxb/pom.xml
> META-INF/maven/org.apache.tuscany.databinding/databinding-jaxb/
> pom.properties
>
> If I change the pom to attach this to the generate-test-sources phase:
> $ svn diff pom.xml
> Index: pom.xml
> ===================================================================
> --- pom.xml (revision 421082)
> +++ pom.xml (working copy)
> @@ -100,7 +100,7 @@
> <executions>
> <execution>
> <id>generate-jaxb</id>
> - <phase>generate-sources</phase>
> + <phase>generate-test-sources</phase>
> <goals>
> <goal>generate</goal>
> </goals>
>
> then I get an error running the tests:
> $ mvn -o clean test
> [INFO]
> NOTE: Maven is executing in offline mode. Any artifacts not already in
> your local
> repository will be inaccessible.
>
> [INFO] Scanning for projects...
>
> INFO] ------------------------------------------------------------------------
> ----
> [INFO] Building Tuscany JAXB Data Binding
> [INFO] task-segment: [clean, test]
>
> INFO] ------------------------------------------------------------------------
> ----
> [INFO] [clean:clean]
> [INFO] Deleting directory /Users/jboynes/tuscany/sandbox/chianti/sca/
> databinding/databinding-jaxb/target
> [INFO] Deleting directory /Users/jboynes/tuscany/sandbox/chianti/sca/
> databinding/databinding-jaxb/target/classes
> [INFO] Deleting directory /Users/jboynes/tuscany/sandbox/chianti/sca/
> databinding/databinding-jaxb/target/test-classes
> [INFO] [resources:resources]
> [INFO] Using default encoding to copy filtered resources.
> [INFO] [compiler:compile]
> Compiling 3 source files to /Users/jboynes/tuscany/sandbox/chianti/
> sca/databinding/databinding-jaxb/target/classes
> [INFO] [jaxb:generate {execution: generate-jaxb}]
> [INFO] /Users/jboynes/tuscany/sandbox/chianti/sca/databinding/
> databinding-jaxb/target/jaxb-source/com/example/ipo/jaxb is not found and
> thus excluded from the dependency check
> [INFO] Compiling file:/Users/jboynes/tuscany/sandbox/chianti/sca/
> databinding/databinding-jaxb/src/test/resources/ipo.xsd
> [INFO] Writing output to /Users/jboynes/tuscany/sandbox/chianti/sca/
> databinding/databinding-jaxb/target/jaxb-source
> [INFO] [resources:testResources]
> [INFO] Using default encoding to copy filtered resources.
> [INFO] [compiler:testCompile]
> Compiling 1 source file to /Users/jboynes/tuscany/sandbox/chianti/sca/
> databinding/databinding-jaxb/target/test-classes
> [INFO] [surefire:test]
> [INFO] Surefire report directory: /Users/jboynes/tuscany/sandbox/
> chianti/sca/databinding/databinding-jaxb/target/surefire-reports
>
> -------------------------------------------------------
> T E S T S
> -------------------------------------------------------
> Running org.apache.tuscany.databinding.jaxb.JAXBTestCase
> Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.083 sec
> <<< FAILURE!
> testTransform(org.apache.tuscany.databinding.jaxb.JAXBTestCase) Time
> elapsed: 0.041 sec <<< ERROR!
> javax.xml.bind.JAXBException: "com.example.ipo.jaxb" doesnt contain
> ObjectFactory.class or jaxb.index
> at com.sun.xml.bind.v2.ContextFactory.createContext
> (ContextFactory.java:119)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke
> (NativeMethodAccessorImpl.java:39)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke
> (DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at javax.xml.bind.ContextFinder.newInstance
> (ContextFinder.java:132)
> at javax.xml.bind.ContextFinder.find(ContextFinder.java:286)
> at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:372)
> at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:337)
> at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:244)
> at org.apache.tuscany.databinding.jaxb.JAXBTestCase.testTransform
> (JAXBTestCase.java:48)
>
>
> Results :
> Tests run: 1, Failures: 0, Errors: 1, Skipped: 0
>
>
> INFO] ------------------------------------------------------------------------
> [ERROR] BUILD FAILURE
>
> INFO] ------------------------------------------------------------------------
> [INFO] There are test failures.
>
> INFO] ------------------------------------------------------------------------
> [INFO] For more information, run Maven with the -e switch
>
> INFO] ------------------------------------------------------------------------
> [INFO] Total time: 5 seconds
> [INFO] Finished at: Tue Jul 11 19:29:45 PDT 2006
> [INFO] Final Memory: 6M/15M
>
> INFO] ------------------------------------------------------------------------
>
> Could someone more familiar with this plugin tell me what is going wrong
> and how we can avoid have the test code in the output jar?
> Thanks
> --
> Jeremy
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
> For additional commands, e-mail: tuscany-dev-help@ws.apache.org
>