2017-08-02 83 views
0

我想实现一个编译一些java类并将其复制到tomcat目录的gradle构建脚本。我不想使用Gradle Java插件,因为它有很多不相关的东西。我想定义自己编译的&部署任务。我已经实现它如下 -编译任务运行成功但不生成任何类文件

task compile (type: JavaCompile) { 
    source = fileTree('$srcdir') 
    destinationDir = file('$builddir') 
    classpath = files('lib') 
    sourceCompatibility = '1.8' 
} 


task deploy (type: Copy) { 
    dependsOn compile 
    from fileTree('build') { 
     include fileTree('classes') 
    } 
    from fileTree('lib') { 
     include '*' 
    } 
into '${tomcathome}//${projectname}' 
} 

我还没有触及部署任务呢。当我运行编译任务时,它运行成功,但不生成任何类文件。我期待它在/ build目录下生成。

请建议。

感谢

+0

使用时您需要使用的GString“”和$ buildDir – LazerBanana

+0

同样的问题为''$ srcdir''变量。我不知道你在哪里指定'srcdir',但是你不能用一个简单的String(单引号)来使用它,因为这样它总是会被解释为字面位置(一个名为'$的子文件夹srcdir'在这种情况下)。您需要使用GString(双引号),正如@LazerBanana所述。或者你可以只使用变量而不是将其包装到GString中:'fileTree(srcdir)' –

+0

感谢您的输入。这个字符串字面意义的确帮助我解决了我的问题。我期待在gradle.properties中配置这些参数 - srcdir,builddir和其他类似的参数。这些文件与我的build.gradle位于同一图层,但如果在gradle.properties中配置,则无法获取参数的值。在开始构建任务之前,我是否需要做其他的事情来让gradle加载这个属性文件? – Techie

回答

0

总结在回答的意见,你需要使用GString像@ lu.koerfer说

这种方式,总是会(一个子文件夹名为$解释为文本的位置在这种情况下srcdir)

这是在字符串中使用变量时需要的,如果不需要在字符串中使用它,则不需要(那么您不需要美元符号)。

不知道如何您的变量定义,但对于构​​建和源目录您应使用摇篮提供变量

buildDir指向build目录

sourceSets.main.java.getSrcDirs()获取源目录(取决于项目结构)

sourceSets.main.java.srcDirs但是请注意,这将返回源目录的集合,具体取决于您指定sourceSets的方式,或者如果您还没有完成,默认情况下会返回maven约定结构src/main/java

对于一些全局变量,请阅读Ext variables

+0

感谢您的输入。这个字符串字面意义的确帮助我解决了我的问题。我期待在gradle.properties中配置这些参数 - srcdir,builddir和其他类似的参数。这些文件与我的build.gradle位于同一图层,但如果在gradle.properties中配置,则无法获取参数的值。在开始构建任务之前,我是否需要做其他事情来让Gradle加载这个属性文件 – Techie

+0

阅读关于ext变量 – LazerBanana

相关问题