我有一个包含多个模块的项目,这些模块的源位于不同的文件夹中。我想将那些独立模块的构建作为gradle构建脚本的任务。
/.
/abc/MyTest.java
/lib/<empty>
/build.gradle
build.gradle:
apply plugin: "java"
dependencies { compile "javax.jms:jms:1.1" }
defaultTasks 'compileIt'
task compileIt (type: JavaCompile) {
source = files("abc/MyTest.java")
classpath = files("lib")
destinationDir = file('classes')
}
MyTest.java:
package abc;
public class MyTest {
public static void main(String[] argv) throws javax.jms.JMSException {
throw new javax.jms.JMSException("JMS test!");
}
}
运行gradle我遇到以下错误:
C:\Develop\Java\....\MyTest.java:3: error:
package javax.jms does not exist
public static void main(String[] argv) throws javax.jms.JMSException
似乎没有使用任何依赖项。
将“ <<”放入任务
task compileIt (type: JavaCompile) << {
我有:
C:\Develop\Java\.....>gradle
:compileIt UP-TO-DATE
BUILD SUCCESSFUL
Total time: 4.296 secs
但是到目前为止什么也没做...
问题出在哪儿?非常感谢你!
解决方案是删除Java插件的用法并添加用于编译的配置:
configurations {
compile
}
然后classpath
像这样设置:
classpath = configurations.compile
设置sourceCompatibility
,targetCompatibility
并dependencyCacheDir
完成compileIt
任务。
编辑 - - - - - - - - - - - - -
正如与@Peter Niederwieser讨论的那样,更好的方法是自定义java
插件:
更改默认版本的配置:
sourceSets {
main {
java {
srcDirs = ['abc']
}
}
...
}
另外,您可以更改构建目录:
compileJava {
destinationDir = file(project.get("build.binaries.dir"))
}
为第二个构建添加新任务
sourceSets {
...
compileTwo {
java {
srcDirs = ['abc2']
}
}
}
...
task compileTwo(type: JavaCompile) {
source = sourceSets.compileTwo.allSource.srcDirs
destinationDir = file('classes')
classpath = configurations.compile
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句