【发布时间】:2014-07-31 12:04:44
【问题描述】:
我有一个构建两个 jars 作为工件的 maven 项目。版本号是 0.7,一个工件以“默认”方式构建,第二个有一个分类器。因此,在我的存储库中,它们看起来像这样:
Tue Jun 10 08:06:12 MST 2014 14915 gokenizer-0.7.pom
Tue Jun 10 08:06:12 MST 2014 40 gokenizer-0.7-core.jar.sha1
Tue Jun 10 08:06:12 MST 2014 40 gokenizer-0.7.pom.sha1
Tue Jun 10 08:06:12 MST 2014 32 gokenizer-0.7.jar.md5
Tue Jun 10 08:06:12 MST 2014 32 gokenizer-0.7.pom.md5
Tue Jun 10 08:06:12 MST 2014 37969843 gokenizer-0.7.jar
Tue Jun 10 08:06:12 MST 2014 41887392 gokenizer-0.7-core.jar
Tue Jun 10 08:06:12 MST 2014 32 gokenizer-0.7-core.jar.md5
Tue Jun 10 08:06:12 MST 2014 40 gokenizer-0.7.jar.sha1
如您所见,带有分类器的 jar 具有“核心”作为其分类器。
仓库的路径是:
http://myhostname/plugin/repository/project/DomainIQCore/LastSuccessful/repository/com/example/domain/gokenizer/0.7/
一切都好吗?那么在构建我的项目时,我如何实际指定我想要带有“核心”分类器的 jar 呢?
在我的 build.scala 文件中,我尝试了这个:
libraryDependencies ++= Seq(
"com.example.domain" % "gokenizer" % "0.7" % "core"
),
然后我得到这个错误:
java.lang.IllegalArgumentException: Cannot add dependency 'com.example.domain#gokenizer;0.7' to configuration 'core' of module com.example#domainiq_2.10;0.1.0-SNAPSHOT because this configuration doesn't exist!
当我尝试这个时:
libraryDependencies ++= Seq(
"com.example.domain" % "gokenizer" % "0.7-core"
),
它显然构建了错误的存储库路径:
http://myhostname/plugin/repository/project/DomainIQCore/LastSuccessful/repository/com/example/domain/gokenizer/0.7-core/gokenizer-0.7-core.pom
我肯定做错了什么。我认为第一种方式(第四个字段作为“核心”)是方式,但我不知道“因为这个配置不存在”是什么意思。由于它似乎甚至没有尝试访问存储库,看来我必须告诉 SBT “核心”是什么意思?这对我来说没有意义,因为我认为它只是路径的一部分,而不是这样的“配置”。
当我删除第 4 个字段时,它会正确获取 jar 的非分类器版本,所以我知道存储库在那里并且正在工作......
帮助?
【问题讨论】:
-
在 maven 中,一个工件(一个 jar)的格式如下:name-version.jar。要获得您想要的,您要么必须在 maven 依赖项中将核心 jar 的版本称为 0.7-core,要么将核心 jar 的名称更改为 blam-core,版本为 0.7 (blam-core-0.7)。