Gradle项目:将依赖项复制到生成目录

Gradle项目:将依赖项复制到生成目录,gradle,Gradle,如何将项目的依赖项复制到生成目录 这是一个非常常见的问题。我已经搜索并找到了许多线索来回答这个确切的问题,但没有一个解决方案是有效的。这里有三个线程(有些非常旧),它们提供了我无法使用的解决方案 仅供参考,我已经尝试过,其中包括: task copyDependencies(type: Copy) { from configurations.compile into 'dependencies' } task copyDependencies2(type: Copy) {

如何将项目的依赖项复制到生成目录

这是一个非常常见的问题。我已经搜索并找到了许多线索来回答这个确切的问题,但没有一个解决方案是有效的。这里有三个线程(有些非常旧),它们提供了我无法使用的解决方案

仅供参考,我已经尝试过,其中包括:

task copyDependencies(type: Copy) {
   from configurations.compile
   into 'dependencies'
}

task copyDependencies2(type: Copy) {
    from project.configurations.compile
    into project.buildDir
}

project.copy {
    from project.configurations.compile
    into project.buildDir
}

如果可能的话,我更喜欢当前推荐的最佳实践方法,而不是过时的方法。我将继续使用当前的Gradle,截至本文撰写之时,它的版本为4.7。

好的,在玩了几个小时后,我有了一个有效的解决方案。这与旧的解决方案非常不同,旧的解决方案似乎不适用于当前版本的Gradle。这一款适用于Gradle 4.7:

task jarWithDeps(dependsOn: 'jar', type: Copy) {
  def conf = configurations.runtimeClasspath
  from conf.allDependencies.collect { conf.files(it) }
  into "${project.buildDir}/libs"
}

好的,在玩了几个小时之后,我有了一个有效的解决方案。这与旧的解决方案非常不同,旧的解决方案似乎不适用于当前版本的Gradle。这一款适用于Gradle 4.7:

task jarWithDeps(dependsOn: 'jar', type: Copy) {
  def conf = configurations.runtimeClasspath
  from conf.allDependencies.collect { conf.files(it) }
  into "${project.buildDir}/libs"
}

建议使用内置的“分发”插件

插件{
id“分发”
}
组“org.yourorg”
版本“1.0-SNAPSHOT”
存储库{
mavenCentral()
}
依赖关系{
testCompile组:“junit”,名称:“junit”,版本:“4.12”
编译组:“log4j”,名称:“log4j”,版本:“1.2.17”
}
分配{
主要{
内容{
从jar//复制您的jar
from(project.configurations.runtime)//复制依赖项jar
}
}
}
然后,您可以运行一个命令,该命令将在一个步骤中编译和组装:

gradlew installDist
这将在./build/install/
此外,您可以在./build/distributions下将分发创建为zip/

gradlew distZip
如果要将构建的jar与依赖项分开,这是常规的:

分布{
主要{
内容{
从罐子里
进入('lib'){
来自(project.configurations.runtime)
}
}
}
}

建议使用内置的“分发”插件

插件{
id“分发”
}
组“org.yourorg”
版本“1.0-SNAPSHOT”
存储库{
mavenCentral()
}
依赖关系{
testCompile组:“junit”,名称:“junit”,版本:“4.12”
编译组:“log4j”,名称:“log4j”,版本:“1.2.17”
}
分配{
主要{
内容{
从jar//复制您的jar
from(project.configurations.runtime)//复制依赖项jar
}
}
}
然后,您可以运行一个命令,该命令将在一个步骤中编译和组装:

gradlew installDist
这将在./build/install/
此外,您可以在./build/distributions下将分发创建为zip/

gradlew distZip
如果要将构建的jar与依赖项分开,这是常规的:

分布{
主要{
内容{
从罐子里
进入('lib'){
来自(project.configurations.runtime)
}
}
}
}

我相信使用gradle 6.1.1版,这对我来说很有效。谢谢。我相信使用gradle版本6.1.1,这对我来说很有效。谢谢