[ 
https://issues.apache.org/jira/browse/BEAM-8967?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16995860#comment-16995860
 ] 

Tomo Suzuki edited comment on BEAM-8967 at 12/13/19 8:05 PM:
-------------------------------------------------------------

Suspecting around this piece of code in BeamModulePlugin.groovy:

{noformat}
                // TODO: Should we use the runtime scope instead of the compile 
scope
                // which forces all our consumers to declare what they consume?
                generateDependenciesFromConfiguration(
                        configuration: (configuration.shadowClosure ? 'shadow' 
: 'compile'), scope: 'compile')
                generateDependenciesFromConfiguration(configuration: 
'provided', scope: 'provided')
{noformat}

ShadowClosure field of a project?


{code:java}
    /**
     * If unset, no shading is performed. The jar and test jar archives are 
used during publishing.
     * Otherwise the shadowJar and shadowTestJar artifacts are used during 
publishing.
     *
     * The shadowJar / shadowTestJar tasks execute the specified closure to 
configure themselves.
     */
    Closure shadowClosure;
{code}


Found the root cause in the document in [BeamModulePlugin.groovy line 
629|https://github.com/apache/beam/blob/master/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy#L629].
 JSR305 (which is needed at runtime) should be declared as "shadow", even when 
no shading is needed because sdks/java/core uses shadowClosure.


{code:java}
    // When the shadowClosure argument is specified, the shadow plugin is 
enabled to perform shading
    // of commonly found dependencies. Because of this it is important that 
dependencies are added
    // to the correct configuration. Dependencies should fall into one of these 
four configurations:
    //  * compile     - Required during compilation or runtime of the main 
source set.
    //                  This configuration represents all dependencies that 
much also be shaded away
    //                  otherwise the generated Maven pom will be missing this 
dependency.
    //  * shadow      - Required during compilation or runtime of the main 
source set.
    //                  Will become a runtime dependency of the generated Maven 
pom.

{code}





was (Author: suztomo):
Suspecting around this piece of code in BeamModulePlugin.groovy:

{noformat}
                // TODO: Should we use the runtime scope instead of the compile 
scope
                // which forces all our consumers to declare what they consume?
                generateDependenciesFromConfiguration(
                        configuration: (configuration.shadowClosure ? 'shadow' 
: 'compile'), scope: 'compile')
                generateDependenciesFromConfiguration(configuration: 
'provided', scope: 'provided')
{noformat}

ShadowClosure field of a project?


{noformat}
    /**
     * If unset, no shading is performed. The jar and test jar archives are 
used during publishing.
     * Otherwise the shadowJar and shadowTestJar artifacts are used during 
publishing.
     *
     * The shadowJar / shadowTestJar tasks execute the specified closure to 
configure themselves.
     */
    Closure shadowClosure;
{noformat}



> Maven artifact beam-sdks-java-core does not have dependencies specified as 
> "compile"
> ------------------------------------------------------------------------------------
>
>                 Key: BEAM-8967
>                 URL: https://issues.apache.org/jira/browse/BEAM-8967
>             Project: Beam
>          Issue Type: Improvement
>          Components: build-system
>            Reporter: Tomo Suzuki
>            Priority: Major
>
> Maven artifact beam-sdks-java-core does not have dependencies specified as 
> "compile".
> This is a followup of [~iemejia]'s finding:
> {quote}
> Just double checked with today's SNAPSHOTs after the merge and the pom of 
> core is not modified, however the deps look good in master, not sure if the 
> change was applied before the SNAPSHOT generation, but still to double check.
> https://repository.apache.org/content/repositories/snapshots/org/apache/beam/beam-sdks-java-core/2.19.0-SNAPSHOT/beam-sdks-java-core-2.19.0-20191213.072102-9.pom
> {quote} 
> in [jsr305 dependency declaration for Nullable 
> class|https://github.com/apache/beam/pull/10324#issuecomment-565516004]



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to