PublishModule

mill.pythonlib.PublishModule
See thePublishModule companion object
@Scaladoc(value = "/**\n * A python module which also defines how to build and publish source distributions and wheels.\n */")
trait PublishModule extends PythonModule

A python module which also defines how to build and publish source distributions and wheels.

Attributes

Companion
object
Source
PublishModule.scala
Graph
Supertypes
trait PythonModule
trait TaskModule
trait PipModule
trait Module
trait ModuleApi
trait Wrapper
class BaseClass
trait Cacher
trait Cacher
class Object
trait Matchable
class Any
Show all

Members list

Type members

Inherited classlikes

trait PythonTests extends PythonModule

Attributes

Inherited from:
PythonModule
Source
PythonModule.scala
Supertypes
trait PythonModule
trait TaskModule
trait PipModule
trait Module
trait ModuleApi
trait Wrapper
class BaseClass
trait Cacher
trait Cacher
class Object
trait Matchable
class Any
Show all
@Scaladoc(value = "/**\n * Miscellaneous machinery around traversing & querying the build hierarchy,\n * that should not be needed by normal users of Mill\n */")
object moduleInternal extends Internal

Miscellaneous machinery around traversing & querying the build hierarchy, that should not be needed by normal users of Mill

Miscellaneous machinery around traversing & querying the build hierarchy, that should not be needed by normal users of Mill

Attributes

Inherited from:
Module
Source
Module.scala
Supertypes
class Internal
class Object
trait Matchable
class Any

Value members

Abstract methods

@Scaladoc(value = "/**\n * Metadata about your project, required to build and publish.\n *\n * This is roughly equivalent to what you\'d find in the general section of a `pyproject.toml` file\n * https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#about-your-project.\n */")

Metadata about your project, required to build and publish.

Metadata about your project, required to build and publish.

This is roughly equivalent to what you'd find in the general section of a pyproject.toml file https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#about-your-project.

Attributes

Source
PublishModule.scala
@Scaladoc(value = "/**\n * The artifact version that this module would be published as.\n */")
def publishVersion: Simple[String]

The artifact version that this module would be published as.

The artifact version that this module would be published as.

Attributes

Source
PublishModule.scala

Concrete methods

@Scaladoc(value = "/**\n * Files to be included in the directory used during the packaging process, apart from\n * [[pyproject]].\n *\n * The format is ` -> `. Where ` ` is relative to\n * some build directory, where you\'ll also find `src` and `pyproject.toml`.\n *\n * @see [[pyproject]]\n */")
def buildFiles: Simple[Map[String, PathRef]]

Files to be included in the directory used during the packaging process, apart from pyproject.

Files to be included in the directory used during the packaging process, apart from pyproject.

The format is <destination path> -> <source path>. Where <destination path> is relative to some build directory, where you'll also find src and pyproject.toml.

Attributes

See also
Source
PublishModule.scala
@Scaladoc(value = "/** Run `twine check` to catch some common packaging errors. */")
def checkPublish(): Command[Unit]

Run twine check to catch some common packaging errors.

Run twine check to catch some common packaging errors.

Attributes

Source
PublishModule.scala
override def moduleDeps: Seq[PublishModule]

The direct dependencies of this module. This is meant to be overridden to add dependencies.

The direct dependencies of this module. This is meant to be overridden to add dependencies.

Attributes

Definition Classes
Source
PublishModule.scala
@Scaladoc(value = "/**\n * Publish the [[sdist]] and [[wheel]] to the package repository (index)\n * defined in this module.\n *\n * You can configure this command by setting any environment variables\n * understood by `twine`, prefixed with `MILL_`. For example, to change the\n * repository URL:\n *\n * ```\n * MILL_TWINE_REPOSITORY_URL=https://test.pypi.org/legacy/\n * ```\n *\n * @see [[publishRepositoryUrl]]\n */")
def publish(): Command[Unit]

Publish the sdist and wheel to the package repository (index) defined in this module.

Publish the sdist and wheel to the package repository (index) defined in this module.

You can configure this command by setting any environment variables understood by twine, prefixed with MILL_. For example, to change the repository URL:

MILL_TWINE_REPOSITORY_URL=https://test.pypi.org/legacy/

