0

因此,我设置了一种使用此配置运行集成测试的方法:

test {
    exclude "**/*IntegrationTest*.class"
}

task integrationTest(type: Test, dependsOn: testClasses) {
    include "**/*IntegrationTest*.class"
}

check.dependsOn integrationTest

效果很好。但是为了登录我的集成测试,我想使用来自特定目录的 log4j.properties 文件,而不是位于src/main/resoures用于生产的目录中的文件。

我试过这个但没有用:

  integrationTest.classpath = files("$rootDir/test/src/main/resources/log4j.properties") + integrationTest.classpath

我还试图看看我是否可以排除该文件,但找不到方法。试过这个:

  processTestResources.exclude "**/*log4j.properties"

关于在生产中包含一个属性文件并在测试中包含另一个属性文件的任何建议?

4

2 回答 2

1

如果您将“测试”log4j.properties 放在src/test/resources目录中,它实际上会出现在src/main/resources测试/集成测试的类路径中的任何内容之前。

另一种解决方案是设置您的捆绑,以便生产的 log4j.properties 不在 src/main/resources 中,而是从不同的目录添加到 jar...

jar {
  from('production') {
    include('log4j.properties')
  }
}

如果您想将log4j.properties文件保留在其当前位置,那么您几乎已经完成了尝试。在类路径上,您可以拥有 jar 文件或包含资源的目录。所以尝试这样做:

integrationTest.classpath = files("$rootDir/test/src/main/resources") + integrationTest.classpath
于 2012-12-27T09:08:09.827 回答
0

似乎您也可以这样做,以便 .jar 任务稍后包含它:

sourceSets {
  main {
    java {
      srcDir 'src/main/java'
      output.classesDir   = 'build/classes/main'      
    }
    resources {
      srcDir 'src/main/resources'
      include 'logback.xml'
      output.resourcesDir = 'build/resources/main'
    }
  }
}
于 2013-02-26T16:02:49.863 回答