我有一个多项目gradle项目(spring web),布局如下:
springweb
| build.gradle
| settings.gradle
|_____ services
| build.gradle
| src/main/java
| src/main/resources
| src/test/java
| src/test/resources
| create-data.sql
|_____ web
| build.gradle
| src/main/java
| src/main/resources
| src/main/webapp
| src/test/java
| src/test/resources
当我尝试执行src/test/resources(init.sql)下的内容时
commandLine 'psql', '-h', 'localhost', '-d', 'junit', '--username', 'junit', '-f' , sourceSets['test'].output.resourcesDir.toString() + '/create-data.sql'
/Users/me/dev/springweb/services/build/resources/test/create-data.sql: No such file or directory
ext {
springSecurityGroup = 'org.springframework.security'
springSecurityVersion = '3.1.4.RELEASE'
springGroup = 'org.springframework'
springVersion = '3.2.5.RELEASE'
hibernateGroup = 'org.hibernate'
hibernateVersion = '4.2.7.SP1'
}
subprojects {
apply plugin: 'java'
apply plugin: 'eclipse'
sourceSets.all{
println output.classesDir
}
repositories {
mavenCentral()
}
}
task createDb (type:Exec) {
println sourceSets['test'].output.resourcesDir.toString()
commandLine 'psql', '-h', 'localhost', '-d', 'junit', '--username', 'junit', '-f' ,'/Users/me/dev/sip/sip/sip04/src/main/resources/create-table.sql'
}
task fillDb (type:Exec, dependsOn: 'createDb') {
commandLine 'psql', '-h', 'localhost', '-d', 'junit', '--username', 'junit', '-f' , sourceSets['test'].output.resourcesDir.toString() + '/create-data.sql'
}
test.dependsOn fillDb
dependencies {
/* zipped */
}
/* Change context path (base url). otherwise defaults to name of project */
我用gradle构建执行它:
gradle build
/Users/me/dev/springweb/services/build/classes/main
/Users/me/dev/springweb/services/build/classes/test
/Users/me/dev/springweb/web/build/classes/main
/Users/me/dev/springweb/web/build/classes/test
/Users/me/dev/springweb/services/build/resources/test
:services:compileJava UP-TO-DATE
:services:processResources UP-TO-DATE
:services:classes UP-TO-DATE
:services:jar UP-TO-DATE
:services:assemble UP-TO-DATE
:services:createDb
DROP TABLE
DROP SEQUENCE
zipped
:services:fillDb/Users/me/dev/springweb/services/build/resources/test/create-data.sql: No such file or directory
从输出中我了解到sourceSets和我预期的一样,但是测试资源没有被复制。怎么啦?
测试资源的复制由Java插件中的processTestResources任务完成。Java插件还将此指定为测试任务的先决条件,以便在测试运行之前进行。
您已经告诉gradle您的fillDb任务也是test任务的先决条件,但您没有告诉它processTestResources是createDb任务的先决条件。
所以你可以做一些像
task createDb (type:Exec, dependsOn: 'processTestResources') {
...
BTW测试资源是通过类路径使测试可用的东西。我假设您的测试实际上不需要在运行时在类路径上可用的sql,那么它们甚至需要在那里吗?
我的构建输出是out/production/classes。Java文件可以很好地编译成类,然后放在out/production/classes/packageName上,但资源不会被复制。据我所知,他们应该直接进入out/production/classes目录。 如果相关的话,我使用的是Java 11、Spring Boot和Gradle。这是我的构建。渐变 和我的编译器设置: 我的资源没有被
我正在尝试创建一个Jar用作Maven存储库 我已经构建了所有内容,所有类都准备好了。唯一的问题是gradlew./build包含了测试文件夹中的类和资源。我不希望这些作为jar的一部分,尤其是正在测试的资源文件。 因此,我的问题是,如何从jar构建任务中排除这些文件。我试过了 在我的身体里。格拉德尔:但那没用 我是Gradle和Maven的新手,所以任何洞察力都会有帮助。谢谢! 参考材料 bui
我的gradle模块有以下文件夹结构: 我的目标是建立一个ear存档,它只包含Tclient。war和META-INF。然而,gradle将所有资源文件复制到ear根目录。 Gradle留档关于耳朵插件说: Ear任务的默认行为是将src/main/application的内容复制到归档文件的根目录。如果应用程序目录不包含META-INF/application。然后会为您生成一个xml部署描述符
当我在gradle中运行构建任务时,它将所有的Java资源(从src/main/resources)复制到build/resources中。因为我有太重的文件,所以我的构建过程比可能的要慢得多。 有什么方法可以禁止复制它们,并迫使Java仅仅从src/main/resources使用它们吗?
我使用以下命令为调试生成启用了proguard: 当我这样做时,我遇到的问题是gradle构建也希望在proGuard dDebugTest任务期间推进测试。我似乎无法修改以访问此特定任务。有没有一种方法可以预先调试apk,而不是测试apk?
问题内容: 我创建了自己的build.xml,其中包含: 效果很好。当我调用ant run时,它会编译并运行我的应用程序,但是我的应用程序带有图标包,并且不会移动到“ build”文件夹,因此我的应用程序以无法找到我的图标的异常结束。当我自己移动它们时,它将起作用。 我尝试使用 它可以工作,但是我想不使用copy命令。javac是否有任何参数?或者是其他东西? 谢谢你的答案。 问题答案: 抱歉,您