XMLBeans在通过Ant和Maven运行时创建不同的代码

时间:2014-02-15 09:57:07

标签: maven ant xmlbeans xmlbeans-maven-plugin

Apache POI通常通过Ant编译,并且有一些步骤,其中xmlbeans-Ant-task用于将OfficeOpenXML模式转换为代码。

我目前正在构建一组相应的Maven pom.xml文件,这些文件也会编译代码,以便更轻松地在Apache POI上运行Sonar检查。

然而,当XMLBeans生成代码时,一些生成的类看起来不同。

在Ant文件中,语句为:

<xmlbean
        schema="${ooxml.encryption.xsd.dir}"
        srcgendir="${ooxml.encryption.src.dir}"
        optimize="yes"
        destfile="${ooxml.encryption.jar}"
        javasource="1.5"
        failonerror="true"
        fork="true"
        memoryMaximumSize="${ooxml.memory}"
        >
    <classpath refid="ooxml.classpath"/>
</xmlbean>

在Maven中我使用

<plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>xmlbeans-maven-plugin</artifactId>
          <version>2.3.3</version>
          <executions>
             <execution>
                <phase>generate-sources</phase>
                <goals>
                  <goal>xmlbeans</goal>
                </goals>
             </execution>
          </executions>
            <configuration>
                <schemaDirectory>target/schemas</schemaDirectory>
                <javaSource>1.5</javaSource>
                <optimize>yes</optimize>
            </configuration>
        </plugin>

大多数类都是相同的,但其中一个具有不同名称的getter / setter,即

Ant产生

/**
 * Gets the "encryptedKey" element
 */
com.microsoft.schemas.office.x2006.keyEncryptor.password.CTPasswordKeyEncryptor 
    getEncryptedPasswordKey();

但Maven产生了一个不同的吸气剂,请注意不同命名的方法:

/**
 * Gets the "encryptedKey" element
 */
com.microsoft.schemas.office.x2006.keyEncryptor.password.CTPasswordKeyEncryptor 
    getEncryptedKey();

有什么方法可以解决这个问题吗?据我所知,使用完全相同的source-XSD,虽然我对XMLBeans知之甚少,所以它可能会在这里使用一些不同的设置...

1 个答案:

答案 0 :(得分:1)

仅仅为了完整性......可以通过在配置部分添加以下内容来解决这个问题:

<xmlConfigs>
    <xmlConfig implementation="java.io.File">../../src/ooxml/resources/org/apache/poi/poifs/crypt</xmlConfig>
</xmlConfigs>

...所以ant任务在与.xsds相同的目录中查找.xsdconfig文件,但需要明确指示maven ......