2

내 JAXB 개체에서 hashCode() 및 equals() 메서드를 생성하도록 pom.xml을 가져 오려고합니다. 이것은 비록 다음과 같은 오류가 제공JAXB가 같음 및 해시 코드 : 오류가 발생합니다.

<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/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<version>0.0.1-SNAPSHOT</version> 
<packaging>jar</packaging> 
<dependencies> 
    <dependency> 
     <groupId>org.jvnet.jaxb2_commons</groupId> 
     <artifactId>jaxb2-commons-lang</artifactId> 
     <version>2.3</version> 
    </dependency> 
</dependencies> 
<build> 
    <plugins> 
     <plugin> 
      <groupId>org.jvnet.jaxb2.maven2</groupId> 
      <artifactId>maven-jaxb2-plugin</artifactId> 
      <version>0.8.3</version> 
      <executions> 
       <execution> 
        <goals> 
         <goal>generate</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <extension>true</extension> 
       <args> 
        <arg>-XtoString</arg> 
        <arg>-Xequals</arg> 
        <arg>-XhashCode</arg> 
       </args> 
       <plugins> 
        <plugin> 
         <groupId>org.jvnet.jaxb2_commons</groupId> 
         <artifactId>jaxb2-basics</artifactId> 
         <version>0.6.2</version> 
        </plugin> 
       </plugins> 
      </configuration> 
     </plugin> 

    </plugins> 
</build> 

...

package org.jvnet.jaxb2_commons.lang does not exist 
package org.jvnet.jaxb2_commons.locator does not exist 
package org.jvnet.jaxb2_commons.locator.util does not exist 
cannot find symbol symbol: class Equals 
cannot find symbol symbol: class HashCode 
cannot find symbol symbol: class ToString 
cannot find symbol symbol : class ObjectLocator 
cannot find symbol symbol : class ToStringStrategy 
cannot find symbol symbol : class HashCodeStrategy 

나에 대해 검색 좀했습니다, 그리고 내가 추가하는 방법에 대한 게시물을 발견했습니다 ..

<dependency> 
    <groupId>org.jvnet.jaxb2_commons</groupId> 
    <artifactId>runtime</artifactId> 
    <version>0.4.1</version> 
</dependency> 
<dependency> 
    <groupId>org.jvnet.jaxb2_commons</groupId> 
    <artifactId>testing</artifactId> 
    <version>0.4.1</version> 
    <scope>test</scope> 
</dependency> 

그러나 이것은 도움이되지 않습니다.

아무도 도와주세요.

답변

14

다음은 작동하는 구성 집합입니다. 나는 "줄을 서서"말해야 할 요소들이 많이 있다고 믿는다.

일반 종속성 : -

<dependency> 
     <groupId>org.jvnet.jaxb2_commons</groupId> 
     <artifactId>jaxb2-basics-runtime</artifactId> 
     <version>0.6.4</version> 
    </dependency> 

받는다는-JAXB2 - 플러그인 : -

 <plugin> 
      <groupId>org.jvnet.jaxb2.maven2</groupId> 
      <artifactId>maven-jaxb2-plugin</artifactId> 
      <version>0.8.3</version> 
      <executions> 
       <execution> 
        <goals> 
         <goal>generate</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <extension>true</extension> 
       <generatePackage>you.package.etc</generatePackage> 
       <args> 
        <arg>-XtoString</arg> 
        <arg>-Xequals</arg> 
        <arg>-XhashCode</arg> 
        <arg>-Xinheritance</arg> 
        <arg>-Xcopyable</arg> 
        <arg>-XenumValue</arg> 
       </args> 
       <plugins> 
        <plugin> 
         <groupId>org.jvnet.jaxb2_commons</groupId> 
         <artifactId>jaxb2-basics</artifactId> 
         <version>0.6.4</version> 
        </plugin> 
       </plugins> 
      </configuration> 
     </plugin> 

바인딩 추출 : -

<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
    xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:inheritance="http://jaxb2-commons.dev.java.net/basic/inheritance" 
    jaxb:extensionBindingPrefixes="inheritance" 
    jaxb:version="2.1"> 

...... 

<jaxb:bindings schemaLocation="yourschema.xsd" node="/xs:schema"> 
    <jaxb:bindings node="//xs:element[@name='element-you-want-to-have-interface']"> 
     <jaxb:class /> 
     <inheritance:implements>your.interface</inheritance:implements> 
    </jaxb:bindings> 
</jaxb:bindings> 

...... 

</jaxb:bindings> 
+1

가 JAXB2 - 기본 - 런타임 팀은 참으로 큰했다 '여기에 설명 된대로 버전 0.5.2와 0.5.3 사이에 API 호환되지 않는 변경 사항을 도입하여 작업 (http://confluence.highsource.org/display/J2B/JAXB2+Ba sics + 런타임). 그것은 문제를 일으킨다. – FrVaBe

+0

내가했던 것처럼 Intuit Quickbooks SDK에서 빌드 오류로 인해 여기에 온 경우 : 종속성을 추가하기 만하면됩니다. Intuit는 이미 플러그인을 실행했습니다. –