Attributes

See also
Source
PublishModule.scala
@Scaladoc(value = "/** All artifacts that should be published. */")

All artifacts that should be published.

All artifacts that should be published.

Attributes

Source
PublishModule.scala
@Scaladoc(value = "/**\n * The readme file to include in the published distribution.\n */")

The readme file to include in the published distribution.

The readme file to include in the published distribution.

Attributes

Source
PublishModule.scala
@Scaladoc(value = "/** The repository (index) URL to publish packages to. */")

The repository (index) URL to publish packages to.

The repository (index) URL to publish packages to.

Attributes

Source
PublishModule.scala
@Scaladoc(value = "/**\n * The content of the PEP-518-compliant `pyproject.toml` file, which describes how to package this\n * module into a distribution (sdist and wheel).\n *\n * By default, Mill will generate this file for you from the information it knows (e.g.\n * dependencies declared in [[pythonDeps]] and metadata from [[publishMeta]]). It will use\n * `setuptools` as the build backend, and `build` as the frontend.\n *\n * You can however override this task to read your own `pyproject.toml` file, if you need to. In\n * this case, please note the following:\n *\n * - Mill will create a source distribution first, and then use that to build a binary\n * distribution (aka wheel). Going through this intermediary step, rather than building a wheel\n * directly, ensures that end users can rebuild wheels on their systems, for example if a\n * platform-dependent wheel is not available pre-made.\n *\n * - Hence, the source distribution will need to be \"self contained\". In particular this means\n * that you can\'t reference files by absolute path within it.\n *\n * - Mill creates a \"staging\" directory in the [[sdist]] task, which will be used to bundle\n * everything up into an sdist (via the `build` python command, although this is an\n * implementation detail). You can include additional files in this directory via the\n * [[buildFiles]] task.\n */")
def pyproject: Simple[String]

The content of the PEP-518-compliant pyproject.toml file, which describes how to package this module into a distribution (sdist and wheel).

The content of the PEP-518-compliant pyproject.toml file, which describes how to package this module into a distribution (sdist and wheel).

By default, Mill will generate this file for you from the information it knows (e.g. dependencies declared in pythonDeps and metadata from publishMeta). It will use setuptools as the build backend, and build as the frontend.

You can however override this task to read your own pyproject.toml file, if you need to. In this case, please note the following:

  • Mill will create a source distribution first, and then use that to build a binary distribution (aka wheel). Going through this intermediary step, rather than building a wheel directly, ensures that end users can rebuild wheels on their systems, for example if a platform-dependent wheel is not available pre-made.

  • Hence, the source distribution will need to be "self contained". In particular this means that you can't reference files by absolute path within it.

  • Mill creates a "staging" directory in the sdist task, which will be used to bundle everything up into an sdist (via the build python command, although this is an implementation detail). You can include additional files in this directory via the buildFiles task.

Attributes

Source
PublishModule.scala
override def pythonToolDeps: Simple[Seq[String]]

Any python dependencies for development tools you want to add to this module.

Any python dependencies for development tools you want to add to this module.

These dependencies are similar to pythonDeps, but will not be required to install this module, only to work on it. For example, type checkers, linters, and bundlers should be declared here.

Attributes

See also
Definition Classes
Source
PublishModule.scala
@Scaladoc(value = "/**\n * Bundle everything up into a source distribution (sdist).\n *\n * @see [[pyproject]]\n */")

Bundle everything up into a source distribution (sdist).

Bundle everything up into a source distribution (sdist).

Attributes

See also
Source
PublishModule.scala
@Scaladoc(value = "/**\n * Build a binary distribution of this module.\n *\n * @see [[pyproject]]\n */")

Build a binary distribution of this module.

Build a binary distribution of this module.

Attributes

See also
Source
PublishModule.scala

Inherited methods

@Scaladoc(value = "/**\n * The repositories used to resolve dependencies\n *\n * Unlike [[repositoriesTask]], this includes the Mill internal repositories,\n * which allow to resolve Mill internal modules (usually brought in via\n * `JavaModule#coursierDependency`).\n *\n * Beware that this needs to evaluate `JavaModule#coursierProject` of all\n * module dependencies of the current module, which itself evaluates `JavaModule#mvnDeps`\n * and related tasks. You shouldn\'t depend on this task from implementations of `mvnDeps`,\n * which would introduce cycles between Mill tasks.\n */")
def allRepositories: Task[Seq[Repository]]

