当前位置: 首页 > 知识库问答 >
问题:

Gradle绑定依赖配置与任务

韦安怡
2023-03-14


我对Gradle完全陌生。首先,我尝试为简单的控制台Java应用程序创建一个构建脚本,而不使用Java插件。maven repository中的代码中只有两个依赖项。因此,我的构建包含一个任务,它扩展了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'
}

据我所知,在那之后我必须将那些配置与我的编译操作绑定,但我无法弄清楚如何。有人可以向我指出这一点吗?任何帮助都将非常感谢)

P. S.我已经阅读了这个在Gradle中,将任务与依赖配置相关联,并且提到了源代码集。所以,我可以创建源代码集myThing,并且将为我创建具有配置的任务?这在没有java插件的情况下可以工作吗?

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

共有2个答案

冯浩旷
2023-03-14

最后,我使用这段代码编译了没有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任务,它依赖于解析编译依赖。
希望这会对某人有所帮助。

黄景胜
2023-03-14

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

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

configurations.myCompile.getAsPath()

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

如果你觉得需要一个快速的初学者课程,试试这个视频。

 类似资料:
  • 我有两个互斥的任务,它们都应该在完成后启动。 我提到它们是互斥的,因为我不想让< code>bootRun依赖于它们中的任何一个。相反,我在寻找一个类似如下的流程: 我尝试了以下方法, 因此,将启动设置()和bootRun(与的类似设置)。这会导致在项目'中找不到路径'bootRun'的 我还尝试将A/B任务声明为:< code > task A(type:org . spring framewo

  • 根据我的理解,clean现在将调用clearVersionProperties,war将调用WriteVersionProperties。 但当我执行分级清洁时,Reactor计划看起来是这样的: 为什么要执行clearVersionProperties和writeVersionProperties任务,因为它们绑定到某些构建阶段?例如,不执行任务infoEnv,而是执行任务writeVersio

  • 嗨,如果我用任务列出所有任务--我看到所有导入的ant任务,但是当我试图创建依赖于ant任务的任务时,我得到的是“Could not determine the dependencies of task':testgradle'”。 出现问题的行:-它显然看不到ant init任务。 我做错了什么? 所有编译-编译主源树java文件 byWorld5 copyTestConfiguration-复

  • 我有一些与jdbc相关的通用代码,我想单独打包到一个可运行的jar中,其中已经包含了所需的jdbc库,因此每个数据库类型都有一个单独的可运行jar。源代码将保持不变,但打包的jdbc jar将不同。 例如jdbc app postgres。jar将只包含postgres jdbc jar,而jdbc应用程序mysql。jar将包含mysql jdbc jar。 是否可以使用gradle对任务或任何

  • 我试图通过这个Gradle插件https://github.com/theboegl/gradle-launch4j使用http://launch4j.sourceforge.net/。 当我执行时,我会得到以下输出。 这是我的年级版本信息。 这是我的构建脚本。