Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具... ...当前其支持的语言限于Java、Groovy、Kotlin和Scala...

嗯,没错,这就是我把它归类到 编程语言/Java 而不是 软件/编译 的原因。

相比于maven,Eclipse对于gradle的可视化操作的友好程度大大下降。只提供最基础的项目创建、任务运行(修改了配置文件之后居然还不会自动更新任务)和配置文件高亮功能。甚至连依赖配置都只能自己动手修改文件完成。虽然不难,但是不直观啊,对新手入门也不友好。反正我是搜了好久教程,七拼八凑弄出来的。

简要列出三大运行项目的方法[1]

  1. 暴力寻找主类运行。由于gradle只是一个项目构建工具(和cmake有点像?),并不负责对被处理对象进行运行操作,故默认状态下我们只能得到编译好的class文件。故最原始粗暴的方法便是手动为Eclipse指定一个运行时的主类。而当Eclipse在检测到所有项目文件均已编译好时,会直接运行项目,间接达到了目的:因为依赖配置使用的是gradle,直接使用Eclipse调用javac编译的话可能会出现缺少包的错误。

  2. 加载application插件。gradle可以通过插件扩展其功能。application插件能够为gradle添加一个Application Tasks/run的任务,通过该任务可以直接运行项目。 在build.gradle文件的最外层里添加

    apply plugin 'application'
    mainClassName = 'your.main.class'

    your.main.class换成项目的入口类,会自动调用其main方法运行项目。 没有mainClassName的话,buildrun任务都会出错,因为application插件将不知道你需要将哪个包作为应用程序运行。

  3. 这个更暴力了。。编译成jar然后自己去命令行运行(捂脸)
    jar {
    manifest.attributes 'Main-Class': 'com.mycompany.Main'
    from configuration.compile.collect { zipTree it}
    }

    然后gradle/gradlew build生成jar包,然后用对应的java命令执行(通常是java -jar file.jar)即可。

添加依赖的方法:

  1. 最简单粗暴(对应maven):

    <scope> '<group>:<artifact>:<version>'
    =======================================================
    <scope> IN compile, test, testCompile, runtime, etc.

    scope与maven中的部分对应。 例:runtime 'mysql:mysql-connector-java' << 最后一个版本号可以省略,应该是默认取最新版本吧?

  2. 优雅一点:

    <scope> group: '...', name: '...', version: '...'
    =======================================================
    <scope> IN compile, test, testCompile, runtime, etc.

    例:runtime group: 'mysql', name: 'mysql-connector-java', version: '8.0.16'

  3. 本地文件:
    <scope> fileTree(dir: 'lib', includes: ['mysql-connector-java-8.0.16.jar'])
    =======================================================
    <scope> IN compile, test, testCompile, runtime, etc.

    该写法会让gradle到项目根目录下的lib文件夹里寻找mysql-connector-java-8.0.16.jar

参考: [1] https://www.cnblogs.com/yongheng20/p/6161160.html

标签: none

添加新评论