JAXB package-info.java声明在单独的maven模块中被忽略

时间:2015-12-14 10:26:43

标签: java xml maven jaxb package-info

我使用package-info.java使用@XmlAccessorType(XmlAccessType.NONE)指定@XmlJavaTypeAdapters和一些xml java适配器。模型对象(使用JAXB注释)放置在由其他模块共享的单独maven模块中。如果模型对象位于单独的maven模块中,则不会发现package-info.java中的配置。如果为了测试目的将模型对象移动到相同的maven模块,一切都可以。我认为从JAXBContext的角度来看,单独的maven模块可以被认为等同于第三方lib。我使用JDK1.7 JAXB参考实现。有关配置可能有何不同的任何想法?

2 个答案:

答案 0 :(得分:0)

我也遇到过这个问题,在我的情况下,package-info.java中的限定/非限定属性被忽略了。我设法找到两种解决方法:

  • 就像Pavla写的那样,使用package-info.java本地复制所有JAXB类
  • 包含模块作为编译范围的依赖项(它给出了类在模块中的类似结果。在我的例子中,我用JAXB类创建了单独的jar lib)

我还发现它只在创建WebServices的情况下不起作用(创建对象并发送到WS在不同的模块中工作正常)。

我正在使用Jbossas7.1.1和cxf 2.4.6。在注册服务时,Jboss从JAXB创建了wsdl(在我的案例中是路径/opt/jboss/jboss-as-7.1.1.Final/standalone/data/wsdl/module.war/SubmitMessage.wsdl)。在本地设置文件中生成正确。

为什么创建WS的任何想法都是这样的?

答案 1 :(得分:0)

我最近遇到了这个问题,实际的问题(使用Java 8,即不涉及Java模块)是我在类路径上有两个* .jar文件,它们都包含相同的软件包-在一个JAR中,存在软件包-带有JAXB批注的info.class,而另一种则没有。 在那种情况下,我猜想是否发现package-info.class文件取决于类路径的排序(这非常脆弱,只有半确定性)。

相关问题