Java 在api类中是否有关于多维数组的详细说明(docs maven目标)?

Java 在api类中是否有关于多维数组的详细说明(docs maven目标)?,java,rest,maven-2,enunciate,Java,Rest,Maven 2,Enunciate,在运行docs goal for maven plugin Enounciate时,我遇到了错误“还不支持多维数组”。有没有一种方法可以避免它轰炸整个过程(即为API生成其余的文档) 我已经尝试了@org.codehaus.enunciate.doc.excludefrom文档,介绍了使用双数组返回类的API方法。 我已经在使用双数组的类上尝试了@org.codehaus.enuciate.XmlTransient 从那以后,我在DenuclateDocumentation中看到,它们只影响它们

在运行docs goal for maven plugin Enounciate时,我遇到了错误“还不支持多维数组”。有没有一种方法可以避免它轰炸整个过程(即为API生成其余的文档)

我已经尝试了@org.codehaus.enunciate.doc.excludefrom文档,介绍了使用双数组返回类的API方法。 我已经在使用双数组的类上尝试了@org.codehaus.enuciate.XmlTransient

从那以后,我在DenuclateDocumentation中看到,它们只影响它们是否显示在文档上,而不影响编译

我很高兴听到你的任何想法

谢谢

编辑: 我所能做的最好的事情就是将项目转储到temp目录,删除访问api不需要的所有模块,用双数组删除类,并用字符串替换restapi的java方法签名。这允许我至少通过Enounciate创建api文档页面,并通过javadoc给出描述。但是,我希望有一个更优雅的解决方案,所以如果您知道,请与我们分享:)

编辑2: 示例pom:

<?xml version="1.0" encoding="UTF-8" standalone="no"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>com.company.services.rest.service</groupId>
 <artifactId>service-rest-api</artifactId>
 <packaging>pom</packaging>
 <version>1.1</version>
 <name>service  REST API</name>
 <dependencies>
      <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jaxrs</artifactId>
        <version>2.2.1.GA</version>
      </dependency>
      <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-impl</artifactId>
        <version>2.2.4</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>jaxrs-api</artifactId>
        <version>2.2.1.GA</version>
      </dependency>
      <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jackson-provider</artifactId>
        <version>2.2.1.GA</version>
      </dependency>
      <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jaxb-provider</artifactId>
        <version>2.2.1.GA</version>
        <exclusions>
          <exclusion>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-impl</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-multipart-provider</artifactId>
        <version>2.2.1.GA</version>
      </dependency> 
      <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>tjws</artifactId>
        <version>2.2.1.GA</version>
      </dependency>
  </dependencies>
  <build>
    <plugins>
     <plugin>
       <groupId>org.codehaus.enunciate</groupId>
       <artifactId>maven-enunciate-plugin</artifactId>
       <version>1.26</version>
       <configuration>
         <forceWarPackaging>false</forceWarPackaging>
         <configFile>/tmp/enunciate-work/enunciate.xml</configFile>
       </configuration>
       <executions>
         <execution>
           <goals>
             <goal>docs</goal>
           </goals>
         </execution>
       </executions>
     </plugin>
    </plugins>
  </build>
expensiate.xml:

<enunciate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:noNamespaceSchemaLocation="
           http://enunciate.codehaus.org/schemas/enunciate-1.26.xsd">

  <modules>
      <disable-rule id="csharp.warnings"/>
      <disable-rule id="c.warnings"/>
      <disable-rule id="obj-c.warnings"/>
          <docs docsDir="api" title="REST API" includeDefaultDownloads="false" disableRestMountpoint="true">

    </docs>
    <!-- Disable all the client generation tools -->
    <basic-app disabled="true" />
    <c disabled="true" />
    <csharp disabled="true" />
    <java-client disabled="true" />
    <jaxws-client disabled="true" />
    <jaxws-ri disabled="false" />
    <jaxws-support disabled="false" />
    <jersey disabled="true" />
    <obj-c disabled="true" />
    <xml forceExampleJson="true"/>
    <jaxws disabled="false"/>
    <amf disabled="true"/>
  </modules>

</enunciate>

如果您不需要该方法上的XML支持,您可以在从@Consumes和@Products中删除MediaType.APPLICATION_XML后执行JSON并删除@XmlRootElement注释

如果您仍然希望支持XML,那么可以做一些增强以支持仅序列化的更改,例如使
日志
属性XML为瞬态,并将数组包装为序列化时间。这将有一个额外的好处,那就是能够清晰地记录它,而不是一些带外的文档。例如:

@XmlRootElement
public class ServiceStatusChanges implements Serializable {
    private static final long serialVersionUID = 1l;
    private String[][] logs;
    public ServiceStatusChanges() {}

    public ServiceStatusChanges(String[][] logs) {
        this.logs=logs;
    }

    @XmlTransient
    public String[][] getLogs() {
        return logs;
    }

    public void setLogs(String[][] logs) {
        this.logs=logs;
    }

    @XmlElement( name = "logs" )
    public Log[] getLogsWrapped() {
        Log[] logs = new Log[this.logs.length];
        //iterate through the logs and wrap it...
        return logs;
    }
}
您的
Log
类可能如下所示:

@XmlRootElement
public class Log implements Serializable {
    @XmlValue
    public String value;
}

当我使用
List
type而不是
String[][]
时,阐明文档生成仍然有效。据我记忆所及,生成的JSON/XML示例和xsd似乎有问题。

没有项目的pom或更多细节,很难猜出问题出在哪里。好的,我添加了一个简单的示例项目,演示了我试图规避的已知行为。为什么在Maven项目之外有一个配置文件?我觉得很奇怪。如果你问的是eNucliate.xml,它是用于eNucliate maven插件的。
@XmlRootElement
public class Log implements Serializable {
    @XmlValue
    public String value;
}