当我这样做
dependencies {
file('libs/something.jar')
}
我的发行版中有something.jar
。但是,当我将依赖项推送到远程存储库(常春藤或maven)并希望从那里使用它时,gradle总是会向jar添加一个版本后缀。
dependencies {
compile group: 'org.company', name: 'something', version: '1.0'
}
结果在something-1.0.jar
。
即使这样
dependencies {
compile group: 'org.company', name: 'something'
}
结果在something-.jar
(注意破折号)。
我可以以某种方式阻止存储库依赖项具有版本吗?
(我的动机是jar是第三方jar,我不想在git repo中使用它,但我也不希望它的名字改变。)
正如您所说,您可以在工具库中为工件提供一个版本。您只是不希望应用程序中的jar版本。你可以做到
configurations {
something { transitive = false }
}
dependencies {
something 'org.company:something:1.0'
something 'org.company:something-else:1.0'
compile files(tasks['dummyTask'])
compile 'org.foo:some-normal-dep:1.1'
}
task copySomething(type:Copy) {
from configurations.something
into "$buildDir/something"
rename '(.+)-.+?\\.jar', '$1.jar'
}
task dummyTask {
dependsOn copySomething
inputs.dir "$buildDir/something"
outputs.files fileTree("$buildDir/something")
}
这方面的主要推动因素是Project.files(...)可以接受Task
Maven存储库要求每个工件都有一个版本。我认为可行的方法是在下载工件时或之后剥离版本号。 Maven可以选择在构建战争或耳朵时删除版本号,我想在Gradle中有类似的东西。