至于现在,我们有一个名为单个源文件夹的项目结构src,其中包含三个模块的源代码.我想做的是:
1)编译源代码.使用sourceSets定义可以轻松完成此操作:
sourceSets {
main {
java {
srcDir 'src'
}
}
}
Run Code Online (Sandbox Code Playgroud)
2)将编译结果放入三个罐子里.我通过三个'jar'类型的任务来做这件事:
我现在通过三个单独的任务来做这件事:
util.jar
task utilJar(type: Jar) {
from(sourceSets.main.output) {
include "my/util/package/**"
}
}
Run Code Online (Sandbox Code Playgroud)client.jar中
task clientJar(type: Jar) {
from(sourceSets.main.output) {
include "my/client/package/**"
}
}
Run Code Online (Sandbox Code Playgroud)的server.jar
task serverJar(type: Jar) {
from(sourceSets.main.output) {
include "**"
}
excludes.addAll(utilJar.includes)
excludes.addAll(clientJar.includes)
}
Run Code Online (Sandbox Code Playgroud)问题是,server.jar应该包含不包含在所有类client.jar和util.jar.在ant build脚本中,我们使用differenceant task 来解决这个问题.如何在gradle中完成(我目前的方法不起作用)?
也许我的方法是完全错误的.请指教.
PS至于现在我们不能改变项目源代码文件夹结构.
我们正在从ant构建脚本转向gradle.在我们开始运行jUnit集成测试之前,一切看起来都很好.在夜间运行需要大约2个小时(通过蚂蚁),但用gradle运行相同的测试大约需要5个小时.这很奇怪.通过简短的调查,我发现测试类中的方法数量存在一定的相关性.数字越大,测试越慢.现在我正在运行一个包含28种测试方法的测试类.从蚂蚁或从eclipse或intellij想法运行需要1分钟,而从gradle运行相同的测试需要3分30秒.我尝试使用1.8和1.9 gradle.
测试任务:
task testSingle(type: Test) {
classpath = configurations.coreTest
maxHeapSize = '1G'
jvmArgs '-XX:MaxPermSize=192M'
include 'com/test/core/CAllocateGainTest*'
}
Run Code Online (Sandbox Code Playgroud)
请看屏幕截图
内存使用情况
Eclipse设置
UPDATE
当我使用具有类似配置的ant的junit任务时(参见下面的代码片段),测试运行就好了:
task testAllocateGains() {
ant.junit(fork: 'yes', maxmemory: '1G') {
formatter(type: 'xml')
classpath(path: configurations.coreTest.asPath)
jvmarg(value: '-XX:MaxPermSize=129M')
batchtest(todir: 'build/test-results') {
fileset(dir: 'build/classes/test') {
include (name: 'com/test/core/CAllocateGainTest*')
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
控制台输出:
$ gradle testAllocateGains
:testAllocateGains UP-TO-DATE
BUILD SUCCESSFUL
Total time: 1 mins 15.575 secs
Run Code Online (Sandbox Code Playgroud)
内存使用情况
有谁知道如何描述这个问题?