Hi list,

I was wondering about how to specify dependencies in Buildr modules.

If we look at e.g. the Checkstyle module (addon/buildr/checkstyle.rb),
it lists a bunch of artifacts at the top which are needed for the
module's operation:

    # The specs for requirements
    def dependencies
      [
        'com.puppycrawl.tools:checkstyle:jar:6.0',
        'antlr:antlr:jar:2.7.7',
        'org.antlr:antlr4-runtime:jar:4.3',
        'com.google.guava:guava:jar:18.0',
        'commons-cli:commons-cli:jar:1.2',
        'commons-beanutils:commons-beanutils-core:jar:1.8.3',
        'commons-logging:commons-logging:jar:1.1.1'
      ]
    end

The same pattern is replicated in a other modules as well. It seems
rather cumbersome to have to hunt down all the appropriate dependencies
and their specific version numbers. Also, in the example above, it is
not really possible to make the checkstyle version a build parameter
because its dependencies might change across versions.

Listing the dependency transitively would solve both my concerns, so I
tried doing the following and it seems to work just fine:

    def dependencies
      Buildr::transitive 'com.puppycrawl.tools:checkstyle:jar:6.2'
    end

Is there are a reason this is not done?

One possible reason I can think of is that the transitive method is not
actually documented, but seeing it recommended on this list recently, it
sounds safe enough to start using...

Thanks,
Dieter

Reply via email to