This is an automated email from the ASF dual-hosted git repository.

yhu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/beam.git


The following commit(s) were added to refs/heads/master by this push:
     new 9f8dda274dc Split standalone transform service application from 
launcher jar (#30190)
9f8dda274dc is described below

commit 9f8dda274dc7f7f562fb10bc9153d40ebf593ff0
Author: Yi Hu <[email protected]>
AuthorDate: Fri Feb 2 21:51:47 2024 -0500

    Split standalone transform service application from launcher jar (#30190)
---
 build.gradle.kts                                   |  1 +
 .../org/apache/beam/gradle/BeamModulePlugin.groovy |  6 +--
 sdks/java/extensions/python/build.gradle           |  2 +-
 sdks/java/harness/build.gradle                     |  2 +-
 .../{launcher => app}/build.gradle                 | 45 ++++++----------------
 sdks/java/transform-service/launcher/build.gradle  | 23 +++--------
 .../utils/transform_service_launcher.py            |  2 +-
 settings.gradle.kts                                |  1 +
 .../content/en/documentation/programming-guide.md  |  4 +-
 9 files changed, 27 insertions(+), 59 deletions(-)

diff --git a/build.gradle.kts b/build.gradle.kts
index 82b3b6356a6..7e4c6cdc71a 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -312,6 +312,7 @@ tasks.register("javaPreCommit") {
   dependsOn(":sdks:java:testing:tpcds:build")
   dependsOn(":sdks:java:testing:watermarks:build")
   dependsOn(":sdks:java:transform-service:build")
+  dependsOn(":sdks:java:transform-service:app:build")
   dependsOn(":sdks:java:transform-service:launcher:build")
 }
 
diff --git 
a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy 
b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy
index f3d79c528f8..10a7ba7f1c8 100644
--- a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy
+++ b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy
@@ -2860,7 +2860,7 @@ class BeamModulePlugin implements Plugin<Project> {
       project.evaluationDependsOn(":sdks:python")
       project.evaluationDependsOn(":runners:core-construction-java")
       project.evaluationDependsOn(":sdks:java:extensions:python")
-      project.evaluationDependsOn(":sdks:java:transform-service:launcher")
+      project.evaluationDependsOn(":sdks:java:transform-service:app")
 
       def usesDataflowRunner = 
config.pythonPipelineOptions.contains("--runner=TestDataflowRunner") || 
config.pythonPipelineOptions.contains("--runner=DataflowRunner")
 
@@ -2868,7 +2868,7 @@ class BeamModulePlugin implements Plugin<Project> {
       def envDir = project.project(":sdks:python").envdir
       def pythonDir = project.project(":sdks:python").projectDir
       def externalPort = getRandomPort()
-      def launcherJar = 
project.project(':sdks:java:transform-service:launcher').shadowJar.archivePath
+      def launcherJar = 
project.project(':sdks:java:transform-service:app').shadowJar.archivePath
       def groupId = project.name + randomUUID().toString()
       def transformServiceOpts = [
         "transform_service_launcher_jar": launcherJar,
@@ -2895,7 +2895,7 @@ class BeamModulePlugin implements Plugin<Project> {
         dependsOn ':sdks:python:expansion-service-container:docker'
         dependsOn ':sdks:java:expansion-service:container:docker'
         dependsOn ":sdks:python:installGcpTest"
-        dependsOn 
project.project(':sdks:java:transform-service:launcher').shadowJar.getPath()
+        dependsOn 
project.project(':sdks:java:transform-service:app').shadowJar.getPath()
 
         if (usesDataflowRunner) {
           dependsOn 
":sdks:python:test-suites:dataflow:py${project.ext.pythonVersion.replace('.', 
'')}:initializeForDataflowJob"
diff --git a/sdks/java/extensions/python/build.gradle 
b/sdks/java/extensions/python/build.gradle
index 40729d5f9ca..a83afac6881 100644
--- a/sdks/java/extensions/python/build.gradle
+++ b/sdks/java/extensions/python/build.gradle
@@ -30,7 +30,7 @@ dependencies {
     implementation project(path: ":model:pipeline", configuration: "shadow")
     implementation project(path: ":runners:core-construction-java")
     implementation project(path: ":sdks:java:core", configuration: "shadow")
-    implementation project(path: ":sdks:java:transform-service:launcher", 
configuration: "shadow")
+    implementation project(path: ":sdks:java:transform-service:launcher")
     testImplementation library.java.junit
     testImplementation library.java.hamcrest
     testImplementation 
project(":runners:core-construction-java").sourceSets.test.output
diff --git a/sdks/java/harness/build.gradle b/sdks/java/harness/build.gradle
index d3b4267424c..3c50f3c8edf 100644
--- a/sdks/java/harness/build.gradle
+++ b/sdks/java/harness/build.gradle
@@ -29,7 +29,7 @@ dependencies {
   // :sdks:java:core and transitive dependencies
   provided project(path: ":model:pipeline", configuration: "shadow")
   provided project(path: ":sdks:java:core", configuration: "shadow")
-  provided project(path: ":sdks:java:transform-service:launcher", 
configuration: "shadow")
+  provided project(path: ":sdks:java:transform-service:launcher")
   provided library.java.avro
   provided library.java.joda_time
   provided library.java.slf4j_api
diff --git a/sdks/java/transform-service/launcher/build.gradle 
b/sdks/java/transform-service/app/build.gradle
similarity index 53%
copy from sdks/java/transform-service/launcher/build.gradle
copy to sdks/java/transform-service/app/build.gradle
index 0952f37109e..5125899bec9 100644
--- a/sdks/java/transform-service/launcher/build.gradle
+++ b/sdks/java/transform-service/app/build.gradle
@@ -15,48 +15,25 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 apply plugin: 'org.apache.beam.module'
 apply plugin: 'application'
-mainClassName = 
"org.apache.beam.sdk.transformservice.launcher.TransformServiceLauncher"
 
 applyJavaNature(
-        automaticModuleName: 'org.apache.beam.sdk.transform.service',
-        exportJavadoc: false,
-        validateShadowJar: false,
-        shadowClosure: {},
+    automaticModuleName: 'org.apache.beam.sdk.transform.service.app',
+    exportJavadoc: false,
+    validateShadowJar: false,
+    shadowClosure: {},
 )
+mainClassName = 
"org.apache.beam.sdk.transformservice.launcher.TransformServiceLauncher"
 
-
-description = "Apache Beam :: SDKs :: Java :: Transform Service :: Launcher"
-ext.summary = """Contains code that can be used to run an transform service."""
-
-
-// Exclude tests that need a runner
-test {
-    systemProperty "beamUseDummyRunner", "true"
-    useJUnit {
-        excludeCategories "org.apache.beam.sdk.testing.NeedsRunner"
-    }
-}
+description = "Apache Beam :: SDKs :: Java :: Transform Service :: App"
+ext.summary = """Runs a transform service."""
 
 dependencies {
-    shadow library.java.vendored_guava_32_1_2_jre
-    shadow library.java.slf4j_api
-    shadow library.java.args4j
-    shadow library.java.error_prone_annotations
-    permitUnusedDeclared(library.java.error_prone_annotations)
-    testImplementation library.java.junit
-    testImplementation library.java.mockito_core
-    testImplementation project(path: ":sdks:java:core")
-}
-
-sourceSets {
-    main {
-        resources {
-            srcDirs "../docker-compose"
-        }
-        output.resourcesDir = "$buildDir/resources/docker-compose/$name"
-    }
+    implementation project(":sdks:java:transform-service:launcher")
+    permitUnusedDeclared project(":sdks:java:transform-service:launcher")
+    runtimeOnly library.java.slf4j_jdk14
 }
 
 jar {
diff --git a/sdks/java/transform-service/launcher/build.gradle 
b/sdks/java/transform-service/launcher/build.gradle
index 0952f37109e..e225d8da2f1 100644
--- a/sdks/java/transform-service/launcher/build.gradle
+++ b/sdks/java/transform-service/launcher/build.gradle
@@ -16,17 +16,11 @@
  * limitations under the License.
  */
 apply plugin: 'org.apache.beam.module'
-apply plugin: 'application'
-mainClassName = 
"org.apache.beam.sdk.transformservice.launcher.TransformServiceLauncher"
 
 applyJavaNature(
-        automaticModuleName: 'org.apache.beam.sdk.transform.service',
-        exportJavadoc: false,
-        validateShadowJar: false,
-        shadowClosure: {},
+    automaticModuleName: 'org.apache.beam.sdk.transform.service',
 )
 
-
 description = "Apache Beam :: SDKs :: Java :: Transform Service :: Launcher"
 ext.summary = """Contains code that can be used to run an transform service."""
 
@@ -40,10 +34,11 @@ test {
 }
 
 dependencies {
-    shadow library.java.vendored_guava_32_1_2_jre
-    shadow library.java.slf4j_api
-    shadow library.java.args4j
-    shadow library.java.error_prone_annotations
+    //  This library is designed to be light-weight, having minimum amount of 
dependencies and is used by Beam runner artifacts.
+    implementation library.java.vendored_guava_32_1_2_jre
+    implementation library.java.slf4j_api
+    implementation library.java.args4j
+    compileOnly library.java.error_prone_annotations
     permitUnusedDeclared(library.java.error_prone_annotations)
     testImplementation library.java.junit
     testImplementation library.java.mockito_core
@@ -58,9 +53,3 @@ sourceSets {
         output.resourcesDir = "$buildDir/resources/docker-compose/$name"
     }
 }
-
-jar {
-    manifest {
-        attributes 'Main-Class': application.mainClass
-    }
-}
diff --git a/sdks/python/apache_beam/utils/transform_service_launcher.py 
b/sdks/python/apache_beam/utils/transform_service_launcher.py
index ac492513aba..ca3e456c523 100644
--- a/sdks/python/apache_beam/utils/transform_service_launcher.py
+++ b/sdks/python/apache_beam/utils/transform_service_launcher.py
@@ -35,7 +35,7 @@ _LOGGER = logging.getLogger(__name__)
 
 _COMMAND_POSSIBLE_VALUES = ['up', 'down', 'ps']
 
-_EXPANSION_SERVICE_LAUNCHER_JAR = ':sdks:java:transform-service:launcher:build'
+_EXPANSION_SERVICE_LAUNCHER_JAR = ':sdks:java:transform-service:app:build'
 
 
 class TransformServiceLauncher(object):
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 034df0fbda5..512820fce3f 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -277,6 +277,7 @@ include(":sdks:java:testing:test-utils")
 include(":sdks:java:testing:tpcds")
 include(":sdks:java:testing:watermarks")
 include(":sdks:java:transform-service")
+include(":sdks:java:transform-service:app")
 include(":sdks:java:transform-service:launcher")
 include(":sdks:java:transform-service:controller-container")
 include(":sdks:python")
diff --git a/website/www/site/content/en/documentation/programming-guide.md 
b/website/www/site/content/en/documentation/programming-guide.md
index 47808063254..d3333c1f9f6 100644
--- a/website/www/site/content/en/documentation/programming-guide.md
+++ b/website/www/site/content/en/documentation/programming-guide.md
@@ -8165,7 +8165,7 @@ Beam users also have the option to [manually 
start](/documentation/programming-g
 A Beam Transform service instance can be manually started by using utilities 
provided with Apache Beam SDKs.
 
 {{< highlight java >}}
-java -jar beam-sdks-java-transform-service-launcher-<Beam version for the 
jar>.jar --port <port> --beam_version <Beam version for the transform service> 
--project_name <a unique ID for the transform service> --command up
+java -jar beam-sdks-java-transform-service-app-<Beam version for the jar>.jar 
--port <port> --beam_version <Beam version for the transform service> 
--project_name <a unique ID for the transform service> --command up
 {{< /highlight >}}
 
 {{< highlight py >}}
@@ -8179,7 +8179,7 @@ This feature is currently in development.
 To stop the transform service, use the following commands.
 
 {{< highlight java >}}
-java -jar beam-sdks-java-transform-service-launcher-<Beam version for the 
jar>.jar --port <port> --beam_version <Beam version for the transform service> 
--project_name <a unique ID for the transform service> --command down
+java -jar beam-sdks-java-transform-service-app-<Beam version for the jar>.jar 
--port <port> --beam_version <Beam version for the transform service> 
--project_name <a unique ID for the transform service> --command down
 {{< /highlight >}}
 
 {{< highlight py >}}

Reply via email to