2014-09-28 55 views
0

我试图找到一个maven插件,可以在编译之前修改源代码中的java包声明。更具体地说,通过jaxb2插件生成源代码并生成的包(基于命名空间)不能满足我的需要,很不幸,我无法修改此插件;例如生成的是aa.bb.Foo.java,我想转导入cc.dd.Foo.java。由于maven树荫插件我能够修改只编译的类,但源保持不变,所以输出罐是:Maven修改包

  • foo.jar - 阴影修改包,准备部署。
  • 富-orginal.jar - 遮阳修改前的罐子,这里没有什么特别
  • 富-sources.jar - 只以foo-orginal.jar

任何想法兼容的来源有兼容FOO来源。 jar与foo.jar?

回答

0

Maven JAXB2插件提供了一个配置来指定一个自定义的包名称。也许这对你有帮助。

<configuration> 
    ... 
    <generatePackage>my.own.packagename</generatePackage> 
    ... 
</configuration> 

在这里看到更多的信息

http://confluence.highsource.org/display/MJIIP/User+Guide#UserGuide-Controllingtheoutput

更新:

如果你有多个命名空间,你可以使用这样的装订文件夹:

<?xml version="1.0" encoding="UTF-8"?> 

<jaxb:bindings xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" version="1.0"> 
    <jaxb:bindings schemaLocation="..." 
     node="//xsd:schema[@targetNamespace='http://demo.ws/address']"> 
     <jaxb:schemaBindings> 
      <jaxb:package name="demo.ws.address" /> 
     </jaxb:schemaBindings> 
    </jaxb:bindings> 
    <jaxb:bindings schemaLocation="..." 
    node="//xsd:schema[@targetNamespace='http://demo.ws/name']"> 
     <jaxb:schemaBindings> 
      <jaxb:package name="demo.ws.name" /> 
     </jaxb:schemaBindings> 
    </jaxb:bindings> 
</jaxb:bindings> 

Thi S结合文件可以在插件配置进行设置:

<configuration> 
    ... 
    <bindingDirectory>...</bindingDirectory> 
    <bindingIncludes> 
     <include>*.xjb</include> 
    </bindingIncludes> 
    ... 
</configuration> 
+0

谢谢回答,我知道在这个JAXB的配置,但它不能帮助,因为我有这么多类具有相同名称且有当一切都在一个包中生成时发生冲突。最后,我不得不离开jaxb生成基于命名空间的类,然后修改程序包 – user1806952 2014-09-28 10:07:33

+0

也许绑定文件就是你要找的。看到我更新的答案。 – DirkNM 2014-09-28 13:24:15

+0

由于在一个项目中有很多模式,大约100个,我摆脱了绑定文件之前,文件有点混乱,难以维护,因为一个单一的xsd必须在此文件中指定并映射到包 – user1806952 2014-09-29 08:03:58