Java 带任务的渐变绑定依赖项配置

Java 带任务的渐变绑定依赖项配置,java,gradle,dependency-management,Java,Gradle,Dependency Management,我对格雷德尔完全陌生。首先,我尝试为简单的控制台Java应用程序创建一个构建脚本,而不使用Java插件。maven存储库中的代码中只有两个依赖项。 因此,我的构建包含一个任务,它扩展了JavaCompile,在其中我指定了类路径、目标等 我的项目不应用java插件,因此我需要自己创建依赖项配置,如下所示: configurations { myCompile { desciprtion = 'my own compile dependency configurat


我对格雷德尔完全陌生。首先,我尝试为简单的控制台Java应用程序创建一个构建脚本,而不使用Java插件。maven存储库中的代码中只有两个依赖项。 因此,我的构建包含一个任务,它扩展了JavaCompile,在其中我指定了类路径、目标等
我的项目不应用java插件,因此我需要自己创建依赖项配置,如下所示:

    configurations {
      myCompile {
      desciprtion = 'my own compile dependency configuration'
      transitive = true
      }
 }
然后我可以绑定此配置上的依赖项:

dependencies {
myCompile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.7'
myCompile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.7'
}
据我所知,在那之后,我必须用我的编译操作绑定这些配置,但我不知道如何绑定。有人能给我指出这一点吗? 任何帮助都将不胜感激)

另外,我读过这篇文章,其中提到了源代码集。所以,我可以创建源集神话,并为我创建带有配置的任务?如果没有java插件,这会起作用吗?


P.P.S.为了学习Gradle,我想实现这个没有插件的简单任务,它的基本工具是:)

首先使用exec任务类型创建编译任务,请参阅

创建编译任务时,可以使用getAsPath()获取对配置的引用,请参阅

但是说真的,我确实建议您为此应用java插件


如果您觉得需要快速入门课程,请尝试。

首先使用exec任务类型创建编译任务,请参阅

创建编译任务时,可以使用getAsPath()获取对配置的引用,请参阅

但是说真的,我确实建议您为此应用java插件


如果您觉得需要快速入门课程,请尝试。

最终,我使用以下代码编译了不带java插件的项目:

task resolveCompileDependency(type: Copy) {
    //download libraries specified in dependency configuration
    def lib_files = configurations.myCompile.resolve()
    //print names of downloaded files and copy to build directory (optional)
    lib_files.each {File file ->
        println file.name
    }
    from lib_files
    into 'build/classes'
    outputs.files(lib_files)
}

编译任务只是普通的JavaCompile任务,它依赖于ResolveCompiledDependence。
希望这能帮助到别人。

最后,我用这段代码编译了没有java插件的项目:

task resolveCompileDependency(type: Copy) {
    //download libraries specified in dependency configuration
    def lib_files = configurations.myCompile.resolve()
    //print names of downloaded files and copy to build directory (optional)
    lib_files.each {File file ->
        println file.name
    }
    from lib_files
    into 'build/classes'
    outputs.files(lib_files)
}

编译任务只是普通的JavaCompile任务,这取决于ResolveCompiledDependence。
希望这能帮助到别人。

谢谢链接!为什么要使用Exec类型进行编译,而不是JavaCompile?在Task documentation()中,列出了一些可以用作依赖项的对象,但这些对象似乎只与其他任务的依赖项(段落任务依赖项和任务顺序)相关。如果您想自己编写整个编译,可以使用Exec,但正如你所说,没有真正的必要。我想我误解了这个问题。我以为您想编写编译等而不应用java插件(因为您编写了“无插件”)。这看起来很奇怪,但也许是一个很好的练习。谢谢你的链接!为什么要使用Exec类型进行编译,而不是JavaCompile?在Task documentation()中,列出了一些可以用作依赖项的对象,但这些对象似乎只与其他任务的依赖项(段落任务依赖项和任务顺序)相关。如果您想自己编写整个编译,可以使用Exec,但正如你所说,没有真正的必要。我想我误解了这个问题。我以为您想编写编译等而不应用java插件(因为您编写了“无插件”)。这看起来很奇怪,但也许是一个很好的练习。