The repositories used to resolve dependencies

The repositories used to resolve dependencies

Unlike repositoriesTask, this includes the Mill internal repositories, which allow to resolve Mill internal modules (usually brought in via JavaModule#coursierDependency).

Beware that this needs to evaluate JavaModule#coursierProject of all module dependencies of the current module, which itself evaluates JavaModule#mvnDeps and related tasks. You shouldn't depend on this task from implementations of mvnDeps, which would introduce cycles between Mill tasks.

Attributes

Inherited from:
CoursierModule
Source
CoursierModule.scala
@Scaladoc(value = "/**\n * Bind a dependency ([[Dep]]) to the actual module context (e.g. the scala version and the platform suffix)\n * @return The [[BoundDep]]\n */")

Bind a dependency (Dep) to the actual module context (e.g. the scala version and the platform suffix)

Bind a dependency (Dep) to the actual module context (e.g. the scala version and the platform suffix)

Attributes

Returns

The BoundDep

Inherited from:
CoursierModule
Source
CoursierModule.scala
@Scaladoc(value = "/** Bundles the project into a single PEX executable(bundle.pex). */")

Bundles the project into a single PEX executable(bundle.pex).

Bundles the project into a single PEX executable(bundle.pex).

Attributes

Inherited from:
PythonModule
Source
PythonModule.scala
@Scaladoc(value = "/**\n * Command-line options to pass as bundle configuration defined by the user.\n */")
def bundleOptions: Simple[Seq[String]]

Command-line options to pass as bundle configuration defined by the user.

Command-line options to pass as bundle configuration defined by the user.

Attributes

Inherited from:
PythonModule
Source
PythonModule.scala
@Scaladoc(value = "/**\n * Whether to enable Gradle Module support when fetching dependencies\n */")
def checkGradleModules: Simple[Boolean]

Whether to enable Gradle Module support when fetching dependencies

Whether to enable Gradle Module support when fetching dependencies

Attributes

Inherited from:
CoursierModule
Source
CoursierModule.scala
@Scaladoc(value = "/**\n * Opens up a Python console with your module and all dependencies present,\n * for you to test and operate your code interactively.\n */")
def console(): Command[Unit]

Opens up a Python console with your module and all dependencies present, for you to test and operate your code interactively.

Opens up a Python console with your module and all dependencies present, for you to test and operate your code interactively.

Attributes

Inherited from:
PythonModule
Source
PythonModule.scala
@Scaladoc(value = "/**\n * Customize the coursier file cache.\n *\n * This is rarely needed to be changed, but sometimes e.g. you want to load a coursier plugin.\n * Doing so requires adding to coursier\'s classpath. To do this you could use the following:\n * {{{\n * override def coursierCacheCustomizer = Task.Anon {\n * Some( (fc: coursier.cache.FileCache[Task]) =>\n * fc.withClassLoaders(Seq(classOf[coursier.cache.protocol.S3Handler].getClassLoader))\n * )\n * }\n * }}}\n * @return\n */")
def coursierCacheCustomizer: Task[Option[FileCache[Task] => FileCache[Task]]]

Customize the coursier file cache.

Customize the coursier file cache.

This is rarely needed to be changed, but sometimes e.g. you want to load a coursier plugin. Doing so requires adding to coursier's classpath. To do this you could use the following:

 override def coursierCacheCustomizer = Task.Anon {
    Some( (fc: coursier.cache.FileCache[Task]) =>
      fc.withClassLoaders(Seq(classOf[coursier.cache.protocol.S3Handler].getClassLoader))
    )
 }

Attributes

Inherited from:
CoursierModule
Source
CoursierModule.scala
override def defaultCommandName(): String

The name of the default command, which will be automatically executed if the module name is provided at the Mill command line.

The name of the default command, which will be automatically executed if the module name is provided at the Mill command line.

Attributes

Definition Classes
Inherited from:
PythonModule
Source
PythonModule.scala
@Scaladoc(value = "/**\n * A `CoursierModule.Resolver` to resolve dependencies.\n *\n * Can be used to resolve external dependencies, if you need to download an external\n * tool from Maven or Ivy repositories, by calling `CoursierModule.Resolver#classpath`.\n *\n * @return `CoursierModule.Resolver` instance\n */")

A CoursierModule.Resolver to resolve dependencies.

A CoursierModule.Resolver to resolve dependencies.

Can be used to resolve external dependencies, if you need to download an external tool from Maven or Ivy repositories, by calling CoursierModule.Resolver#classpath.

Attributes

Returns

CoursierModule.Resolver instance

Inherited from:
CoursierModule
Source
CoursierModule.scala
@Scaladoc(value = "/**\n * Any environment variables you want to pass to the forked Env\n */")
def forkEnv: Simple[Map[String, String]]

Any environment variables you want to pass to the forked Env

Any environment variables you want to pass to the forked Env

Attributes

Inherited from:
PythonModule
Source
PythonModule.scala
@Scaladoc(value = "/**\n * Folders containing source files that are generated rather than\n * handwritten; these files can be generated in this target itself,\n * or can refer to files generated from other targets\n */")

Folders containing source files that are generated rather than handwritten; these files can be generated in this target itself, or can refer to files generated from other targets

Folders containing source files that are generated rather than handwritten; these files can be generated in this target itself, or can refer to files generated from other targets

Attributes

Inherited from:
PythonModule
Source
PythonModule.scala
@Scaladoc(value = "/**\n * Python interpreter found on the host system. This will be used to create a\n * new virtual environment, which will be used by all tasks in this module.\n *\n * If you\'d like to use a specific python version, override this task to\n * point to a specific python executable.\n *\n * Examples:\n *\n * ```\n * // use whatever python version is installed on the host system (default)\n * def hostPythonCommand = T{ \"python3\" }\n *\n * // use a specific minor release\n * def hostPythonCommand = T{ \"python3.12\" }\n *\n * // use a specific executable file\n * def hostPythonCommand = T{ \"/usr/bin/python3\" }\n * ```\n */")
def hostPythonCommand: Simple[String]

Python interpreter found on the host system. This will be used to create a new virtual environment, which will be used by all tasks in this module.

Python interpreter found on the host system. This will be used to create a new virtual environment, which will be used by all tasks in this module.

If you'd like to use a specific python version, override this task to point to a specific python executable.

Examples:

// use whatever python version is installed on the host system (default)
def hostPythonCommand = T{ "python3" }

// use a specific minor release
def hostPythonCommand = T{ "python3.12" }

// use a specific executable file
def hostPythonCommand = T{ "/usr/bin/python3" }

Attributes

Inherited from:
PythonModule
Source
PythonModule.scala
@Scaladoc(value = "/**\n * Base URLs of the Python Package Indexes to search for packages. Defaults to\n * https://pypi.org/simple.\n *\n * These should point to repositories compliant with PEP 503 (the simple\n * repository API) or local directories laid out in the same format.\n */")
def indexes: Simple[Seq[String]]

Base URLs of the Python Package Indexes to search for packages. Defaults to https://pypi.org/simple.

Base URLs of the Python Package Indexes to search for packages. Defaults to https://pypi.org/simple.

These should point to repositories compliant with PEP 503 (the simple repository API) or local directories laid out in the same format.

Attributes

Inherited from:
PipModule
Source
PipModule.scala
@Scaladoc(value = "/**\n * Optional custom Java Home for the JvmWorker to use\n *\n * If this value is None, then the JvmWorker uses the same Java used to run\n * the current mill instance.\n */")
def javaHome: Simple[Option[PathRef]]

Optional custom Java Home for the JvmWorker to use

Optional custom Java Home for the JvmWorker to use

If this value is None, then the JvmWorker uses the same Java used to run the current mill instance.

Attributes

Inherited from:
JavaHomeModule
Source
JavaHomeModule.scala
def jvmId: Simple[String]

Attributes

Inherited from:
JavaHomeModule
Source
JavaHomeModule.scala
def jvmIndexVersion: Simple[String]

Attributes

Inherited from:
JavaHomeModule
Source
JavaHomeModule.scala
@Scaladoc(value = "/**\n * The directories used to construct the PYTHONPATH for this module, used for\n * execution, excluding upstream modules.\n *\n * This includes source directories, resources and other unmanaged\n * directories.\n */")

The directories used to construct the PYTHONPATH for this module, used for execution, excluding upstream modules.

The directories used to construct the PYTHONPATH for this module, used for execution, excluding upstream modules.

This includes source directories, resources and other unmanaged directories.

Attributes

Inherited from:
PythonModule
Source
PythonModule.scala
@Scaladoc(value = "/**\n * The python script to run. This file may not exist if this module is only a library.\n */")

The python script to run. This file may not exist if this module is only a library.

The python script to run. This file may not exist if this module is only a library.

Attributes

Inherited from:
PythonModule
Source
PythonModule.scala
@Scaladoc(value = "/**\n * Map dependencies before resolving them.\n * Override this to customize the set of dependencies.\n */")
def mapDependencies: Task[Dependency => Dependency]

Map dependencies before resolving them. Override this to customize the set of dependencies.

Map dependencies before resolving them. Override this to customize the set of dependencies.

Attributes

Inherited from:
CoursierModule
Source
CoursierModule.scala
@Scaladoc(value = "/**\n * A [[CoursierModule.Resolver]] to resolve dependencies.\n *\n * Unlike [[defaultResolver]], this resolver can resolve Mill modules too\n * (obtained via [[JavaModule.coursierDependency]]).\n *\n * @return `CoursierModule.Resolver` instance\n */")

A CoursierModule.Resolver to resolve dependencies.

A CoursierModule.Resolver to resolve dependencies.

Unlike defaultResolver, this resolver can resolve Mill modules too (obtained via JavaModule.coursierDependency).

Attributes

Returns

CoursierModule.Resolver instance

Inherited from:
CoursierModule
Source
CoursierModule.scala

Attributes

Inherited from:
BaseClass
Source
Module.scala
def moduleDir: Path

Attributes

Inherited from:
Module
Source
Module.scala
def moduleDirJava: Path

Attributes

Inherited from:
Module
Source
Module.scala

Attributes

Inherited from:
Module
Source
Module.scala

Attributes

Inherited from:
Module
Source
Module.scala
@Scaladoc(value = "/**\n * Arguments to be passed to `pip install` when preparing the environment.\n *\n * This task is called by `pythonExe`. It serves as an escape hatch, should\n * you need to override it for some reason. Normally, you should not need to\n * edit this task directly. Instead, prefer editing the other tasks of this\n * module which influence how the arguments are created.\n *\n * @see [[indexes]]\n * @see [[pythonDeps]]\n * @see [[unmanagedWheels]]\n * @see [[pythonToolDeps]]\n */")

Arguments to be passed to pip install when preparing the environment.

Arguments to be passed to pip install when preparing the environment.

This task is called by pythonExe. It serves as an escape hatch, should you need to override it for some reason. Normally, you should not need to edit this task directly. Instead, prefer editing the other tasks of this module which influence how the arguments are created.

Attributes

See also
Inherited from:
PipModule
Source
PipModule.scala
@Scaladoc(value = "/**\n * Any python dependencies you want to add to this module. The format of each\n * dependency should be the same as used with `pip install`, or as you would\n * find in a `requirements.txt` file. E.g. `def pythonDeps =\n * Seq(\"numpy==2.1.3\")`.\n *\n * Dependencies declared here will also be required when installing this module.\n */")
def pythonDeps: Simple[Seq[String]]

Any python dependencies you want to add to this module. The format of each dependency should be the same as used with pip install, or as you would find in a requirements.txt file. E.g. def pythonDeps = Seq("numpy==2.1.3").

Any python dependencies you want to add to this module. The format of each dependency should be the same as used with pip install, or as you would find in a requirements.txt file. E.g. def pythonDeps = Seq("numpy==2.1.3").

Dependencies declared here will also be required when installing this module.

Attributes

Inherited from:
PipModule
Source
PipModule.scala
@Scaladoc(value = "/**\n * An executable python interpreter. This interpreter is set up to run in a\n * virtual environment which has been initialized to contain all libraries and\n * tools needed by this module and its dependencies.\n */")

An executable python interpreter. This interpreter is set up to run in a virtual environment which has been initialized to contain all libraries and tools needed by this module and its dependencies.

An executable python interpreter. This interpreter is set up to run in a virtual environment which has been initialized to contain all libraries and tools needed by this module and its dependencies.

Attributes

Inherited from:
PythonModule
Source
PythonModule.scala
@Scaladoc(value = "/**\n * Command-line options to pass to the Python Interpreter defined by the user.\n */")
def pythonOptions: Simple[Seq[String]]

Command-line options to pass to the Python Interpreter defined by the user.

Command-line options to pass to the Python Interpreter defined by the user.

Attributes

Inherited from:
PythonModule
Source
PythonModule.scala
@Scaladoc(value = "/**\n * Python dependencies declared in `requirements.txt` files. This is similar\n * to `pythonDeps`, but reads dependencies from a text file, allowing you to\n * reuse requirements files from existing projects.\n *\n * @see [[pythonDeps]]\n */")

Python dependencies declared in requirements.txt files. This is similar to pythonDeps, but reads dependencies from a text file, allowing you to reuse requirements files from existing projects.

Python dependencies declared in requirements.txt files. This is similar to pythonDeps, but reads dependencies from a text file, allowing you to reuse requirements files from existing projects.

Attributes

See also
Inherited from:
PipModule
Source
PipModule.scala
@Scaladoc(value = "/**\n * The repositories used to resolve dependencies with [[classpath()]]. This\n * takes Coursier repository strings as input which are defined here:\n *\n * - https://github.com/coursier/coursier/blob/main/docs/pages/reference-repositories.md\n *\n * For example:\n *\n * - https://repo1.maven.org/maven2\n * Maven Central which is the most commonly used Maven repository\n *\n * - file:///Users/alex/test-repo\n * A local repository cache on disk\n *\n * - file://${ivy.home-${user.home}/.ivy2}/local/[defaultPattern]\n * The local Ivy2 repository where Mill, Scala CLI,\n * or sbt publish to when asked to publish locally\n *\n * - file://${user.home}/.m2/repository\n * the local Maven repository. Use of this is not recommended for reasons explained in the link above\n *\n * - https://maven.google.com\n * Google-managed repository that distributes some Android artifacts in particular\n */")
def repositories: Simple[Seq[String]]

The repositories used to resolve dependencies with classpath(). This takes Coursier repository strings as input which are defined here:

The repositories used to resolve dependencies with classpath(). This takes Coursier repository strings as input which are defined here:

For example:

Attributes

Inherited from:
CoursierModule
Source
CoursierModule.scala
@Scaladoc(value = "/**\n * A more flexible version of [[repositories]], that allows custom repositories\n * that are not definable by Coursier repository strings. This is a relatively\n * advanced feature, and for most situations overriding [[repositories]] should\n * be sufficient\n *\n * See [[allRepositories]] if you need to resolve Mill internal modules.\n */")
def repositoriesTask: Task[Seq[Repository]]

A more flexible version of repositories, that allows custom repositories that are not definable by Coursier repository strings. This is a relatively advanced feature, and for most situations overriding repositories should be sufficient

A more flexible version of repositories, that allows custom repositories that are not definable by Coursier repository strings. This is a relatively advanced feature, and for most situations overriding repositories should be sufficient

See allRepositories if you need to resolve Mill internal modules.

Attributes

Inherited from:
CoursierModule
Source
CoursierModule.scala
@Scaladoc(value = "/**\n * Customize the coursier resolution process.\n * This is rarely needed to changed, as the default try to provide a\n * highly reproducible resolution process. But sometime, you need\n * more control, e.g. you want to add some OS or JDK specific resolution properties\n * which are sometimes used by Maven and therefore found in dependency artifact metadata.\n * For example, the JavaFX artifacts are known to use OS specific properties.\n * To fix resolution for JavaFX, you could override this task like the following:\n * {{{\n * override def resolutionCustomizer = Task.Anon {\n * Some( (r: coursier.core.Resolution) =>\n * r.withOsInfo(coursier.core.Activation.Os.fromProperties(sys.props.toMap))\n * )\n * }\n * }}}\n * @return\n */")
def resolutionCustomizer: Task[Option[Resolution => Resolution]]

Customize the coursier resolution process. This is rarely needed to changed, as the default try to provide a highly reproducible resolution process. But sometime, you need more control, e.g. you want to add some OS or JDK specific resolution properties which are sometimes used by Maven and therefore found in dependency artifact metadata. For example, the JavaFX artifacts are known to use OS specific properties. To fix resolution for JavaFX, you could override this task like the following:

Customize the coursier resolution process. This is rarely needed to changed, as the default try to provide a highly reproducible resolution process. But sometime, you need more control, e.g. you want to add some OS or JDK specific resolution properties which are sometimes used by Maven and therefore found in dependency artifact metadata. For example, the JavaFX artifacts are known to use OS specific properties. To fix resolution for JavaFX, you could override this task like the following:

   override def resolutionCustomizer = Task.Anon {
     Some( (r: coursier.core.Resolution) =>
       r.withOsInfo(coursier.core.Activation.Os.fromProperties(sys.props.toMap))
     )
   }

Attributes

Inherited from:
CoursierModule
Source
CoursierModule.scala
@Scaladoc(value = "/**\n * Resolution parameters, allowing to customize resolution internals\n *\n * This rarely needs to be changed. This allows to disable the new way coursier handles\n * BOMs since coursier 2.1.17 (used in Mill since 0.12.3) for example, with:\n * {{{\n * def resolutionParams = super.resolutionParams()\n * .withEnableDependencyOverrides(Some(false))\n * }}}\n *\n * Note that versions forced with `Dep#forceVersion()` take over forced versions manually\n * set in `resolutionParams`. The former should be favored to force versions in dependency\n * resolution.\n *\n * The Scala version set via `ScalaModule#scalaVersion` also takes over any Scala version\n * provided via `ResolutionParams#scalaVersionOpt`.\n *\n * The default configuration set in `ResolutionParams#defaultConfiguration` is ignored when\n * Mill fetches dependencies to be passed to the compiler (equivalent to Maven \"compile scope\").\n * In that case, it forces the default configuration to be \"compile\". On the other hand, when\n * fetching dependencies for runtime (equivalent to Maven \"runtime scope\"), the value in\n * `ResolutionParams#defaultConfiguration` is used.\n */")
def resolutionParams: Task[ResolutionParams]

Resolution parameters, allowing to customize resolution internals

Resolution parameters, allowing to customize resolution internals

This rarely needs to be changed. This allows to disable the new way coursier handles BOMs since coursier 2.1.17 (used in Mill since 0.12.3) for example, with:

 def resolutionParams = super.resolutionParams()
   .withEnableDependencyOverrides(Some(false))

Note that versions forced with Dep#forceVersion() take over forced versions manually set in resolutionParams. The former should be favored to force versions in dependency resolution.

The Scala version set via ScalaModule#scalaVersion also takes over any Scala version provided via ResolutionParams#scalaVersionOpt.

The default configuration set in ResolutionParams#defaultConfiguration is ignored when Mill fetches dependencies to be passed to the compiler (equivalent to Maven "compile scope"). In that case, it forces the default configuration to be "compile". On the other hand, when fetching dependencies for runtime (equivalent to Maven "runtime scope"), the value in ResolutionParams#defaultConfiguration is used.

Attributes

Inherited from:
CoursierModule
Source
CoursierModule.scala
@Scaladoc(value = "/**\n * The folders where the resource files for this module live.\n */")
def resources: Simple[Seq[PathRef]]

The folders where the resource files for this module live.

The folders where the resource files for this module live.

Attributes

Inherited from:
PythonModule
Source
PythonModule.scala
@Scaladoc(value = "/**\n * Run the main python script of this module.\n *\n * @see [[mainScript]]\n */")
def run(args: Args): Command[Unit]

Run the main python script of this module.

Run the main python script of this module.

Attributes

See also
Inherited from:
PythonModule
Source
PythonModule.scala
@Scaladoc(value = "/**\n * Run the main python script of this module.\n *\n * @see [[mainScript]]\n */")
def runBackground(args: Args): Command[Unit]

Run the main python script of this module.

Run the main python script of this module.

Attributes

See also
Inherited from:
PythonModule
Source
PythonModule.scala

Attributes

Inherited from:
PythonModule
Source
PythonModule.scala
@Scaladoc(value = "/**\n * The folders where the source files for this mill module live.\n *\n * Python modules will be defined relative to these directories.\n */")
def sources: Simple[Seq[PathRef]]

The folders where the source files for this mill module live.

The folders where the source files for this mill module live.

Python modules will be defined relative to these directories.

Attributes

Inherited from:
PythonModule
Source
PythonModule.scala
override def toString: String

Returns a string representation of the object.

Returns a string representation of the object.

The default representation is platform dependent.

Attributes

Returns

a string representation of the object.

Definition Classes
Module -> Any
Inherited from:
Module
Source
Module.scala
@Scaladoc(value = "/**\n * Python dependencies of this module, and all other modules that this module\n * depends on, recursively.\n */")
def transitivePythonDeps: Simple[Seq[String]]

Python dependencies of this module, and all other modules that this module depends on, recursively.

Python dependencies of this module, and all other modules that this module depends on, recursively.

Attributes

Inherited from:
PipModule
Source
PipModule.scala
@Scaladoc(value = "/**\n * The transitive version of [[localPythonPath]]: this includes the\n * directories of all upstream modules as well.\n */")

The transitive version of localPythonPath: this includes the directories of all upstream modules as well.

The transitive version of localPythonPath: this includes the directories of all upstream modules as well.

Attributes

Inherited from:
PythonModule
Source
PythonModule.scala
@Scaladoc(value = "/**\n * requirements.txt of this module, and all other modules that this module\n * depends on, recursively.\n *\n * @see [[pythonRequirementFiles]]\n */")

requirements.txt of this module, and all other modules that this module depends on, recursively.

requirements.txt of this module, and all other modules that this module depends on, recursively.

Attributes

See also
Inherited from:
PipModule
Source
PipModule.scala
@Scaladoc(value = "/**\n * Any python wheels to install directly, for this module and all upstream modules, recursively.\n *\n * @see [[unmanagedWheels]]\n */")

Any python wheels to install directly, for this module and all upstream modules, recursively.

Any python wheels to install directly, for this module and all upstream modules, recursively.

Attributes

See also
Inherited from:
PipModule
Source
PipModule.scala
@Scaladoc(value = "/**\n * Run a typechecker on this module.\n */")
def typeCheck: Simple[Unit]

Run a typechecker on this module.

Run a typechecker on this module.

Attributes

Inherited from:
PythonModule
Source
PythonModule.scala
@Scaladoc(value = "/**\n * Additional directories to include in the PYTHONPATH directly. These paths\n * are \"unmanaged\": they\'ll be included as they are on disk.\n */")

Additional directories to include in the PYTHONPATH directly. These paths are "unmanaged": they'll be included as they are on disk.

Additional directories to include in the PYTHONPATH directly. These paths are "unmanaged": they'll be included as they are on disk.

Attributes

Inherited from:
PythonModule
Source
PythonModule.scala
@Scaladoc(value = "/**\n * Any python wheels to install directly.\n *\n * Note: you can also include wheels by using [direct\n * references](https://peps.python.org/pep-0440/#direct-references) in [[pythonRequirementFiles]], for\n * example `\"pip @ file:///localbuilds/pip-1.3.1-py33-none-any.whl\"`. However, if you do that then\n * changes to these files won\'t get picked up and you are on the hook for cache invalidation.\n * Therefore, if you have any wheels that you wish to install directly, it is recommended to add\n * them here.\n */")

Any python wheels to install directly.

Any python wheels to install directly.

Note: you can also include wheels by using direct references in pythonRequirementFiles, for example "pip @ file:///localbuilds/pip-1.3.1-py33-none-any.whl". However, if you do that then changes to these files won't get picked up and you are on the hook for cache invalidation. Therefore, if you have any wheels that you wish to install directly, it is recommended to add them here.

Attributes

Inherited from:
PipModule
Source
PipModule.scala
def useShortJvmPath(jvmId: String): Boolean

Attributes

Inherited from:
JavaHomeModule
Source
JavaHomeModule.scala