在我的项目中,根目录下有3个子项目。 build.sbt如下。 proj_C取决于proj_A和proj_B。 如果我使用以下命令创建了程序集proj_C包。成功并可以将组装包导入其他项目。
sbt“项目proj_C”程序集
如果我使用“ sbt publish”进行发布(如我在proj_C设置中定义的addArtifact),则还将生成一个组装jar包,然后进行发布。但是当我尝试编译另一个导入此程序集jar的项目时,它将低于错误
build.sbt的[错误]未解决的依赖项:proj_A; 1.0.0:找不到
部分如下。谁能指出我做错的方式吗? 非常感谢!
artifact in (Compile, assembly) := {
val art = (artifact in (Compile, assembly)).value
art.withClassifier(Some("assembly"))
}
lazy val assemblySettings = Seq(
assemblyMergeStrategy in assembly := {
{
case PathList("META-INF", xs @ _*) => MergeStrategy.discard
case _ => MergeStrategy.first
}
}
)
lazy val root = Project(base = file("."))
.disablePlugins(sbtassembly.AssemblyPlugin)
.aggregate(proj_A, proj_B, proj_C)
.settings(
commonSettings,
skip in publish := true,
name := "proj_root"
)
lazy val proj_A= (project in file("proj_A"))
.disablePlugins(sbtassembly.AssemblyPlugin)
.settings(
commonSettings,
skip in publish := true,
name := "proj_A"
)
lazy val proj_B= (project in file("proj_B"))
.disablePlugins(sbtassembly.AssemblyPlugin)
.settings(
commonSettings,
skip in publish := true,
name := "proj_B"
)
lazy val proj_C= (project in file("proj_C"))
.settings(
commonSettings,
assemblySettings,
addArtifact(artifact in (Compile, assembly), assembly),
name := "proj_C"
) dependsOn(proj_A, proj_B)
答案 0 :(得分:0)
首先,我希望您知道the publishing of the fat jar is not recommended。老实说,在您的情况下,这样做真的没有好处。
如果您只是分别发布filename = 'ZL-SA_feedback report_012844.xlsx'
matched = re.search('feedback.{0,3}report.*\.xlsx?', filename.lower())
,import glob
glob.glob('*[fF][eE][dD][bB][aA][cC][kK]*[rR][eE][pP][oO][rR][tT]*.xlsx')
,A
,然后在其他项目中添加依赖项,则所有依赖项将自动下载(以及那些项目的依赖项)。而且依赖管理将更加容易...
但是,由于您要添加B
依赖项,因此我猜是您实际上添加了错误的C
。我的猜测是,您同时发布了A-assembly
和jar
,并且添加了如下依赖项:
C.jar
但是您应该拥有:
C-assembly.jar