Код: Выделить всё
eclipselink-2.7.15
lombok-1.18.32
tukaani-project-xz-java-8448675
db-derby-10.14.2.0-src
db-derby-10.15.2.0-src
solr-8.11.4
< /code>
Например, давайте возьмем еще один инструмент сборки - SBT < /p>
У меня есть скрипт, в котором упоминается, является ли данным проектом SBT единым или мульти -модульным проектом. < /p>
import sbt._
import Keys._
val moduleType = taskKey[String]("Determines if the project is single or multi-module")
moduleType := {
val allProjects = thisProject.all(ScopeFilter(inAnyProject)).value
if (allProjects.size
и другой сценарий, в котором рассказывается о текущем проекте SBT. < /p>
import sbt._
import Keys._
val customTask = taskKey[Unit]("Prints direct properties of each module, including the JAR location")
customTask := {
// Get all projects in the current session
val allProjects = thisProject.all(ScopeFilter(inAnyProject)).value
val extracted = Project.extract(state.value)
val structure = extracted.structure
val stateValue = state.value
// Get the root project (overall project) details
val rootProject = extracted.currentRef
val overallProjectOrg = extracted.get(organization in rootProject)
val overallProjectVersion = extracted.get(version in rootProject)
// Print overall project details
println(s"Group ID: $overallProjectOrg")
println(s"Version: $overallProjectVersion")
println()
// Function to determine the final scope based on priorities
def determineFinalScope(scopeStr: String): String = {
val priorities = List("compile", "runtime", "optional", "provided", "test")
val scopes = scopeStr.split(";").map(_.split("->").last.trim.toLowerCase).toList
priorities.find(scopes.contains).getOrElse("compile")
}
// Function to get the scope as a string
def getScope(scope: Option[String]): String = scope match {
case None => "compile"
case Some(s) => determineFinalScope(s)
}
allProjects.foreach { project =>
val projectRef = ProjectRef(extracted.currentRef.build, project.id)
val projectName = extracted.get(name in projectRef)
val projectOrg = extracted.get(organization in projectRef)
val projectVersion = extracted.get(version in projectRef)
println(s"Artifact: $projectOrg:$projectName:$projectVersion")
val baseDir = project.base.getAbsolutePath
println(s"Directory: $baseDir")
// Get and print the JAR location
val jarLocation = extracted.get(artifactPath in Compile in packageBin in projectRef)
println(s"JAR Location: $jarLocation")
// Print internal dependencies (dependencies on other modules within the project)
val internalDeps = project.dependencies.map { dep =>
val depProject = dep.project
val depModuleID = extracted.get(projectID in depProject)
val depScope = getScope(dep.configuration)
s"Internal: ${depModuleID.organization}:${depModuleID.name}:${depModuleID.revision}:$depScope"
}
internalDeps.foreach(println)
// Print external dependencies (third-party libraries)
val externalDeps = extracted.get(libraryDependencies in LocalProject(project.id))
externalDeps.foreach { dep =>
val depScope = getScope(dep.configurations)
println(s"External: ${dep.organization}:${dep.name}:${dep.revision}:$depScope")
}
println()
}
}
< /code>
Пример вывода для проекта SBT. < /p>
Group ID: com.fasterxml.jackson.module
Version: HEAD+20250506-1103
Artifact: com.fasterxml.jackson.module:jackson-module-scala:HEAD+20250506-1103
Directory: /Users/me/Downloads/SBT_Projects/jackson-module-scala-2.15.2
JAR Location: /Users/me/Downloads/SBT_Projects/jackson-module-scala-2.15.2/target/scala-2.13/jackson-module-scala_2.13-HEAD+20250506-1103.jar
External: org.scala-lang:scala-library:2.13.10:compile
External: com.fasterxml.jackson.core:jackson-core:2.15.2:compile
External: com.fasterxml.jackson.core:jackson-annotations:2.15.2:compile
External: com.fasterxml.jackson.core:jackson-databind:2.15.2:compile
External: com.thoughtworks.paranamer:paranamer:2.8:compile
External: com.fasterxml.jackson.datatype:jackson-datatype-joda:2.15.2:test
External: com.fasterxml.jackson.datatype:jackson-datatype-guava:2.15.2:test
External: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.15.2:test
External: com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:2.15.2:test
External: com.fasterxml.jackson.module:jackson-module-jsonSchema:2.15.2:test
External: javax.ws.rs:javax.ws.rs-api:2.1.1:test
External: io.swagger:swagger-core:1.6.8:test
External: org.scalatest:scalatest:3.2.15:test
Подробнее здесь: https://stackoverflow.com/questions/796 ... nt-project