如何在一个pom文件中生成两个xmlbeans

时间:2011-07-11 23:51:26

标签: java maven xmlbeans xmlbeans-maven-plugin

我试图在一个项目中生成两个xmlbeans。例如,每一个都获得参与者对象,因此我不能将它们放在一个配置中。我的方式是使用两次执行,这是我的pom文件:

            <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>xmlbeans-maven-plugin</artifactId>
            <version>2.3.3</version>
            <executions>
                <execution>
                    <id>xmlbean1</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>xmlbeans</goal>
                    </goals>
                    <configuration>
                        <xmlConfigs>
                            <xmlConfig implementation="java.io.File">src/main/xsdconfig/xmlbean1</xmlConfig>
                        </xmlConfigs>
                        <verbose>true</verbose>
                        <schemaDirectory>src/main/xsd/xmlbean1</schemaDirectory>
                    </configuration>
                </execution>
                <execution>
                    <id>xmlbean2</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>xmlbeans</goal>
                    </goals>
                    <configuration>
                        <xmlConfigs>
                            <xmlConfig implementation="java.io.File">src/main/xsdconfig/xmlbean2</xmlConfig>
                        </xmlConfigs>
                        <verbose>true</verbose>
                        <schemaDirectory>src/main/xsd/xmlbean2</schemaDirectory>
                    </configuration>
                </execution>
            </executions>
            <inherited>true</inherited>
        </plugin>

但它根本不起作用。任何人都可以帮助我,谢谢

3 个答案:

答案 0 :(得分:2)

谢谢大家,我得到了答案,下面的pom工作正常:

<executions>
                <execution>
                    <id>id1</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>xmlbeans</goal>
                    </goals>
                    <configuration>
                        <schemaDirectory>src/main/xsd/first</schemaDirectory>
                        <xmlConfigs>
                            <xmlConfig implementation="java.io.File">src/main/xsdconfig/first</xmlConfig>
                        </xmlConfigs>
                        <verbose>true</verbose>
                        <sourceGenerationDirectory>target/first-resource</sourceGenerationDirectory>
                        <classGenerationDirectory>target/first-class</classGenerationDirectory>
                        <staleFile>target/first/first.stale</staleFile>
                    </configuration>
                </execution>
                <execution>
                    <id>id2</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>xmlbeans</goal>
                    </goals>
                    <configuration>
                        <schemaDirectory>src/main/xsd/second</schemaDirectory>
                        <xmlConfigs>
                            <xmlConfig implementation="java.io.File">src/main/xsdconfig/second</xmlConfig>
                        </xmlConfigs>
                        <verbose>true</verbose>
                        <sourceGenerationDirectory>target/second-resource</sourceGenerationDirectory>
                        <classGenerationDirectory>target/second-class</classGenerationDirectory>
                        <staleFile>target/second/second.stale</staleFile>
                    </configuration>
                </execution>
            </executions>

答案 1 :(得分:1)

您应该尝试使用另一个不同的阶段进行第二次调用。 AFAIK相同的插件在同一生命周期阶段不能执行两次。

答案 2 :(得分:1)

这不起作用,因为id仅用于查找现有执行(当您想要调整它时)。

您的问题是,Maven无法在同一个phase中运行相同的插件两次。

你有什么选择?

  1. 将其拆分为不同的子模块

  2. 使用Ant创建xmlbeans并使用the antrun element.

  3. 但我想知道为什么你不能使用两个xmlConfig元素。只需将所有.xsd个文件放入一个目录中,然后根据需要从中创建尽可能多的bean(参见“Multiple XSDConfig Directories”)