簡體   English   中英

無版本gradle依賴

[英]Versionless gradle dependencies

當我這樣做時

dependencies {
    file('libs/something.jar')
}

我的發行物中有something.jar 但是,當我將依賴關系推送到遠程存儲庫(ivy或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是3rd party 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中也有類似的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM