我们有我们复制所有的罐子项目/ lib以使playframework可以消耗他们的老playframework 1.2.x的版本。 我们很乐意所有源罐子复制以及使运行过程中出现打eclipsify的时候,我们可以查看所有的第三方来源。 有没有办法用gradle这个做到这一点?
我的意思是,当我跑gradle这个日食,因为我看到他们下载的缓存位置已下载的所有源罐子。 我们有日食的gradle呼吁发挥eclipsify为我们的一个项目,以及这样我们就可以100%只使用gradle这个。
感谢,迪安
这并非如预期那样直截了当。 下面的代码片段复制源罐子全部依赖(运行时间+编译)一个Java项目到特定文件夹:
task copySourceJars(type:Copy){
def deps = configurations.runtime.incoming.dependencies.collect{ dependency ->
dependency.artifact { artifact ->
artifact.name = dependency.name
artifact.type = 'source'
artifact.extension = 'jar'
artifact.classifier = 'sources'
}
dependency
}
from(configurations.detachedConfiguration(deps as Dependency[]).resolvedConfiguration.lenientConfiguration.getFiles(Specs.SATISFIES_ALL))
into('sourceLibs')
}
我们在这里使用一个lenientConfiguration的原因是,我们不希望失败,如果源神器不能得到解决。 有可能是一个更优雅的方式,但我没有带看了深入地了解。
希望能帮助到你,
勒内
刘若英答案将下载的直接依赖,并不是所有transitives依赖的来源罐子来源罐子。
这里是会做的伎俩任务:
task copySourceJars( type: Copy ) {
def sources = configurations.runtime.resolvedConfiguration.resolvedArtifacts.collect { artifact ->
project.dependencies.create( [
group: artifact.moduleVersion.id.group,
name: artifact.moduleVersion.id.name,
version: artifact.moduleVersion.id.version,
classifier: 'sources'
] )
}
from configurations.detachedConfiguration( sources as Dependency[] )
.resolvedConfiguration.lenientConfiguration.getFiles( Specs.SATISFIES_ALL )
into file( 'some-directory/' )
}
然后可以通过改变做的javadoc罐子非常相同的classifier
来javadoc
。
这里eskatos解决翻译中科特林DSL:
tasks {
"copySourceJars"(Copy::class) {
val sources = configurations.runtime.resolvedConfiguration.resolvedArtifacts.map {
with(it.moduleVersion.id) {
dependencies.create(group, name, version, classifier = "sources")
}
}
from(
configurations.detachedConfiguration(*sources.toTypedArray())
.resolvedConfiguration.lenientConfiguration.getFiles(Specs.SATISFIES_ALL)
)
into(File("some-directory"))
}
}