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