Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 9 additions & 4 deletions contrib/flyway/src/mill/contrib/flyway/FlywayModule.scala
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,18 @@ import mill.contrib.flyway.ConsoleLog.Level
import org.flywaydb.core.Flyway
import org.flywaydb.core.api.MigrationVersion
import org.flywaydb.core.api.logging.LogFactory
import org.flywaydb.core.internal.configuration.{ConfigUtils => flyway}
import org.flywaydb.core.internal.configuration.ConfigUtils as flyway
import org.flywaydb.core.internal.info.MigrationInfoDumper
import scala.jdk.CollectionConverters._

import scala.jdk.CollectionConverters.*
import mill.*
import mill.api.PathRef
import mill.api.daemon.MillURLClassLoader
import mill.javalib.{Dep, JavaModule}
import org.flywaydb.core.api.output.{BaselineResult, CleanResult, MigrateOutput, MigrateResult}

import scala.annotation.nowarn

trait FlywayModule extends JavaModule {
import FlywayModule._

Expand All @@ -34,10 +37,12 @@ trait FlywayModule extends JavaModule {
.filter(_.nonEmpty)
.map(key -> _)

def flywayClassloader = Task.Worker {
def flywayClassloader: Worker[MillURLClassLoader] = Task.Worker {
mill.util.Jvm.createClassLoader(jdbcClasspath().map(_.path))
}
def flywayInstance = Task.Worker {

@nowarn("msg=.*Workers should implement AutoCloseable.*")
def flywayInstance: Worker[Flyway] = Task.Worker {
val jdbcClassloader = flywayClassloader()

val configProps = Map(flyway.URL -> flywayUrl()) ++
Expand Down
6 changes: 5 additions & 1 deletion contrib/playlib/src/mill/playlib/RouteCompilerWorker.scala
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import mill.playlib.api.RouteCompilerType
import mill.javalib.api.CompilationResult
import mill.*

private[playlib] class RouteCompilerWorker {
private[playlib] class RouteCompilerWorker extends AutoCloseable {

def compile(
toolsClasspath: Seq[PathRef],
Expand Down Expand Up @@ -48,6 +48,10 @@ private[playlib] class RouteCompilerWorker {
case err => Result.Failure(err)
}
}
}

override def close(): Unit = {
// no-op
// TODO: cache classloader to improve repetitive compilations
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import mill.{Module, Task, Worker}
import mill.api.{Discover, ExternalModule}

trait RouteCompilerWorkerModule extends Module {

def routeCompilerWorker: Worker[RouteCompilerWorker] = Task.Worker {
new RouteCompilerWorker()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import mill.api.PathRef

import java.io.File

class ScalaPBWorker {
class ScalaPBWorker extends AutoCloseable {

private def scalaPB(scalaPBClasspath: Seq[PathRef])(using ctx: mill.api.TaskCtx) = {
val instance = new ScalaPBWorkerApi {
Expand Down Expand Up @@ -98,4 +98,8 @@ class ScalaPBWorker {
)
mill.api.Result.Success(PathRef(dest))
}

override def close(): Unit = {
// no-op
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import java.nio.file.Files;
import java.nio.file.Path;

public interface ScoverageReportWorkerApi2 {
public interface ScoverageReportWorkerApi2 extends AutoCloseable {

interface Logger {
void error(String msg);
Expand Down Expand Up @@ -105,4 +105,9 @@ static void makeAllDirs(Path path) throws IOException {
Files.createDirectories(path);
}
}

@Override
default void close() throws Exception {
// no-op
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import mill.contrib.scoverage.api.ScoverageReportWorkerApi2.{
}
import os.Path

class ScoverageReportWorker {
class ScoverageReportWorker extends AutoCloseable {

def bridge(classpath: Seq[PathRef]): ScoverageReportWorkerApiBridge = {
def ctx0(using ctx: TaskCtx): ApiCtx = {
Expand Down Expand Up @@ -74,6 +74,10 @@ class ScoverageReportWorker {
))
}
}

override def close(): Unit = {
// no-op
}
}

object ScoverageReportWorker extends ExternalModule {
Expand Down Expand Up @@ -101,5 +105,7 @@ object ScoverageReportWorker extends ExternalModule {

def scoverageReportWorker: Task.Worker[ScoverageReportWorker] =
Task.Worker { new ScoverageReportWorker() }

// TODO: make protected
lazy val millDiscover = Discover[this.type]
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
package mill.androidlib.databinding

trait AndroidDataBindingWorker {
trait AndroidDataBindingWorker extends AutoCloseable {

def processResources(args: ProcessResourcesArgs): Unit

def generateBindingSources(args: GenerateBindingSourcesArgs): Unit

override def close(): Unit = {
// no-up
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import mill.javalib.api.JvmWorkerApi.Ctx
import mill.javalib.api.internal.ZincOp
import os.Path

trait InternalJvmWorkerApi extends PublicJvmWorkerApi {
trait InternalJvmWorkerApi extends PublicJvmWorkerApi, AutoCloseable {

/** Compile a Java-only project. */
def apply(
Expand Down Expand Up @@ -119,7 +119,12 @@ trait InternalJvmWorkerApi extends PublicJvmWorkerApi {
reportCachedProblems = false
)
}

override def close(): Unit = {
// bin-compat shim
}
}

object InternalJvmWorkerApi {
type Ctx = PublicJvmWorkerApi.Ctx
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@ package mill.javalib.classgraph

import mill.api.TaskCtx

trait ClassgraphWorker {
trait ClassgraphWorker extends AutoCloseable {
def discoverMainClasses(classpath: Seq[os.Path])(using ctx: TaskCtx): Seq[String]

override def close(): Unit = {
// noop
}
}
3 changes: 3 additions & 0 deletions libs/javalib/src/mill/javalib/MavenWorkerSupport.scala
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import mill.javalib.publish.{Artifact, PublishInfo}
import mill.util.Jvm
import os.Path

import scala.annotation.nowarn

private[mill] trait MavenWorkerSupport extends CoursierModule with OfflineSupportModule {
private def mavenWorkerClasspath: T[Seq[PathRef]] = Task {
defaultResolver().classpath(Seq(
Expand All @@ -21,6 +23,7 @@ private[mill] trait MavenWorkerSupport extends CoursierModule with OfflineSuppor
Jvm.createClassLoader(classPath = classPath, parent = getClass.getClassLoader)
}

@nowarn("msg=.*Workers should implement AutoCloseable.*")
private[mill] def mavenWorker: Task.Worker[mill.javalib.internal.MavenWorkerSupport.Api] =
Task.Worker {
mavenWorkerClassloader().loadClass("mill.javalib.maven.worker.impl.WorkerImpl")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
package mill.kotlinlib.ksp2

trait KspWorker {
trait KspWorker extends AutoCloseable {

def runKsp(
symbolProcessorClassloader: ClassLoader,
kspWorkerArgs: KspWorkerArgs,
symbolProcessingArgs: Seq[String]
): Unit

override def close(): Unit = {
// no-op
}

}
8 changes: 6 additions & 2 deletions libs/util/src/mill/util/VisualizeModule.scala
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,16 @@ package mill.util

import java.util.concurrent.LinkedBlockingQueue
import coursier.core.Repository
import mill.api.{PathRef, Discover, Evaluator, ExternalModule, MultiBiMap, SelectMode}
import mill.api.{Discover, Evaluator, ExternalModule, MultiBiMap, PathRef, SelectMode}
import mill.*
import mill.api.{Result}
import mill.api.Result
import org.jgrapht.graph.{DefaultEdge, SimpleDirectedGraph}
import guru.nidi.graphviz.attribute.Rank.RankDir
import guru.nidi.graphviz.attribute.{Rank, Shape, Style}
import mill.api.BuildCtx

import scala.annotation.nowarn

object VisualizeModule extends ExternalModule {
def repositories: Seq[Repository] =
coursier.Resolve.defaultRepositories
Expand Down Expand Up @@ -62,6 +64,7 @@ object VisualizeModule extends ExternalModule {
}
}

// TODO: Remove bin-compat shim in Mill 2.x
@deprecated("Use toolsClasspath instead", "0.13.0-M1")
def classpath = toolsClasspath

Expand All @@ -88,6 +91,7 @@ object VisualizeModule extends ExternalModule {
* everyone can use to call into Graphviz, which the Mill execution threads
* can communicate via in/out queues.
*/
@nowarn("msg=.*Workers should implement AutoCloseable.*")
private[mill] def worker: Worker[(
LinkedBlockingQueue[(
scala.Seq[Task.Named[Any]],
Expand Down
Loading