[
https://issues.apache.org/jira/browse/BEAM-6178?focusedWorklogId=174221&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-174221
]
ASF GitHub Bot logged work on BEAM-6178:
----------------------------------------
Author: ASF GitHub Bot
Created on: 11/Dec/18 19:00
Start Date: 11/Dec/18 19:00
Worklog Time Spent: 10m
Work Description: swegner closed pull request #7197: [BEAM-6178] Adding
beam-sdks-java-bom, adding exportJavadoc flag for applyJavaNature
URL: https://github.com/apache/beam/pull/7197
This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:
As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):
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 329a6edbb3ec..acfffc9c72c4 100644
--- a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy
+++ b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy
@@ -123,6 +123,9 @@ class BeamModulePlugin implements Plugin<Project> {
/** Controls whether this project is published to Maven. */
boolean publish = true
+
+ /** Controls whether javadoc is exported for this project. */
+ boolean exportJavadoc = true
}
/** A class defining the set of configurable properties accepted by
applyPortabilityNature. */
@@ -489,6 +492,47 @@ class BeamModulePlugin implements Plugin<Project> {
relocate "com.google.thirdparty",
project.getJavaRelocatedPath("com.google.thirdparty")
}
+ project.ext.repositories = {
+ maven {
+ name "testPublicationLocal"
+ url "file://${project.rootProject.projectDir}/testPublication/"
+ }
+ maven {
+ url(project.properties['distMgmtSnapshotsUrl'] ?: isRelease(project)
+ ?
'https://repository.apache.org/service/local/staging/deploy/maven2'
+ :
'https://repository.apache.org/content/repositories/snapshots')
+
+ // We attempt to find and load credentials from ~/.m2/settings.xml
file that a user
+ // has configured with the Apache release and snapshot staging
credentials.
+ // <settings>
+ // <servers>
+ // <server>
+ // <id>apache.releases.https</id>
+ // <username>USER_TOKEN</username>
+ // <password>PASS_TOKEN</password>
+ // </server>
+ // <server>
+ // <id>apache.snapshots.https</id>
+ // <username>USER_TOKEN</username>
+ // <password>PASS_TOKEN</password>
+ // </server>
+ // </servers>
+ // </settings>
+ def settingsXml = new File(System.getProperty('user.home'),
'.m2/settings.xml')
+ if (settingsXml.exists()) {
+ def serverId = (project.properties['distMgmtServerId'] ?:
isRelease(project)
+ ? 'apache.releases.https' : 'apache.snapshots.https')
+ def m2SettingCreds = new
XmlSlurper().parse(settingsXml).servers.server.find { server ->
serverId.equals(server.id.text()) }
+ if (m2SettingCreds) {
+ credentials {
+ username m2SettingCreds.username.text()
+ password m2SettingCreds.password.text()
+ }
+ }
+ }
+ }
+ }
+
// Configures a project with a default set of plugins that should apply to
all Java projects.
//
// Users should invoke this method using Groovy map syntax. For example:
@@ -789,6 +833,9 @@ class BeamModulePlugin implements Plugin<Project> {
project.tasks.check.dependsOn
project.tasks.validateShadedJarDoesntLeakNonProjectClasses
}
+ project.ext.includeInJavaBom = configuration.publish
+ project.ext.exportJavadoc = configuration.exportJavadoc
+
if ((isRelease(project) || project.hasProperty('publishing')) &&
configuration.publish) {
project.apply plugin: "maven-publish"
@@ -855,46 +902,7 @@ artifactId=${project.name}
project.artifacts.archives project.javadocJar
project.publishing {
- repositories {
- maven {
- name "testPublicationLocal"
- url "file://${project.rootProject.projectDir}/testPublication/"
- }
- maven {
- url(project.properties['distMgmtSnapshotsUrl'] ?:
isRelease(project)
- ?
'https://repository.apache.org/service/local/staging/deploy/maven2'
- :
'https://repository.apache.org/content/repositories/snapshots')
-
- // We attempt to find and load credentials from
~/.m2/settings.xml file that a user
- // has configured with the Apache release and snapshot staging
credentials.
- // <settings>
- // <servers>
- // <server>
- // <id>apache.releases.https</id>
- // <username>USER_TOKEN</username>
- // <password>PASS_TOKEN</password>
- // </server>
- // <server>
- // <id>apache.snapshots.https</id>
- // <username>USER_TOKEN</username>
- // <password>PASS_TOKEN</password>
- // </server>
- // </servers>
- // </settings>
- def settingsXml = new File(System.getProperty('user.home'),
'.m2/settings.xml')
- if (settingsXml.exists()) {
- def serverId = (project.properties['distMgmtServerId'] ?:
isRelease(project)
- ? 'apache.releases.https' : 'apache.snapshots.https')
- def m2SettingCreds = new
XmlSlurper().parse(settingsXml).servers.server.find { server ->
serverId.equals(server.id.text()) }
- if (m2SettingCreds) {
- credentials {
- username m2SettingCreds.username.text()
- password m2SettingCreds.password.text()
- }
- }
- }
- }
- }
+ repositories = project.ext.repositories
publications {
mavenJava(MavenPublication) {
@@ -1368,6 +1376,7 @@ artifactId=${project.name}
PortabilityNatureConfiguration configuration = it ? it as
PortabilityNatureConfiguration : new PortabilityNatureConfiguration()
project.ext.applyJavaNature(
+ exportJavadoc: false,
enableFindbugs: false,
shadowJarValidationExcludes: it.shadowJarValidationExcludes,
shadowClosure: GrpcVendoring.shadowClosure() << {
diff --git a/examples/java/build.gradle b/examples/java/build.gradle
index 4d98ba68a6ea..7b7fe3ebb620 100644
--- a/examples/java/build.gradle
+++ b/examples/java/build.gradle
@@ -19,7 +19,7 @@
import groovy.json.JsonOutput
apply plugin: org.apache.beam.gradle.BeamModulePlugin
-applyJavaNature()
+applyJavaNature(exportJavadoc: false)
provideIntegrationTestingDependencies()
enableJavaPerformanceTesting()
diff --git a/runners/extensions-java/metrics/build.gradle
b/runners/extensions-java/metrics/build.gradle
index 605f17b56979..cc5026be6d30 100644
--- a/runners/extensions-java/metrics/build.gradle
+++ b/runners/extensions-java/metrics/build.gradle
@@ -17,7 +17,7 @@
*/
apply plugin: org.apache.beam.gradle.BeamModulePlugin
-applyJavaNature()
+applyJavaNature(exportJavadoc: false)
description = "Apache Beam :: Runners :: Extensions Java :: Metrics"
ext.summary = "Beam Runners Extensions Metrics provides implementations of
runners core metrics APIs."
diff --git a/runners/flink/job-server/build.gradle
b/runners/flink/job-server/build.gradle
index 96ee3c06a05d..08a6e2eead9c 100644
--- a/runners/flink/job-server/build.gradle
+++ b/runners/flink/job-server/build.gradle
@@ -19,6 +19,7 @@ import groovy.json.JsonOutput
apply plugin: org.apache.beam.gradle.BeamModulePlugin
applyJavaNature(
+ exportJavadoc: false,
validateShadowJar: false,
shadowClosure: {
append "reference.conf"
diff --git a/runners/google-cloud-dataflow-java/examples-streaming/build.gradle
b/runners/google-cloud-dataflow-java/examples-streaming/build.gradle
index f52ec1dc65ce..fca2a38efe04 100644
--- a/runners/google-cloud-dataflow-java/examples-streaming/build.gradle
+++ b/runners/google-cloud-dataflow-java/examples-streaming/build.gradle
@@ -19,7 +19,7 @@
import groovy.json.JsonOutput
apply plugin: org.apache.beam.gradle.BeamModulePlugin
-applyJavaNature(publish: false)
+applyJavaNature(publish: false, exportJavadoc: false)
// Evaluate the given project before this one, to allow referencing
// its sourceSets.test.output directly.
evaluationDependsOn(":beam-examples-java")
diff --git a/runners/google-cloud-dataflow-java/examples/build.gradle
b/runners/google-cloud-dataflow-java/examples/build.gradle
index e1e8bf8f34da..5c7d15b76263 100644
--- a/runners/google-cloud-dataflow-java/examples/build.gradle
+++ b/runners/google-cloud-dataflow-java/examples/build.gradle
@@ -19,7 +19,7 @@
import groovy.json.JsonOutput
apply plugin: org.apache.beam.gradle.BeamModulePlugin
-applyJavaNature(publish: false)
+applyJavaNature(publish: false, exportJavadoc: false)
// Evaluate the given project before this one, to allow referencing
// its sourceSets.test.output directly.
evaluationDependsOn(":beam-examples-java")
diff --git a/runners/google-cloud-dataflow-java/worker/build.gradle
b/runners/google-cloud-dataflow-java/worker/build.gradle
index 70b587a0909e..555fe293c938 100644
--- a/runners/google-cloud-dataflow-java/worker/build.gradle
+++ b/runners/google-cloud-dataflow-java/worker/build.gradle
@@ -26,17 +26,23 @@ def DATAFLOW_VERSION = "dataflow.version"
// Get full dependency of 'com.google.apis:google-api-services-dataflow'
def google_api_services_dataflow = project.hasProperty(DATAFLOW_VERSION) ?
"com.google.apis:google-api-services-dataflow:" + getProperty(DATAFLOW_VERSION)
: library.java.google_api_services_dataflow
-applyJavaNature(publish: false, enableFindbugs: false /* TODO(BEAM-5658):
enable findbugs */, validateShadowJar: false, shadowClosure: {
- // In the case of the Fn API worker jar we are creating an application so we
rely on
- // the shadow plugin to include all transitive dependencies to create an
uber jar.
+applyJavaNature(
+ publish: false,
+ exportJavadoc: false,
+ enableFindbugs: false /* TODO(BEAM-5658): enable findbugs */,
+ validateShadowJar: false,
+ shadowClosure: {
+ // In the case of the Fn API worker jar we are creating an application so
we rely on
+ // the shadow plugin to include all transitive dependencies to create an
uber jar.
- // Include original source files extracted under
- // '$buildDir/original_sources_to_package' to jar
- from "$buildDir/original_sources_to_package"
+ // Include original source files extracted under
+ // '$buildDir/original_sources_to_package' to jar
+ from "$buildDir/original_sources_to_package"
- exclude "META-INF/LICENSE.txt"
- exclude "about.html"
-})
+ exclude "META-INF/LICENSE.txt"
+ exclude "about.html"
+ },
+)
/******************************************************************************/
// Configure the worker root project
diff --git
a/runners/google-cloud-dataflow-java/worker/legacy-worker/build.gradle
b/runners/google-cloud-dataflow-java/worker/legacy-worker/build.gradle
index 7551758df984..0746c74d3f19 100644
--- a/runners/google-cloud-dataflow-java/worker/legacy-worker/build.gradle
+++ b/runners/google-cloud-dataflow-java/worker/legacy-worker/build.gradle
@@ -80,6 +80,7 @@ def excluded_dependencies = [
applyJavaNature(
publish: false,
+ exportJavadoc: false,
enableFindbugs: false /* TODO(BEAM-5658): enable findbugs */,
shadowJarValidationExcludes: [
"org/apache/beam/runners/dataflow/worker/**",
diff --git a/runners/reference/job-server/build.gradle
b/runners/reference/job-server/build.gradle
index 919573d7df0b..5c2cd568e903 100644
--- a/runners/reference/job-server/build.gradle
+++ b/runners/reference/job-server/build.gradle
@@ -19,6 +19,7 @@ import groovy.json.JsonOutput
apply plugin: org.apache.beam.gradle.BeamModulePlugin
applyJavaNature(
+ exportJavadoc: false,
validateShadowJar: false,
shadowClosure: {
}
diff --git a/runners/samza/build.gradle b/runners/samza/build.gradle
index 3f9147afbeab..7687c8841ac5 100644
--- a/runners/samza/build.gradle
+++ b/runners/samza/build.gradle
@@ -19,7 +19,7 @@
import groovy.json.JsonOutput
apply plugin: org.apache.beam.gradle.BeamModulePlugin
-applyJavaNature()
+applyJavaNature(exportJavadoc: false)
description = "Apache Beam :: Runners :: Samza"
diff --git a/sdks/java/bom/build.gradle b/sdks/java/bom/build.gradle
new file mode 100644
index 000000000000..b0375c44b2b2
--- /dev/null
+++ b/sdks/java/bom/build.gradle
@@ -0,0 +1,122 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * License); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// beam-sdks-java-bom generates a BOM (Bill of Materials) in the form of
+// a pom.xml file, which enables users to easily import multiple modules
+// from Beam at the same version. See
+//
https://github.com/GoogleCloudPlatform/cloud-opensource-java/blob/master/library-best-practices/JLBP-15.md
+// for more details on BOMs.
+
+apply plugin: org.apache.beam.gradle.BeamModulePlugin
+
+apply plugin: "java"
+apply plugin: "maven-publish"
+
+def isRelease(Project project) {
+ return project.hasProperty('isRelease')
+}
+
+ext {
+ mavenJavaDir = "$project.buildDir/publications/mavenJava"
+ mavenJavaBomOutputFile = file(mavenJavaDir + "/pom-default.xml")
+}
+
+for (p in rootProject.subprojects) {
+ if (!p.name.equals(project.name)) {
+ evaluationDependsOn(':' + p.name)
+ }
+}
+
+def bomModuleNames = new ArrayList<>()
+for (p in rootProject.subprojects) {
+ def subproject = project(':' + p.name)
+ if (subproject.ext.properties.containsKey('includeInJavaBom') &&
+ subproject.ext.properties.includeInJavaBom) {
+ bomModuleNames.add(subproject.name)
+ }
+}
+
+// Copy our pom.xml to the location where a generated POM would go
+task copyPom(type: Copy) {
+ from 'pom.xml.template'
+ into mavenJavaDir
+ rename 'pom.xml.template', 'pom-default.xml'
+ expand(version: project.version, modules: bomModuleNames)
+}
+
+assemble.dependsOn copyPom
+
+// We want to use our own pom.xml instead of the generated one, so we disable
+// the pom.xml generation and have the publish tasks depend on `copyPom`
instead.
+tasks.whenTaskAdded { task ->
+ if (task.name == 'generatePomFileForMavenJavaPublication') {
+ task.enabled = false
+ } else if (task.name == 'publishMavenJavaPublicationToMavenLocal') {
+ task.dependsOn copyPom
+ } else if (task.name == 'publishMavenJavaPublicationToMavenRepository') {
+ task.dependsOn copyPom
+ }
+}
+
+jar.enabled = false
+
+// Remove the default jar archive which is added by the 'java' plugin.
+configurations.archives.artifacts.with { archives ->
+ def artifacts = []
+ archives.each {
+ if (it.file =~ 'jar') {
+ // We can't just call `archives.remove(it)` here because it triggers
+ // a `ConcurrentModificationException`, so we add matching artifacts
+ // to another list, then remove those elements outside of this iteration.
+ artifacts.add(it)
+ }
+ }
+ artifacts.each {
+ archives.remove(it)
+ }
+}
+
+artifacts {
+ archives(mavenJavaBomOutputFile) {
+ builtBy copyPom
+ }
+}
+
+afterEvaluate {
+ // We can't use the `publishing` section from applyJavaNature because
+ // we don't want all the Java artifacts, and we want to use our own pom.xml
+ // instead of the generated one.
+ publishing {
+ publications {
+ mavenJava(MavenPublication) {
+ version = project.version
+ artifact mavenJavaBomOutputFile
+ }
+ }
+ repositories project.ext.repositories
+ }
+
+ // Only sign artifacts if we are performing a release
+ if (isRelease(project) && !project.hasProperty('noSigning')) {
+ apply plugin: "signing"
+ signing {
+ useGpgCmd()
+ sign publishing.publications
+ }
+ }
+}
diff --git a/sdks/java/bom/pom.xml.template b/sdks/java/bom/pom.xml.template
new file mode 100644
index 000000000000..7cade1aacbe1
--- /dev/null
+++ b/sdks/java/bom/pom.xml.template
@@ -0,0 +1,83 @@
+<?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">
+ <!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.apache.beam</groupId>
+ <artifactId>beam-sdks-java-bom</artifactId>
+ <version>${version}</version>
+ <packaging>pom</packaging>
+ <url>http://beam.apache.org</url>
+ <inceptionYear>2016</inceptionYear>
+ <licenses>
+ <license>
+ <name>Apache License, Version 2.0</name>
+ <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+ <distribution>repo</distribution>
+ </license>
+ </licenses>
+ <developers>
+ <developer>
+ <name>The Apache Beam Team</name>
+ <email>[email protected]</email>
+ <url>http://beam.apache.org</url>
+ <organization>Apache Software Foundation</organization>
+ <organizationUrl>http://www.apache.org</organizationUrl>
+ </developer>
+ </developers>
+ <mailingLists>
+ <mailingList>
+ <name>Beam Dev</name>
+ <subscribe>[email protected]</subscribe>
+ <unsubscribe>[email protected]</unsubscribe>
+ <post>[email protected]</post>
+ <archive>http://www.mail-archive.com/dev%beam.apache.org</archive>
+ </mailingList>
+ <mailingList>
+ <name>Beam User</name>
+ <subscribe>[email protected]</subscribe>
+ <unsubscribe>[email protected]</unsubscribe>
+ <post>[email protected]</post>
+ <archive>http://www.mail-archive.com/user%beam.apache.org</archive>
+ </mailingList>
+ <mailingList>
+ <name>Beam Commits</name>
+ <subscribe>[email protected]</subscribe>
+ <unsubscribe>[email protected]</unsubscribe>
+ <post>[email protected]</post>
+ <archive>http://www.mail-archive.com/commits%beam.apache.org</archive>
+ </mailingList>
+ </mailingLists>
+ <scm>
+
<connection>scm:git:https://gitbox.apache.org/repos/asf/beam.git</connection>
+
<developerConnection>scm:git:https://gitbox.apache.org/repos/asf/beam.git</developerConnection>
+ <url>https://gitbox.apache.org/repos/asf?p=beam.git;a=summary</url>
+ </scm>
+ <issueManagement>
+ <system>jira</system>
+ <url>https://issues.apache.org/jira/browse/BEAM</url>
+ </issueManagement>
+ <dependencyManagement>
+ <dependencies>
+ <% modules.each { moduleName -> %>
+ <dependency>
+ <groupId>org.apache.beam</groupId>
+ <artifactId>${moduleName}</artifactId>
+ <version>${version}</version>
+ </dependency>
+ <% } %>
+ </dependencies>
+ </dependencyManagement>
+</project>
diff --git a/sdks/java/build-tools/build.gradle
b/sdks/java/build-tools/build.gradle
index 4f5656014fb3..d6fa86ba68b8 100644
--- a/sdks/java/build-tools/build.gradle
+++ b/sdks/java/build-tools/build.gradle
@@ -17,6 +17,6 @@
*/
apply plugin: org.apache.beam.gradle.BeamModulePlugin
-applyJavaNature()
+applyJavaNature(exportJavadoc: false)
description = "Apache Beam :: SDKs :: Java :: Build Tools"
diff --git a/sdks/java/extensions/euphoria/build.gradle
b/sdks/java/extensions/euphoria/build.gradle
index e6ad57382ee6..6f04d8717f65 100644
--- a/sdks/java/extensions/euphoria/build.gradle
+++ b/sdks/java/extensions/euphoria/build.gradle
@@ -17,7 +17,7 @@
*/
apply plugin: org.apache.beam.gradle.BeamModulePlugin
-applyJavaNature()
+applyJavaNature(exportJavadoc: false)
description = "Apache Beam :: SDKs :: Java :: Extensions :: Euphoria Java 8
DSL"
diff --git a/sdks/java/extensions/kryo/build.gradle
b/sdks/java/extensions/kryo/build.gradle
index 6995551b37c5..305eb57020a0 100644
--- a/sdks/java/extensions/kryo/build.gradle
+++ b/sdks/java/extensions/kryo/build.gradle
@@ -22,14 +22,17 @@ ext {
kryoVersion = '4.0.2'
}
-applyJavaNature(shadowClosure: DEFAULT_SHADOW_CLOSURE << {
+applyJavaNature(
+ exportJavadoc: false,
+ shadowClosure: DEFAULT_SHADOW_CLOSURE << {
dependencies {
include(dependency('com.esotericsoftware:.*'))
include(dependency('org.ow2.asm:asm'))
}
relocate 'com.esotericsoftware',
getJavaRelocatedPath('com.esotericsoftware')
relocate 'org.objectweb', getJavaRelocatedPath('org.objectweb')
-})
+ }
+)
description = 'Apache Beam :: SDKs :: Java :: Extensions :: Kryo'
diff --git a/sdks/java/extensions/sql/jdbc/build.gradle
b/sdks/java/extensions/sql/jdbc/build.gradle
index d0a2379bba65..0bc2257e330e 100644
--- a/sdks/java/extensions/sql/jdbc/build.gradle
+++ b/sdks/java/extensions/sql/jdbc/build.gradle
@@ -19,7 +19,12 @@ import groovy.json.JsonOutput
*/
apply plugin: org.apache.beam.gradle.BeamModulePlugin
-applyJavaNature(testShadowJar: true, validateShadowJar: false, shadowClosure:
{})
+applyJavaNature(
+ exportJavadoc: false,
+ testShadowJar: true,
+ validateShadowJar: false,
+ shadowClosure: {}
+)
configurations {
integrationTest
diff --git a/sdks/java/io/common/build.gradle b/sdks/java/io/common/build.gradle
index 0dbb7907e9b5..a5629feaa35b 100644
--- a/sdks/java/io/common/build.gradle
+++ b/sdks/java/io/common/build.gradle
@@ -17,7 +17,7 @@
*/
apply plugin: org.apache.beam.gradle.BeamModulePlugin
-applyJavaNature()
+applyJavaNature(exportJavadoc: false)
description = "Apache Beam :: SDKs :: Java :: IO :: Common"
ext.summary = "Code used by all Beam IOs"
diff --git a/sdks/java/io/file-based-io-tests/build.gradle
b/sdks/java/io/file-based-io-tests/build.gradle
index 26267833b651..c22b6c8da311 100644
--- a/sdks/java/io/file-based-io-tests/build.gradle
+++ b/sdks/java/io/file-based-io-tests/build.gradle
@@ -17,7 +17,7 @@
*/
apply plugin: org.apache.beam.gradle.BeamModulePlugin
-applyJavaNature()
+applyJavaNature(exportJavadoc: false)
provideIntegrationTestingDependencies()
enableJavaPerformanceTesting()
diff --git a/sdks/java/io/kudu/build.gradle b/sdks/java/io/kudu/build.gradle
index 5457ec7dfdd0..e543e8f86d07 100644
--- a/sdks/java/io/kudu/build.gradle
+++ b/sdks/java/io/kudu/build.gradle
@@ -17,7 +17,7 @@
*/
apply plugin: org.apache.beam.gradle.BeamModulePlugin
-applyJavaNature()
+applyJavaNature(exportJavadoc: false)
provideIntegrationTestingDependencies()
enableJavaPerformanceTesting()
diff --git a/sdks/java/io/rabbitmq/build.gradle
b/sdks/java/io/rabbitmq/build.gradle
index bef18f9309e1..89624632ac79 100644
--- a/sdks/java/io/rabbitmq/build.gradle
+++ b/sdks/java/io/rabbitmq/build.gradle
@@ -17,7 +17,7 @@
*/
apply plugin: org.apache.beam.gradle.BeamModulePlugin
-applyJavaNature()
+applyJavaNature(exportJavadoc: false)
description = "Apache Beam :: SDKs :: Java :: IO :: RabbitMQ"
ext.summary = "IO to read and write to a RabbitMQ broker."
diff --git a/sdks/java/io/synthetic/build.gradle
b/sdks/java/io/synthetic/build.gradle
index 900f61d1722a..f147fab1e0d3 100644
--- a/sdks/java/io/synthetic/build.gradle
+++ b/sdks/java/io/synthetic/build.gradle
@@ -17,7 +17,7 @@
*/
apply plugin: org.apache.beam.gradle.BeamModulePlugin
-applyJavaNature()
+applyJavaNature(exportJavadoc: false)
description = "Apache Beam :: SDKs :: Java :: IO :: Synthetic"
ext.summary = "Generators of Synthetic IO for Testing."
diff --git a/sdks/java/javadoc/build.gradle b/sdks/java/javadoc/build.gradle
index e80f2634bdb8..87cb31855425 100644
--- a/sdks/java/javadoc/build.gradle
+++ b/sdks/java/javadoc/build.gradle
@@ -26,65 +26,33 @@
description = "Apache Beam :: SDKs :: Java :: Aggregated Javadoc"
apply plugin: 'java'
-def exportedJavadocProjects = [
- ':beam-runners-apex',
- ':beam-runners-core-construction-java',
- ':beam-runners-core-java',
- ':beam-runners-java-fn-execution',
- ':beam-runners-local-java-core',
- ':beam-runners-direct-java',
- ':beam-runners-reference-java',
- ':beam-runners-flink_2.11',
- ':beam-runners-google-cloud-dataflow-java',
- ':beam-runners-spark',
- ':beam-runners-gearpump',
- ':beam-sdks-java-core',
- ':beam-sdks-java-fn-execution',
- ':beam-sdks-java-extensions-google-cloud-platform-core',
- ':beam-sdks-java-extensions-join-library',
- ':beam-sdks-java-extensions-json-jackson',
- ':beam-sdks-java-extensions-protobuf',
- ':beam-sdks-java-extensions-sketching',
- ':beam-sdks-java-extensions-sorter',
- ':beam-sdks-java-extensions-sql',
- ':beam-sdks-java-harness',
- ':beam-sdks-java-io-amazon-web-services',
- ':beam-sdks-java-io-amqp',
- ':beam-sdks-java-io-cassandra',
- ':beam-sdks-java-io-elasticsearch',
- ':beam-sdks-java-io-elasticsearch-tests-2',
- ':beam-sdks-java-io-elasticsearch-tests-5',
- ':beam-sdks-java-io-elasticsearch-tests-6',
- ':beam-sdks-java-io-elasticsearch-tests-common',
- ':beam-sdks-java-io-google-cloud-platform',
- ':beam-sdks-java-io-hadoop-common',
- ':beam-sdks-java-io-hadoop-file-system',
- ':beam-sdks-java-io-hadoop-format',
- ':beam-sdks-java-io-hadoop-input-format',
- ':beam-sdks-java-io-hbase',
- ':beam-sdks-java-io-hcatalog',
- ':beam-sdks-java-io-jdbc',
- ':beam-sdks-java-io-jms',
- ':beam-sdks-java-io-kafka',
- ':beam-sdks-java-io-kinesis',
- ':beam-sdks-java-io-mongodb',
- ':beam-sdks-java-io-mqtt',
- ':beam-sdks-java-io-parquet',
- ':beam-sdks-java-io-redis',
- ':beam-sdks-java-io-solr',
- ':beam-sdks-java-io-tika',
- ':beam-sdks-java-io-xml',
-]
+for (p in rootProject.subprojects) {
+ if (!p.name.equals(project.name) && !p.name.equals('beam-sdks-java-bom')) {
+ evaluationDependsOn(':' + p.name)
+ }
+}
-for (String exportedJavadocProject : exportedJavadocProjects) {
- evaluationDependsOn(exportedJavadocProject)
+ext.getExportedJavadocProjects = {
+ def exportedJavadocProjects = new ArrayList<>();
+ for (p in rootProject.subprojects) {
+ if (!p.name.equals(project.name) && !p.name.equals('beam-sdks-java-bom')) {
+ def subproject = project(':' + p.name)
+ if (subproject.ext.properties.containsKey('exportJavadoc') &&
+ subproject.ext.properties.exportJavadoc) {
+ exportedJavadocProjects.add(':' + p.name)
+ }
+ }
+ }
+ return exportedJavadocProjects
}
task allJavadoc() {
+ def exportedJavadocProjects = getExportedJavadocProjects()
dependsOn exportedJavadocProjects.collect { "$it:javadoc" }
}
task aggregateJavadoc(type: Javadoc) {
+ def exportedJavadocProjects = getExportedJavadocProjects()
source exportedJavadocProjects.collect { project(it).sourceSets.main.allJava
}
classpath = files(exportedJavadocProjects.collect {
project(it).sourceSets.main.compileClasspath })
destinationDir = file("${buildDir}/docs/javadoc")
diff --git a/sdks/java/maven-archetypes/examples/build.gradle
b/sdks/java/maven-archetypes/examples/build.gradle
index b16fb33c6a23..2958101d4532 100644
--- a/sdks/java/maven-archetypes/examples/build.gradle
+++ b/sdks/java/maven-archetypes/examples/build.gradle
@@ -17,7 +17,7 @@
*/
apply plugin: org.apache.beam.gradle.BeamModulePlugin
-applyJavaNature()
+applyJavaNature(exportJavadoc: false)
description = "Apache Beam :: SDKs :: Java :: Maven Archetypes :: Examples"
ext.summary = """A Maven Archetype to create a project containing all the
diff --git a/sdks/java/maven-archetypes/starter/build.gradle
b/sdks/java/maven-archetypes/starter/build.gradle
index da533b15649e..34231a2ea99f 100644
--- a/sdks/java/maven-archetypes/starter/build.gradle
+++ b/sdks/java/maven-archetypes/starter/build.gradle
@@ -17,7 +17,7 @@
*/
apply plugin: org.apache.beam.gradle.BeamModulePlugin
-applyJavaNature()
+applyJavaNature(exportJavadoc: false)
description = "Apache Beam :: SDKs :: Java :: Maven Archetypes :: Starter"
ext.summary = """A Maven archetype to create a simple starter pipeline to
diff --git a/sdks/java/testing/load-tests/build.gradle
b/sdks/java/testing/load-tests/build.gradle
index 198148c09683..99458ba89d7d 100644
--- a/sdks/java/testing/load-tests/build.gradle
+++ b/sdks/java/testing/load-tests/build.gradle
@@ -17,7 +17,7 @@
*/
apply plugin: org.apache.beam.gradle.BeamModulePlugin
-applyJavaNature()
+applyJavaNature(exportJavadoc: false)
description = "Apache Beam :: SDKs :: Java :: Load Tests"
diff --git a/sdks/java/testing/nexmark/build.gradle
b/sdks/java/testing/nexmark/build.gradle
index 16d144e8ee90..3b19f7eb6010 100644
--- a/sdks/java/testing/nexmark/build.gradle
+++ b/sdks/java/testing/nexmark/build.gradle
@@ -17,7 +17,7 @@
*/
apply plugin: org.apache.beam.gradle.BeamModulePlugin
-applyJavaNature()
+applyJavaNature(exportJavadoc: false)
description = "Apache Beam :: SDKs :: Java :: Nexmark"
diff --git a/sdks/java/testing/test-utils/build.gradle
b/sdks/java/testing/test-utils/build.gradle
index 380b31dcea94..bb874a47f4a7 100644
--- a/sdks/java/testing/test-utils/build.gradle
+++ b/sdks/java/testing/test-utils/build.gradle
@@ -17,7 +17,7 @@
*/
apply plugin: org.apache.beam.gradle.BeamModulePlugin
-applyJavaNature()
+applyJavaNature(exportJavadoc: false)
description = "Apache Beam :: SDKs :: Java :: Test Utils"
diff --git a/settings.gradle b/settings.gradle
index f2942918a534..9dc234811cea 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -206,3 +206,5 @@ include "beam-runners-google-cloud-dataflow-java-windmill"
project(":beam-runners-google-cloud-dataflow-java-windmill").dir =
file("runners/google-cloud-dataflow-java/worker/windmill")
include "beam-test-infra-metrics"
project(":beam-test-infra-metrics").dir = file(".test-infra/metrics")
+include "beam-sdks-java-bom"
+project(":beam-sdks-java-bom").dir = file("sdks/java/bom")
diff --git a/vendor/sdks-java-extensions-protobuf/build.gradle
b/vendor/sdks-java-extensions-protobuf/build.gradle
index fd771ad488f5..f09dc601c0a0 100644
--- a/vendor/sdks-java-extensions-protobuf/build.gradle
+++ b/vendor/sdks-java-extensions-protobuf/build.gradle
@@ -17,7 +17,9 @@
*/
apply plugin: org.apache.beam.gradle.BeamModulePlugin
-applyJavaNature(shadowClosure: DEFAULT_SHADOW_CLOSURE << {
+applyJavaNature(
+ exportJavadoc: false,
+ shadowClosure: DEFAULT_SHADOW_CLOSURE << {
dependencies {
include(dependency('com.google.guava:guava:20.0'))
include(dependency('com.google.protobuf:protobuf-java:3.5.1'))
@@ -33,7 +35,8 @@ applyJavaNature(shadowClosure: DEFAULT_SHADOW_CLOSURE << {
relocate "com.google.thirdparty",
"org.apache.beam.vendor.grpc.v1_13_1.com.google.thirdparty"
relocate "com.google.protobuf",
"org.apache.beam.vendor.grpc.v1_13_1.com.google.protobuf"
-})
+ }
+)
description = "Apache Beam :: Vendored Dependencies :: SDKs :: Java ::
Extensions :: Protobuf"
ext.summary = "Add support to Apache Beam for Vendored Google Protobuf."
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
Issue Time Tracking
-------------------
Worklog Id: (was: 174221)
Time Spent: 4h 50m (was: 4h 40m)
> Create BOM for Beam
> -------------------
>
> Key: BEAM-6178
> URL: https://issues.apache.org/jira/browse/BEAM-6178
> Project: Beam
> Issue Type: Improvement
> Components: build-system
> Affects Versions: 2.10.0
> Reporter: Garrett Jones
> Assignee: Garrett Jones
> Priority: Critical
> Time Spent: 4h 50m
> Remaining Estimate: 0h
>
> Add a module to Beam which generates a BOM for Beam modules.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)