Maven修改包

时间:2014-09-28 08:54:30

标签: java maven jaxb2

我试图在编译之前找到一个可以在源代码中修改java包声明的maven插件。更具体地说,源是通过jaxb2插件生成的,并且生成的包(基于命名空间)不能满足我的需求,不幸的是我无法在此插件中修改; /例如生成的是aa.bb.Foo.java并且我想转向进入cc.dd.Foo.java。感谢maven shade插件,我只能修改已编译的类,但源保持不变,因此输出jar是:

  • foo.jar - 树荫修改后的软件包,随时可以部署。
  • foo-orginal.jar - 阴影修改前的jar,这里没什么特别的
  • foo-sources.jar - 仅与foo-orginal.jar
  • 兼容的来源

任何与foo.jar合作的foo-sources.jar的想法?

1 个答案:

答案 0 :(得分: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>

可以在插件配置中设置此绑定文件:

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