繁体   English   中英

org.jvnet.jaxb2.maven2:maven-jaxb2-plugin:相同的文件,多个结果

[英]org.jvnet.jaxb2.maven2:maven-jaxb2-plugin : same file , multiples results

我正在使用org.jvnet.jaxb2.maven2:maven-jaxb2-plugin版本中的org.jvnet.jaxb2.maven2:maven-jaxb2-plugin ,但存在以下问题。

  1. 我从xsd文件生成Java文件。

  2. 我提交并将其推送到我们的git存储库中。

  3. 我再次启动同一代(我们使用removeOldOutput选项)。

  4. 对于某些文件,git正在检测某些更改,因为某些注释的顺序在2代之间是不同的。

第一代的一部分:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Software", propOrder = {
    "rest"
})
public abstract class Software
    extends SoftwareResource
    implements Serializable
{

    private final static long serialVersionUID = 1L;
    @XmlElementRefs({
        @XmlElementRef(name = "resource", type = JAXBElement.class),
        @XmlElementRef(name = "software", type = JAXBElement.class),
        @XmlElementRef(name = "swapSpaceUsedCurrent", type = JAXBElement.class),
        @XmlElementRef(name = "isUTCTime", type = JAXBElement.class),
        @XmlElementRef(name = "lastStartTime", type = JAXBElement.class),
        @XmlElementRef(name = "serialNumber", type = JAXBElement.class),
        @XmlElementRef(name = "numberProcessesActiveCurrent", type = JAXBElement.class),
        @XmlElementRef(name = "pagingFileSizeCurrent", type = JAXBElement.class),
        @XmlElementRef(name = "processMemorySizeCurrent", type = JAXBElement.class),
        @XmlElementRef(name = "numUsersCurrent", type = JAXBElement.class)
    })
    protected List<JAXBElement<? extends Serializable>> rest;

    /**
     * Objects of the following type(s) are allowed in the list
     * {@link JAXBElement }{@code <}{@link Resource }{@code >}
     * {@link JAXBElement }{@code <}{@link BigInteger }{@code >}
     * {@link JAXBElement }{@code <}{@link Software }{@code >}
     * {@link JAXBElement }{@code <}{@link Boolean }{@code >}
     * {@link JAXBElement }{@code <}{@link String }{@code >}
     * {@link JAXBElement }{@code <}{@link BigInteger }{@code >}
     * {@link JAXBElement }{@code <}{@link String }{@code >}
     * {@link JAXBElement }{@code <}{@link Quantity }{@code >}
     * {@link JAXBElement }{@code <}{@link BigInteger }{@code >}
     * {@link JAXBElement }{@code <}{@link Quantity }{@code >}
     * 
     * 
     */
    public List<JAXBElement<? extends Serializable>> getRest() {
        if (rest == null) {
            rest = new ArrayList<JAXBElement<? extends Serializable>>();
        }
        return this.rest;
    }

}

第二代的相同部分:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Software", propOrder = {
    "rest"
})
public abstract class Software
    extends SoftwareResource
    implements Serializable
{

    private final static long serialVersionUID = 1L;
    @XmlElementRefs({
        @XmlElementRef(name = "numUsersCurrent", type = JAXBElement.class),
        @XmlElementRef(name = "serialNumber", type = JAXBElement.class),
        @XmlElementRef(name = "processMemorySizeCurrent", type = JAXBElement.class),
        @XmlElementRef(name = "swapSpaceUsedCurrent", type = JAXBElement.class),
        @XmlElementRef(name = "pagingFileSizeCurrent", type = JAXBElement.class),
        @XmlElementRef(name = "lastStartTime", type = JAXBElement.class),
        @XmlElementRef(name = "numberProcessesActiveCurrent", type = JAXBElement.class),
        @XmlElementRef(name = "resource", type = JAXBElement.class),
        @XmlElementRef(name = "isUTCTime", type = JAXBElement.class),
        @XmlElementRef(name = "software", type = JAXBElement.class)
    })
    protected List<JAXBElement<? extends Serializable>> rest;

    /**
     * Objects of the following type(s) are allowed in the list
     * {@link JAXBElement }{@code <}{@link BigInteger }{@code >}
     * {@link JAXBElement }{@code <}{@link String }{@code >}
     * {@link JAXBElement }{@code <}{@link Quantity }{@code >}
     * {@link JAXBElement }{@code <}{@link String }{@code >}
     * {@link JAXBElement }{@code <}{@link Quantity }{@code >}
     * {@link JAXBElement }{@code <}{@link BigInteger }{@code >}
     * {@link JAXBElement }{@code <}{@link BigInteger }{@code >}
     * {@link JAXBElement }{@code <}{@link Boolean }{@code >}
     * {@link JAXBElement }{@code <}{@link Resource }{@code >}
     * {@link JAXBElement }{@code <}{@link Software }{@code >}
     * 
     * 
     */
    public List<JAXBElement<? extends Serializable>> getRest() {
        if (rest == null) {
            rest = new ArrayList<JAXBElement<? extends Serializable>>();
        }
        return this.rest;
    }

}

为什么此注释在2代之间顺序不同? 有办法订购吗?

谢谢 !

这里是maven-jaxb2-plugin作者。

首先,亚历山大·M非常正确。 生成的代码通常不检入SCM。 整个target目录在git无关。

接下来,由maven-jaxb2-plugin调用的JAXB模式编译器(XJC)是不确定的,因此不能保证所生成的源代码在不同代码代之间是相同的。 这绝对不是maven-jaxb2-plugin ,我也不会在XJC中将其称为错误。 降低您的期望,不要期望两次运行之间使用相同的代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM