From 518e3eac5e391064608a0db1fd10b721b133f191 Mon Sep 17 00:00:00 2001 From: Artur Souza Date: Mon, 27 Jan 2020 12:06:59 -0800 Subject: [PATCH] Getting started doc for Java SDK. --- .gitignore | 5 ++ README.md | 135 ++++++++++++++++++++++++++++++++++++++++------------- 2 files changed, 108 insertions(+), 32 deletions(-) diff --git a/.gitignore b/.gitignore index 21ff402442..6af46fb748 100644 --- a/.gitignore +++ b/.gitignore @@ -30,6 +30,11 @@ *.tar.gz *.rar +# Eclipse +.classpath +.project +.settings + # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* diff --git a/README.md b/README.md index f6bf9cf370..f60c52f149 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,77 @@ ## Dapr SDK for Java -This is the Dapr SDK for Java, based on the auto-generated proto client.
- -For more info on Dapr and gRPC, visit [this link](https://github.com/dapr/docs/tree/master/howto/create-grpc-app). +This is the Dapr SDK for Java, including the following features: + +* PubSub +* Service Invocation +* Binding +* State Store +* Actors + +### Getting Started + +#### Pre-Requisites +* Java IDE installed: + * [IntelliJ](https://www.jetbrains.com/idea/download/) + * [Eclipse](https://www.eclipse.org/downloads/) + * [Apache NetBeans](https://netbeans.apache.org/download/index.html) + * [Visual Studio Code](https://code.visualstudio.com/Download) + * Any other IDE for Java that you prefer. +* Install one of the following build tools for Java: + * [Maven 3.x](https://maven.apache.org/install.html) + * [Gradle 6.x](https://gradle.org/install/) +* If needed, install the corresponding plugin for the build tool in your IDE, for example: + * [Maven in IntelliJ](https://www.jetbrains.com/help/idea/maven.html) + * [Gradle in IntelliJ](https://www.jetbrains.com/help/idea/gradle-settings.html) + * [Maven in Eclipse with m2e](https://projects.eclipse.org/projects/technology.m2e) + * [Gradle in Eclipse with Buildship](https://projects.eclipse.org/projects/tools.buildship) +* An existing Java Maven or Gradle project. You may also start a new project via one of the options below: + * [New Maven project in IntelliJ](https://www.jetbrains.com/help/idea/maven-support.html#create_new_maven_project) + * [Maven in 5 minutes](https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html) + +#### Importing Dapr's Java SDK +For a Maven project, add the following to your `pom.xml` file: +```xml + + ... + + ... + + + ossrh + https://oss.sonatype.org/content/repositories/snapshots + + + ossrh + https://oss.sonatype.org/service/local/staging/deploy/maven2/ + + + ... + + ... + + + ... + + + io.dapr + dapr-sdk + 0.2.0-SNAPSHOT + + + + io.dapr + dapr-sdk + 0.2.0-SNAPSHOT + + ... + + + +``` -### Installing +#### Running the examples Clone this repository including the submodules: ```sh @@ -19,40 +85,21 @@ Then head over to build the [Maven](https://maven.apache.org/install.html) (Apac mvn install ``` -### Running the examples Try the following examples to learn more about Dapr's Java SDK: -* [Invoking a service via Grpc](./examples/src/main/java/io/dapr/examples/invoke/grpc) -* [State management over Grpc](./examples/src/main/java/io/dapr/examples/state/grpc) -* [State management over HTTP](./examples/src/main/java/io/dapr/examples/state/http) - -### Creating and publishing the artifacts to Nexus Repository -From the root directory: - -```sh -mvn package -mvn deploy:deploy-file -DgeneratePom=false -DrepositoryId=nexus -Durl=http://localhost:8081/repository/maven-releases -DpomFile=pom.xml -Dfile=target/client-0.1.0-preview.jar -``` -For more documentation reference : - -https://maven.apache.org/plugins/maven-deploy-plugin - -https://help.sonatype.com/repomanager3/user-interface/uploading-components - -### Maven Module version management -To increase the version of all modules and pom files, run the following commands: - -```sh -mvn versions:set -DnewVersion="0.1.0-preview02" -mvn versions:commit -``` +* [Invoking a Http service](./examples/src/main/java/io/dapr/examples/invoke/http) +* [Invoking a Grpc service](./examples/src/main/java/io/dapr/examples/invoke/grpc) +* [State management](./examples/src/main/java/io/dapr/examples/state) +* [PubSub with subscriber over Http](./examples/src/main/java/io/dapr/examples/pubsub/http) +* [Binding with input over Http](./examples/src/main/java/io/dapr/examples/bindings/http) +* [Actors over Http](./examples/src/main/java/io/dapr/examples/actors/http) -### Debug Java application or Dapr's Java SDK +#### Debug Java application or Dapr's Java SDK If you have a Java application or an issue on this SDK that needs to be debugged, run Dapr using a dummy command and start the application from your IDE (IntelliJ, for example). For Linux and MacOS: ```sh -dapr run --app-id testapp --app-port 3000 --port 3500 --grpc-port 5001-- cat +dapr run --app-id testapp --app-port 3000 --port 3500 --grpc-port 5001 -- cat ``` For Windows: @@ -70,6 +117,30 @@ Now you can go to your IDE (like IntelliJ, for example) and debug your Java appl Calls to Dapr's APIs on `http://localhost:3500/*` should work now and trigger breakpoints in your code. -**If your application needs to suscribe to topics or register Actors in Dapr, for example, then start debugging your app first and run dapr with dummy command last.** +**If your application needs to subscribe to topics or register Actors in Dapr, for example, then start debugging your app first and run dapr with dummy command last.** **If using Visual Studio Code, also consider [this solution as well](https://github.com/dapr/docs/tree/master/howto/vscode-debugging-daprd).** + +#### Creating and publishing the artifacts to Nexus Repository +In case you need to publish Dapr's SDK to a private Nexus repo, run the command below from the project's root directory: + +```sh +mvn package +mvn deploy:deploy-file -DgeneratePom=false -DrepositoryId=nexus -Durl=http://localhost:8081/repository/maven-releases -DpomFile=pom.xml -Dfile=target/dapr-sdk-0.2.0.jar +``` + +For more documentation reference : + +https://maven.apache.org/plugins/maven-deploy-plugin + +https://help.sonatype.com/repomanager3/user-interface/uploading-components + +### Development + +#### Maven Module version management +When releasing a new version of this SDK you must increase the version of all modules and pom files, so run the following commands: + +```sh +mvn versions:set -DnewVersion="0.1.0-preview02" +mvn versions:commit +``` \ No newline at end of file