1

我有一个 Axis2 aar 文件,埋在该 aar 文件中我有一个包含我编译的类的 jar 文件,我想替换其中的一个。

这是我所拥有的简化版本

MyService.aar 包含:

lib\JarJarBinks.jar

JarJarBinks.jar 包含:

com\example\skywalker\TheForce.class

我想替换TheForce.class,唯一想到的机制,而不重建一切是:

  1. 项目清单
  2. 解压aar文件
  3. 拔出JarJarBinks.jar
  4. 解开JarJarBinks.jar
  5. 替换TheForce.class为我的更新副本
  6. jar起来JarJarBinks,并将其放回提取的aar布局中
  7. 将 aar 文件保存起来

我可以创建一个 bash 脚本来自动执行此操作,但我想知道是否有更清洁/更快的方法。

我找到了更新选项,jar u但我不相信它适用于嵌套的人工制品。

谢谢

4

1 回答 1

0

要使 Axis2 工作,您不需要aar文件。

services.xml 文件可以是 Axis2 工作的以下任一位置。

  1. 存储库/服务/SimpleService/meta-inf/services.xml
  2. WEB-INF/services/SimpleService/meta-inf/services.xml

这将帮助我们有一个额外的步骤来生成 aar 文件。

服务部署者.java

 * <p>
 * Standard Axis2 service Deployer which use services.xml file to build
 * services. ServiceDeployer can be used with Axis2 archive (.aar) or exploded
 * directory structure. Some of the example formats given below.
 * </p>
 * <p>Examples : <p>
 *        <ul>
 *          <li>repository/services/SimpleService.aar/meta-inf/services.xml</li>
 *          <li>repository/services/SimpleService/meta-inf/services.xml</li>
 *          <li>WEB-INF/services/SimpleService.aar/meta-inf/services.xml</li>
 *          <li>WEB-INF/services/SimpleService/meta-inf/services.xml</li>
 *       </ul>
 
     InputStream servicexmlStream = serviceClassLoader
            .getResourceAsStream("META-INF/services.xml");
    if (servicexmlStream == null) {
        servicexmlStream = serviceClassLoader.getResourceAsStream("meta-inf/services.xml");
    } else {
        metainf = "META-INF";
    }

https://axis.apache.org/axis2/java/core/apidocs/org/apache/axis2/deployment/ServiceDeployer.html

于 2021-11-19T11:14:36.660 回答