Maven クライアントを使用した Exchange へのカスタムポリシーのアップロードおよびアセットのパブリッシュ

Anypoint Platform Private Cloud Edition (Anypoint Platform PCE) と Anypoint Platform のクラウドバージョンの間には違いがあり、Maven クライアントを使用して Anypoint Exchange にカスタムポリシーをアップロードしてアセットをパブリッシュするときに考慮する必要があります。

詳細については、Anypoint Platform のクラウドバージョンの次のドキュメントを参照してください。

Anypoint Platform PCE の場合は、次の手順を実行します。

  1. settings.xml​ ファイルで server セクションおよび repository セクションを追加し、プロジェクトのアーキタイプをセットアップします。

    次のスニペットでは、関連するセクションを示しています。

        ...
        <server>
           <id>apce-repository</id>
           <username>myusername</username>
           <password>mypassword</password>
        </server>
        ...
        <repository>
           <id>apce-repository</id>
           <name>Anypoint PCE Repository</name>
           <url>https://${ANYPOINT_DNS}/exchange/maven</url>
        </repository>
        ...

    次の例で、${​ANYPOINT_DNS​} は Anypoint Platform PCE の DNS に設定されます。​username​ および ​password​ はインストールに対応する必要があります。

  2. アーキタイプを生成します。

    標準的なプロセス​「カスタムポリシーの開発の開始」​に従ってください。 次に例を示します。

    mvn -Parchetype-repository archetype:generate \
    -DarchetypeGroupId=org.mule.tools \
    -DarchetypeArtifactId=api-gateway-custom-policy-archetype \
    -DarchetypeVersion=1.0.0 \
    -DgroupId=${orgId} \
    -DartifactId=${policyName} \
    -Dversion=1.0.0-SNAPSHOT \
    -Dpackage=mule-policy
  3. pom.xml​ ファイルの ​exchange.url​ を置き換えます。 デフォルトでは、​exchange.url​ は Anypoint Platform のクラウドバージョンを参照します。 maven.anypoint.mulesoft.com​ は Anypoint Platform PCE エンドポイントを参照する必要があります。

    <exchange.url>https://${ANYPOINT_DNS}/exchange/maven/api/v1/organizations/${orgId}/maven</exchange.url>

    repositoryId​ は ​settings.xml​ ファイルで Maven について設定した ID に一致する必要があります。

  4. カスタムポリシーをパッケージ化します。

    「カスタムポリシーのパッケージ化」​の Anypoint Platform のクラウドバージョンに関する説明と同じ手順を実行します。

  5. カスタムポリシーをアップロードします。

    「Exchange へのカスタムポリシーのアップロード」​の Anypoint Platform のクラウドバージョンに関する説明と同じ手順を実行します。

    次のようなエラーが発生した場合:

    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy (default-deploy) on project ${policyName}:
    Failed to retrieve remote metadata ${groupId}:${policyName}:1.0.0-SNAPSHOT/maven-metadata.xml: Could not transfer metadata ${orgId}:${policyName}:1.0.0-SNAPSHOT/maven-metadata.xml from/to exchange-server (https://${ANYPOINT_DNS}/exchange/maven/api/v1/organizations/${orgId}/maven): PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target -> [Help 1]

    プラットフォームの証明書がローカル Maven によって信頼されていないことを意味します。解決策としては、次の例のように、Maven が実行されている環境で証明書を信頼します。

    keytool -printcert -sslserver ${ANYPOINT_DNS}:443 -rfc > /tmp/anypoint.crt
    keytool -importcert -alias my-company.com -keystore /etc/ssl/certs/java/cacerts -storepass changeit -file /tmp/anypoint.crt

    前の例で、$​ANYPOINT_DNS​ は Anypoint Platform PCE の DNS に設定されます。場所およびパスワードを JVM のトラストストアに置き換えます。

  6. https://${ANYPOINT_DNS}/exchange/?type=policy​ または ​https://${ANYPOINT_DNS}/exchange/${orgID}/${artifactId}/​ を直接参照して、ポリシーがアップロードされたことを確認してください。

    Mule 4 以降によって管理される API の場合、ポリシーは ​[Apply Policy (ポリシーを適用)]​ ダイアログに表示されます。