java – 为什么在本地maven repo上安装时会从工件中删除分类器?

我有一个实用程序项目,它使用gradle生成JAR工件.在生成JAR工件时,我使用Jar任务的分类器属性解释了
here.我在build.gradle中使用的代码是:

def artifactClassifier = project.hasProperty('classifier') ? classifier : "dev"
jar {
    classifier = artifactClassifier
}

我可以看到JAR是按照预期生成的(myutils-1.0-test.jar),同时我按照gradle构建运行.

$gradle clean build -Pclassifier=test

现在,我尝试使用以下命令将此工件安装到我的本地M2存储库:

$mvn:install install-file -Dfile=/path/to/myutils-1.0-test.jar -DgroupId=my.group -DartifactId=myutils -Dversion=1.0 -Dclassifiers=test

这个安装很成功,但是当我检查了我的M2仓库时,我看到JAR文件位于:〜/ .m2 / repository / my / group / myutils / 1.0 / myutils-1.0.jar.已安装的工件名称中缺少分类器值测试.然后,我尝试将其添加为依赖项:

<dependency>
  <groupId>my.group</groupId>
  <artifactId>myutils</artifactId>
  <version>1.0</version>
  <classifier>test</classifier>
</dependency>

但是,maven无法解决它.删除分类器标签后,maven可以解决依赖关系. Gradle也发生了同样的事情.当我添加了以下内容时,Gradle无法解决依赖关系(我试过没有@jar,这也没有用.

ext {
  myutils.version = "1.0"
}
compile "my.group:myutils:${myutils_version}:test@jar"

而在删除:test @ jar时,让Gradle解析依赖关系.

我正在使用Gradle v2.3和Maven v3.3.1

我错过了什么吗?有人能帮助我吗?

最佳答案 尝试使用-Dclassifier(不带s)作为mvn install:install-file的参数.

即:

$mvn install:install-file -Dfile=/path/to/myutils-1.0-test.jar -DgroupId=my.group -DartifactId=myutils -Dversion=1.0 -Dclassifier=test
点赞