您的位置:首页 > 移动开发 > Android开发

<Android Studio>Gradle -- 如何编译单个java文件并运行其class

2018-02-02 14:42 1941 查看
本人这次的尝试是第一次接触gradle,通常的经验自然是靠搜索+蹩脚的英文阅读能力。

首先这个功能分为2块,编译+运行。

在module中的build.gradle创建single.gradle

1.先介绍下单独编译java文件,代码如下

task compilesingle(type: JavaCompile) {
source = './src/main/java'
include "packagepath/Single.java"
classpath = project.configurations.buildDependencies
destinationDir = file('./bin')
}

packagepath表示该文件的包名路径,例如:

pacakge com.aa.bb

则packagepath = com/aa/bb

include "com/aa/bb/Single.java"

destinationDir表示class文件的输出路径,如果执行了编译任务后,Single.class会出现在bin/com/aa/bb文件夹下面

classpath表示需要使用到的三方库,需要预先设置

configurations {
buildDependencies
}

dependencies {
buildDependencies "com.google.code.gson:gson:2.3.1"
}

这里在我们的Single.java使用到了gson库

2.运行编译过的class文件

现在我们获得了bin/com/aa/bb/Single.class,接着就是运行该文件,代码如下

task execlass(type: JavaExec) {
classpath = files('./bin', project.configurations.buildDependencies)
main = 'com.aa.bb.Single'
}

这个无需解释了,在Single.java中有static main的方法。

好了,本以为添加了新的single.gradle,并且在该module工程下的build.gradle添加

apply from: 'single.gradle'

就可以了。结果编译+运行都没有执行。因为本人并不熟悉gradle的编译原理,而task即是任务,会一条条按序执行。既然他不执行,那我就手动执行这2个task。

compilesingle.execute()

execlass.exec()

这样就完事OK了,然后我们删除掉bin文件夹,毕竟这是个临时文件夹

delete file('./bin')


现在献上完整的single.gradle

configurations {
buildDependencies
}

dependencies {
buildDependencies "com.google.code.gson:gson:2.3.1"
}

task execlass(type: JavaExec) { classpath = files('./bin', project.configurations.buildDependencies) main = 'com.aa.bb.Single' }

task compilesingle(type: JavaCompile) {
source = './src/main/java'
include "com/aa/bb/Single.java"
classpath = project.configurations.buildDependencies
destinationDir = file('./bin')
}

task flow {
compilesingle.execute()
execlass.exec()
delete file('./bin')
}


然后在该module工程下的build.gradle添加

apply from: 'single.gradle'


这样只要点击gradle同步按钮,即可运行single.gradle,达到我预编译的目的。
有兴趣的同学可以一个个实现,看看效果。

PS:最后这些有用的信息都是在gradle的官网社区里面找到的
https://discuss.gradle.org/
再通过不断的调试完成。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