告诉gradle从src / test / resources而不是src / main / resources中选择persistence.xml

时间:2015-01-31 20:23:56

标签: java jpa gradle persistence.xml

我开发了一个Gradle java web项目,可以在Wildfly中运行,具有以下结构:

- src/main/java
- src/main/resources
  \-- META/INF
      \-- persistence.xml
- src/test/java
- stc/test/resources
  \-- META/INF
      \-- persistence.xml

以下build.gradle

apply plugin: 'war'
apply plugin: 'eclipse-wtp'

sourceCompatibility = 1.8
version = '1.0'
jar {
    manifest {
        attributes 'Implementation-Title': 'Arch Project', 'Implementation-Version': version
    }
}

repositories {
    mavenCentral()
}

configurations {
    provided
}

sourceSets {
    main.compileClasspath += configurations.provided
    test.compileClasspath += configurations.provided
    test.runtimeClasspath += configurations.provided
}

dependencies {

    /* Java EE 7 API. */
    provided 'javax:javaee-api:7.0'

    /* JUnit for unit testing. */
    testCompile 'junit:junit:4.1.2'

    /* DbUnit - Persitence unit testing. */
    testCompile 'org.dbunit:dbunit:2.5.0'
    testCompile 'org.slf4j:slf4j-simple:1.7.9'

    /* Hibernate. */
    testCompile 'org.hibernate:hibernate-core:4.3.7.Final'

    /* Hibernate provider for JPA. */
    testCompile 'org.hibernate:hibernate-entitymanager:4.3.7.Final'

    /* Hibernate dependency. */
    testCompile 'com.fasterxml:classmate:1.1.0'

    /* PostgreSQL for persistence tests context */
    testCompile 'org.postgresql:postgresql:9.3-1102-jdbc41'
} 

源文件夹persistence.xml中的src/test/resources文件是我在运行测试时要使用的文件,而不是src/main/resources中的另一个文件。 我需要它,因为来自persistence.xml的{​​{1}}依赖于Java EE应用程序服务器中定义的JTA数据源,所以,我相信它不会在本地执行上工作。
如何配置它以通过命令src/main/resources

在Eclipse和Gradle中成功运行测试

提前致谢。

1 个答案:

答案 0 :(得分:1)

要解决此问题,请按照以下说明操作:

在Eclipse的项目属性Java Build Path-> Order and Export中,将测试文件夹放在src文件夹上。

并谈论另一个问题:Use different JPA.persistence.xml in Eclipse depending on production or test environment