问题
I have a basic.xsd
and two other A.xsd
and B.xsd
. A.xsd
and B.xsd
get converted into two different java packages, therefore I need two Maven executions of the same plugin.
Both XSDs refer to basic.xsd
for some shared classes. If basic.xsd
would come from a different project I could solve this problem really nicely through using episodes
to prevent duplicate classes.
But how can I refer to the current project?
My first execution of the plugin is to generate only classes from basic.xsd
into its own java namespace. After that the executios of A.xsd
and B.xsd
should know about the stuff generated from basic.xsd
.
Can I somehow point to the generated episode of basic.xsd
?
Somehting like
<episodes><episodeFile>basicXSD.episode</episodeFile</episodes>
would be nice, but as far as I can see, I can only add dependencies... :-(
回答1:
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.8.1</version>
<executions>
<execution>
<id>first</id>
...
<configuration>
<episodeFile>${some.path}/first.episode</episodeFile>
</configuration>
</execution>
<execution>
<id>second</id>
...
<configuration>
<args>
<arg>-b</arg>
<arg>${some.path}/first.episode</arg>
</args>
</configuration>
</execution>
</executions>
</plugin>
http://docs.oracle.com/javase/6/docs/technotes/tools/share/xjc.html http://weblogs.java.net/blog/kohsuke/archive/2006/09/separate_compil.html
回答2:
You can simply define two executions of the same plugin like this:
<plugin>
<artifactId>maven-whatever-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<id>execution1</id>
<phase>test</phase>
<configuration>
....
</configuration>
<goals>
<goal>TheGoalYouNeed</goal>
</goals>
<phase>process-sources</phase>
</execution>
<execution>
<id>execution2</id>
<configuration>
...
</configuration>
<goals>
<goal>TheGoalYouNeed</goal>
</goals>
<phase>process-sources</phase>
</execution>
</executions>
</plugin>
来源:https://stackoverflow.com/questions/10948926/maven-jaxb2-plugin-episode-of-same-project-in-maven-possible