Multi-language scan directives
scope
You can use the scope
directive with Ruby, Java, NPM, Yarn, Bower, and PHP projects. It limits the dependency resolution, including the discovered dependencies, to the dependencies within the specified scope. It also includes any scope from which the specified scope inherits, as long as the build system supports the inherited scope. This directive applies the same scope to any package manager used in the project.
For Maven, you can set the scope
directive to one of these values:
-
compile
to restrict the scan tosystem
,provided
, andcompile
dependencies. -
runtime
to restrict the scan tocompile
andruntime
dependencies. -
compile+runtime
to restrict the scan tosystem
,provided
,compile
, andruntime
dependencies. -
runtime+system
to restrict the scan tosystem
,compile
, andruntime
dependencies. -
test
to restrict the scan tosystem
,provided
,compile
,runtime
, andtest
dependencies.
For Ant projects that use the Ivy dependency manager, you can use the scope
directive to specify a comma-separated list of configurations where the dependencies belong. The list can include configuration names, an asterisk (*
) to specify all configurations, and !conf
to exclude the conf
configuration.
For NPM, you can set the scope
directive to one of these values:
production
orprod
to restrict the scan to production dependencies, including the optional dependencies you can install. The default value.development
ordev
to restrict the scan to development dependencies.all
to scan production and development dependencies.
For Yarn, you can set the scope
directive to one of these values:
production
orprod
to restrict the scan to production, peer, and optional dependencies. The default value.development
ordev
to restrict the scan to development dependencies.all
to scan production and development dependencies.
For .NET, you can set the scope
directive to one of the following values:
runtime
to restrict the scan to runtime dependencies. The default value.all
to scan runtime and compile dependencies.
For PHP, you can set the scope
directive to --no-dev
, which only installs production packages.
Default values by package manager:
- Maven:
compile
- Ant, with Ivy: Any one of
default
,runtime
,compile
, or*
, resolved in that order. - Gradle 3.0 and earlier:
compile
- Gradle 3.1–3.3:
runtime
- Gradle 3.4 and later:
default
- Bundler: The scope defined in your Gemfile
- NPM: All scopes defined in your
package.json
file - .NET:
runtime
Example
The following example indicates that you only want to include dependencies that are in the testCompile
scope, or a scope from which testCompile
inherits.
# Java example
scope: testCompile
# Prevent scanning 'devDependencies' for an NPM project
scope: production