tisonkun commented on code in PR #18569:
URL: https://github.com/apache/pulsar/pull/18569#discussion_r1029984631


##########
site2/docs/functions-package-java.md:
##########
@@ -10,7 +10,23 @@ For the runtime Java version, refer to [Pulsar Runtime Java 
Version Recommendati
 
 :::
 
-To package a Java function, complete the following steps.
+There are two methods to package Java Functions, that is [uber 
JAR](#package-as-jar) and [NAR](#package-as-nar).
+
+:::note
+
+If you plan to package and distribute your function for others to use, you are 
obligated to
+license and copyright your own code properly. Remember to add the license and 
copyright to
+all libraries your code uses and to your distribution.
+
+:::
+
+> If you use the [NAR](#package-as-nar) method, the NAR plugin
+automatically creates a `DEPENDENCIES` file in the generated NAR package, 
including the proper
+licensing and copyrights of all libraries of your function.

Review Comment:
   They seem similar notes/tips, why different syntax?
   
   You may read the syntax guide 
(https://pulsar.apache.org/contribute/document-syntax/#admonitions) for what is 
expected here.



##########
site2/docs/functions-package-java.md:
##########
@@ -106,3 +122,90 @@ To package a Java function, complete the following steps.
     07:55:03.724 [main] INFO  
org.apache.pulsar.functions.runtime.ProcessRuntime - Started process 
successfully
     ...
    ```
+
+# Package as NAR
+
+To package a Java function as NAR, complete the following steps.
+
+1. Create a new maven project with a pom file.
+
+   ```xml
+    <?xml version="1.0" encoding="UTF-8"?>
+    <project xmlns="http://maven.apache.org/POM/4.0.0";
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+            xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+        <modelVersion>4.0.0</modelVersion>
+
+        <groupId>java-function</groupId>
+        <artifactId>java-function</artifactId>
+        <version>1.0-SNAPSHOT</version>
+
+        <dependencies>
+            <dependency>
+                <groupId>org.apache.pulsar</groupId>
+                <artifactId>pulsar-functions-api</artifactId>
+                <version>2.10.0</version>
+            </dependency>
+        </dependencies>
+
+        <build>
+            <plugins>
+                <plugin>
+                    <groupId>org.apache.nifi</groupId>
+                    <artifactId>nifi-nar-maven-plugin</artifactId>
+                    <version>1.2.0</version>
+                    </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-compiler-plugin</artifactId>
+                    <configuration>
+                        <release>17</release>
+                    </configuration>
+                </plugin>
+            </plugins>
+        </build>
+
+    </project>
+   ```
+
+You must also create a `resources/META-INF/services/pulsar-io.yaml` file. In 
the following code sample, the value of `functionClass` is your function class 
name. The `name` is the one used when the Function is deployed as a 
[built-in](functions-deploy-cluster-builtin.md) one.
+
+```yaml
+name: java-function
+description: my java function
+functionClass: org.example.test.ExclamationFunction
+```

Review Comment:
   Also one-level ident?



##########
site2/docs/functions-deploy-cluster-builtin.md:
##########
@@ -0,0 +1,30 @@
+---
+id: functions-deploy-cluster-builtin
+title: Built-in functions
+sidebar_label: "Built-in functions"
+---
+
+Similar to built-in connectors, the code of Java functions [packaged as 
NAR](functions-package-java.md) that are placed in the `functions` directory of 
the function worker are loaded at startup and can be referenced when creating a 
function.
+
+For instance if you have a built-in function with name `exclamation` in its 
`pulsar-io.yaml`, you can create a function instance with:
+
+```bash
+bin/pulsar-admin functions create \
+  --function-type exclamation \
+  --inputs persistent://public/default/input-1 \
+  --output persistent://public/default/output-1
+```
+
+To get the list of available built-in Functions, use the `available-functions` 
command:
+
+```bash
+bin/pulsar-admin functions available-functions
+```
+
+If you add or delete a nar file in a `functions` folder, reload the available 
built-in functions before using it.
+
+```bash
+bin/pulsar-admin functions reload
+```
+
+

Review Comment:
   ```suggestion
   ```
   
   Trim whitespace.



##########
site2/docs/functions-package-java.md:
##########
@@ -106,3 +122,90 @@ To package a Java function, complete the following steps.
     07:55:03.724 [main] INFO  
org.apache.pulsar.functions.runtime.ProcessRuntime - Started process 
successfully
     ...
    ```
+
+# Package as NAR
+
+To package a Java function as NAR, complete the following steps.
+
+1. Create a new maven project with a pom file.
+
+   ```xml
+    <?xml version="1.0" encoding="UTF-8"?>
+    <project xmlns="http://maven.apache.org/POM/4.0.0";
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+            xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+        <modelVersion>4.0.0</modelVersion>
+
+        <groupId>java-function</groupId>
+        <artifactId>java-function</artifactId>
+        <version>1.0-SNAPSHOT</version>
+
+        <dependencies>
+            <dependency>
+                <groupId>org.apache.pulsar</groupId>
+                <artifactId>pulsar-functions-api</artifactId>
+                <version>2.10.0</version>
+            </dependency>
+        </dependencies>
+
+        <build>
+            <plugins>
+                <plugin>
+                    <groupId>org.apache.nifi</groupId>
+                    <artifactId>nifi-nar-maven-plugin</artifactId>
+                    <version>1.2.0</version>
+                    </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-compiler-plugin</artifactId>
+                    <configuration>
+                        <release>17</release>
+                    </configuration>
+                </plugin>
+            </plugins>
+        </build>
+
+    </project>
+   ```
+
+You must also create a `resources/META-INF/services/pulsar-io.yaml` file. In 
the following code sample, the value of `functionClass` is your function class 
name. The `name` is the one used when the Function is deployed as a 
[built-in](functions-deploy-cluster-builtin.md) one.
+
+```yaml
+name: java-function
+description: my java function
+functionClass: org.example.test.ExclamationFunction
+```
+
+2. Package your Java function.
+
+   ```bash
+    mvn package

Review Comment:
   ```suggestion
      mvn package
   ```
   
   Remove leading whitespace. Ditto others.



##########
site2/docs/functions-package-java.md:
##########
@@ -106,3 +122,90 @@ To package a Java function, complete the following steps.
     07:55:03.724 [main] INFO  
org.apache.pulsar.functions.runtime.ProcessRuntime - Started process 
successfully
     ...
    ```
+
+# Package as NAR
+
+To package a Java function as NAR, complete the following steps.
+
+1. Create a new maven project with a pom file.
+
+   ```xml
+    <?xml version="1.0" encoding="UTF-8"?>
+    <project xmlns="http://maven.apache.org/POM/4.0.0";
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+            xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+        <modelVersion>4.0.0</modelVersion>
+
+        <groupId>java-function</groupId>
+        <artifactId>java-function</artifactId>
+        <version>1.0-SNAPSHOT</version>
+
+        <dependencies>
+            <dependency>
+                <groupId>org.apache.pulsar</groupId>
+                <artifactId>pulsar-functions-api</artifactId>
+                <version>2.10.0</version>

Review Comment:
   ```suggestion
                   <version>@pulsar:version@</version>
   ```
   
   Perhaps resolve to the lastest version.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to