1

Axis2 aar ファイルがあり、その aar ファイル内に埋め込まれています。コンパイル済みのクラスを含む jar ファイルがあり、そのうちの 1 つを置き換えたいと考えています。

これは私が持っているものの単純化されたバージョンです

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 upJarJarBinksし、抽出した aar レイアウトに戻します
  7. aarファイルをjarファイルにする

これを自動化する 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 ファイルを生成するための追加の手順を実行するのに役立ちます。

ServiceDeployer.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 に答える