Gradle相当于Maven的"复制依赖"?

sme*_*eeb 11 dependency-management gradle maven

在Maven-land中,只要我想简单地下拉特定POM文件的传递依赖项,我只需打开一个shell,导航到POM所在的位置,然后运行:

mvn dependency:copy-dependencies
Run Code Online (Sandbox Code Playgroud)

繁荣时,Maven target/在当前目录中创建一个目录,并将所有可传递的JAR放置到该位置.

我现在正试图切换到Gradle,但Gradle似乎没有相同的功能.所以我问:Gradle是否有相当于Maven的copy-dependencies 如果是这样,有人可以提供一个例子吗?如果没有,其他开发者会发现这对Gradle社区有价值吗?

Opa*_*pal 23

没有相当于copy-dependenciesgradle,但这是一个任务,它做到了:

apply plugin: 'java'

repositories {
   mavenCentral()
}

dependencies {
   compile 'com.google.inject:guice:4.0-beta5'
}

task copyDependencies(type: Copy) {
   from configurations.compile
   into 'dependencies'
}
Run Code Online (Sandbox Code Playgroud)

是否值得做出贡献?你可以看到它真的很容易,所以我不这么认为.

  • 对于任何Gradle新手,请使用此代码段并将其放入计算机某处的`build.gradle`文件中.然后打开一个shell,导航到你创建`build.gradle`的地方并输入`gradle copyDependencies`.Gradle执行后,将出现一个`dependencies`目录,其中包含所有传递deps.您现在可以编辑此`build.gradle`以包含您喜欢的任何依赖项,并确保在每次运行`gradle copyDependencies`之前删除`dependencies`. (8认同)
  • @Opal则相反 - 对于“runtime”,“compile”和“runtime”都将被复制 https://docs.gradle.org/current/userguide/userguide_single.html#configurations (3认同)

小智 11

在gradle 4.x中不推荐使用compile的依赖配置.您需要将其替换为默认值.所以上面的代码片段变成了:

dependencies {
  implementation 'com.google.inject:guice:4.0-beta5'
}
task copyDependencies(type: Copy) {
  from configurations.default
  into 'dependencies'
}
Run Code Online (Sandbox Code Playgroud)


The*_*ter 10

This is the equivalent Kotlin DSL version (added the buildDir prefix to make it copy the dependencies in the build folder):

task("copyDependencies", Copy::class) {
    from(configurations.default).into("$buildDir/dependencies")
}
Run Code Online (Sandbox Code Playgroud)