有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Maven修改包

我试图找到一个maven插件,它可以在编译之前修改源代码中的java包声明。更具体地说,源代码是通过jaxb2插件生成的,生成的包(基于名称空间)不能满足我的需要,不幸的是,我无法在此插件中修改;/例如,生成的是aa。bb。福。java和我想变成cc。富德。JAVA由于maven shade插件,我能够只修改已编译的类,但源代码保持不变,因此输出JAR是:

  • 福。jar-shade修改包,可以部署
  • 原来是福。jar-jar在阴影修改之前,这里没有什么特别的
  • 福源。jar-仅与foo orginal兼容的源代码。罐子

任何有符合标准的foo来源的想法。用福罐。罐子


共 (1) 个答案

  1. # 1 楼答案

    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>