As to building an aggregated "Java" project, I think the blocker will be supporting conflicting deps. For IOs like ElasticSearch and runners like Flink the conflict is essential and deliberate, to support multiple versions of other services. And that is not even talking about transitive dep conflicts. I think Python and Go don't have this issue simply because they haven't tackled those problems.
Are you talking about just a shortcut for building (super easy to just add since we are using Gradle) or a new artifact that you want to distribute? On Mon, Apr 1, 2019 at 10:01 AM Lukasz Cwik <lc...@google.com> wrote: > During the gradle migration, we used to have something like: > > include(":sdks:java:core") > include(":sdks:java:extensions:sql") > include(":sdks:python") > > Just to be super clear, this is Gradle default and is equivalent to just leaving it blank. > but we discovered the Maven module names that were used during publishing > were "core" / "sql" / ... (effectively the directory name) instead of > "beam-sdks-java-core". > Isn't this managed by the publication plugin? https://docs.gradle.org/current/userguide/publishing_maven.html#sec:identity_values_in_the_generated_pom "overriding the default identity values is easy: simply specify the groupId, artifactId or version attributes when configuring the MavenPublication." Using the default at the time also broke the artifact names for intra > project dependencies that we generate[1]. Finally, we also ran into an > issue because we had more then one Gradle project with the same directory > name even though they were under a different parent folder (I think it was > "core") and that was leading to some strange build time behavior. > Weird. But I think the Jira should still stand as a move towards simplifying our build and making it more discoverable for new contributors. Kenn > We didn't migrate to a flat project structure where each project is a > folder underneath the root project because of the existing Maven build > rules that were being maintained in parallel and I'm not sure if people > would want to have a flat project structure either. > > 1: > https://github.com/apache/beam/blob/a85ea07b719385ec185e4fc5e4cdcc67b3598599/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy#L1055 > > On Mon, Apr 1, 2019 at 9:49 AM Michael Luckey <adude3...@gmail.com> wrote: > >> Hi, >> >> although I did not yet manage to get deeper involved into actual >> development, I think this ability would be a useful addition. >> >> But I would also like to point out, that this is kind of implicit, as >> soon we get https://issues.apache.org/jira/browse/BEAM-4046 included. >> >> For instance, we would change the current setup from >> >> include "beam-sdks-java-core" >> project(":beam-sdks-java-core").dir = file("sdks/java/core") >> >> to something like >> >> include(":sdks:java:core") >> include(":sdks:java:extensions:sql") >> include(":sdks:python") >> >> >> With this in place a plain >> >> $ ./gradlew -p sdks/java build >> >> would exactly do what you want. And, of course, this will also work for >> 'sdks/java/io', 'runners/' etc. Hope, you get the point. >> >> Currently, we deviate from gradle default convention and therefore have >> to implement some quirks to restore default behaviour. And I somehow >> dislike the structure introduced by parent/child folders, which will be >> destroyed by our current project definitions. >> >> But, to be honest, although I have some clear understanding on how to >> proceed here - especially regarding the requirement to keep the change >> backwards compatible - we might decide not to switch. Because deeper >> investigation might reveal issues, which I am currently not aware of. >> >> Best, >> >> michel >> >> On Mon, Apr 1, 2019 at 5:52 PM Jean-Baptiste Onofré <j...@nanthrax.net> >> wrote: >> >>> Hi guys, >>> >>> I would like to introduce a Gradle "meta" project for the build: >>> beam-sdks-java. >>> >>> The idea is to simply build all Java SDK related resources (core, IO, >>> ...). >>> >>> The purpose is also to be aligned with the other SDKs which provide >>> beam-sdks-go and beam-sdks-python. >>> >>> Thoughts ? >>> >>> Regards >>> JB >>> -- >>> Jean-Baptiste Onofré >>> jbono...@apache.org >>> http://blog.nanthrax.net >>> Talend - http://www.talend.com >>> >>