Technical Articles
SAP Cloud SDK for Javaの簡単な動かし方(CFへデプロイまで)
SAP Cloud SDK for Javaを使ってプロジェクト作成してSAP Cloud Foundry Application Runtimeへデプロイする方法のメモです。
Create a Sample Application on Cloud Foundry Using SAP Cloud SDKの内容を少し変えています。
今回のプログラムはGitHubに置いています(今回以外の内容もあるので注意)。
開発環境
以下の環境で実行しています。
- OS: Windows10 64-bit
- openJDK: 1.8.0_242
- Chocolatey: 0.10.15
- maven: 3.6.3
- IDE: IntelliJ IDEA Community Edition 2019.3.3
- CF cli: 6.37.0+a40009753.2018-05-25
- SAP Cloud SDK for Java: 3.15.1
1. プロジェクト作成
プロジェクトを置くディレクトリで以下のコマンドでプロジェクト作成(コマンド実行でフォルダダが生成されます)。
mvn archetype:generate "-DarchetypeGroupId=com.sap.cloud.sdk.archetypes" "-DarchetypeArtifactId=scp-cf-tomee" "-DarchetypeVersion=RELEASE"
以下の4つを入力。最後に” Y: :”と聞かれるので、Yを入力すると完了。
- groupId: com.sap.cloud.sdk
- artifactId: cloud-sdk-test
- version: 1.0-SNAPSHOT
- package: com.sap.cloud.sdk
※最後にNを入力して、もう一度上記4つを再入力し、skipUsageAnalyticsをtrueにしてもいいです。
2. IntelliJ IDEAで開く
IDEをIntelliJ IDEAにしています。Eclipseでもいいかと思います。
“Import Project”でフォルダを選択。
ステップ「1. プロジェクト作成」で作成したディレクトリを選択。
Mavenを選択。
3. POM.xml調整
<project-root>/application/POM.xmlにPlugins Usage Analytics Maven Pluginを追加します。
<dependencies>の最後に以下を追加。
<!-- https://mvnrepository.com/artifact/com.sap.cloud.sdk.plugins/usage-analytics-maven-plugin -->
<dependency>
<groupId>com.sap.cloud.sdk.plugins</groupId>
<artifactId>usage-analytics-maven-plugin</artifactId>
<version>3.15.1</version>
</dependency>
ついでに同じファイルPOM.xmlの build -> plugins -> plugin のパスの以下でskipUsageAnalyticsの値をfalseからtrueにしておきます(通信させたくなかったので)。
<plugin>
<groupId>com.sap.cloud.sdk.plugins</groupId>
<artifactId>usage-analytics-maven-plugin</artifactId>
<version>3.15.1</version>
<executions>
<execution>
<goals>
<goal>usage-analytics</goal>
</goals>
<configuration>
<skipUsageAnalytics>true</skipUsageAnalytics>
<generateSalt>true</generateSalt>
<!--
Note: A random salt is auto-generated once the project is built for the first time.
Please keep the generated salt in the POM file, for example, when pushing to git.
To learn more, visit: https://blogs.sap.com/2018/10/23/usage-analytics-s4sdk/
-->
<salt />
</configuration>
</execution>
</executions>
</plugin>
IntelliJ IDEAだと変更することで自動でPluginをインポートしてくれます。
<project-root>/integration-tests/POM.xmlにJBoss ShrinkWrap Resolverを追加します。
dependenciesに以下を追加。これをしないと、次ステップでエラーが起きたので「tomee-users mailing list archives」を参考に追加しました。
<dependency>
<groupId>org.jboss.shrinkwrap.resolver</groupId>
<artifactId>shrinkwrap-resolver-depchain</artifactId>
<type>pom</type>
<exclusions>
<exclusion>
<groupId>javax.enterprise</groupId>
<artifactId>cdi-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.jboss.shrinkwrap.resolver</groupId>
<artifactId>shrinkwrap-resolver-api-maven</artifactId>
</dependency>
4. ローカル動作確認
プロジェクトのディレクトリに移動してパッケージ作成。
# from package directory
mvn clean package
さらにapplicationまで移動してtomeeを実行。
cd application
mvn tomee:run
http://localhost:8080/hello をブラウザで開いて”Hello World!”が表示されれば成功。
5. CF へデプロイ
SAP Cloud Platform のCFへデプロイします。トライアル使っています。
“manifest.yml”は自動で作成済なので、そのまま”cf push”すればOKです。
cf login
cf push
割り当てられたエンドポイント(https://<endpoint>/hello)にブラウザでアクセスして”Hello World!”が表示されれば成功。
SAP Cloud SDK for Java関連記事
- SAP Cloud SDK for Javaの簡単な動かし方(CFへデプロイまで)
- SAP Cloud SDK for JavaのVDMを使ってオンプレS/4HANA OData呼出
- SAP Cloud SDK for JavaのVDM Generatorを使う
- SAP Cloud SDK for JavaでCAIのWebhookを返す
よくBuildで”No versions available for com.sap.cloud.sdk.plugins:usage-analytics”エラーが起きるのですが、”.m2″フォルダ内のファイルを削除したら解消しました(mavenのキャッシュ?)。