Intellij IDEA 无法识别 XJC 任务属性



我有一个带有XJC任务定义的ant build.xml文件:

<taskdef name="xjc" classname="com.sun.tools.xjc.XJCTask">
  <classpath>
    <fileset dir="jaxb" includes="*.jar" />
  </classpath>
</taskdef>

jaxb dir包含jaxb-xjc.jar,其中包含XJCTask类。

然后我在一些目标中调用xjc任务:

<target name="mytarget">
 <xjc target="src" package="com.p1.Person" header="false">
   <schema dir="src/com/p1" includes="Person.xsd"/>
 </xjc>
</target>

Intellij IDEA不识别xjc调用的结构/模式,并以红色突出显示所有属性(目标,包,头)和包含元素(模式)。

如果我选择Ant选项并将jaxb-xjc.jar添加到额外的类路径列表中,这没有帮助。我使用捆绑的Ant 1.8.2

坏的事情是,当我在IDEA中编译它时,我得到了很多相关的错误,但是当我运行构建脚本时,一切都很好。我想抑制这些错误。

任何想法?

答案来自IDEA问题跟踪器中一个相关bug的评论。http://youtrack.jetbrains.net/issue/idea - 11248 #评论= 27 - 57354

对于IDEA的XJCTask问题,只需在任务定义中使用XJC2Task。

如果你看XJC2Task的源代码,它有暴露的setter,以便IDEA可以解决它们:http://grepcode.com/file/repo1.maven.org/maven2/com.sun.xml.bind/jaxb-xjc/2.1.13/com/sun/tools/xjc/XJC2Task.java XJC2Task.setPackage % 28以% 29日

然而,XJCTask只是一个动态委托给JAXB1或JAXB2的类,因此IDEA无法解析这些属性,因为您在taskdef中定义的类没有设置器。http://grepcode.com/file/repo1.maven.org/maven2/com.sun.xml.bind/jaxb-xjc/2.1.13/com/sun/tools/xjc/XJCTask.java XJCTask.getCoreClassName % 28% 29日

编辑:基本上在JAXB2中,XJCTask实际上并不包含任务—它委托给实际的任务XJC2Task。

这里有一些更好的链接到源码:

JAXB中的XJCTaskhttp://java.net/projects/jaxb/sources/version1/content/trunk/jaxb-ri/xjc/src/com/sun/tools/xjc/XJCTask.java?rev=197

JAXB2中的XJCTaskhttp://java.net/projects/jaxb/sources/version2/content/trunk/jaxb-ri/xjc/facade/com/sun/tools/xjc/XJCTask.java?rev=3863

JAXB2中的XJC2Taskhttp://java.net/projects/jaxb/sources/version2/content/trunk/jaxb-ri/xjc/src/com/sun/tools/xjc/XJC2Task.java?rev=3863

如果您查看jaxb-xjc-ri-2.x-xx.jar,您将看到它包含一个名为"1/com/sun/tools/xjc/"的包

如果您运行ant任务并将版本设置为1.0,那么这就是从JAXB2中的XJCTask调用的内容。我希望它能更容易地从v1过渡到v2。

XJC2Task是在使用v2时调用的。

实际上,您不打算将其设置为1.0,因此您可以直接调用XJC2Task。

相关内容

  • 没有找到相关文章