mvn测试不使用maven 3.3.9和java 1.8.0_45

时间:2017-04-18 11:10:10

标签: java-8 maven-3 jpa-2.0 spring-4 maven-surefire-plugin

我正在运行mvn clean test
maven 3.3.9
java 1.8.0_45
testng 6.8.5
我的春天版本是4.0。 4.RELEASE
但得到以下错误。

  

[ERROR]   springTestContextPrepareTestInstance(com.inn.app17apr02.db.TestAuditDb)   经过的时间:1.205秒<<<失败! java.lang.IllegalStateException:   无法加载ApplicationContext引起:   org.springframework.beans.factory.BeanCreationException:错误   在文件中定义名为'entityManagerFactory'的bean   [/home/ist/apache-tomcat-7.0.59/webapps/REPO/app17apr02/app17apr02/1.0/app17apr02/target/classes/applicationContext/application.xml]:   调用init方法失败;嵌套异常是   java.lang.NoSuchMethodError:   javax.persistence.Table.indexes()[Ljavax /持久/索引;引起:   java.lang.NoSuchMethodError:   javax.persistence.Table.indexes()[Ljavax /持久/索引;

我经常搜索并尝试过不同的组合和排列,但仍然没有成功。 以下是我在pom中的插件条目

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.20</version>
    <configuration>
        <properties>
            <property>
                <name>usedefaultlisteners</name>
                <value>false</value>
            </property>
            <property>
                <name>listener</name>
                <value>org.uncommons.reportng.HTMLReporter, org.uncommons.reportng.JUnitXMLReporter</value>
            </property>
            <property>
                <name>testname</name>
                <value>${project.name} TestNG tests reports</value>
            </property>
        </properties>
        <systemProperties>
            <property>
                <name>org.uncommons.reportng.title</name>
                <value>${project.name} TestNG Report</value>
            </property>
            <property>
                <name>org.uncommons.reportng.stylesheet</name>
                <value>/home/ist/apache-tomcat-7.0.59/webapps/REPO/app17apr02/app17apr02/1.0/app17apr02/headstart/artifacts/custom.css</value>
            </property>
            <property>
                <name>org.uncommons.reportng.coverage-report</name>
                <value>https://www.google.co.in</value>
            </property>
        </systemProperties>
        <workingDirectory>target/</workingDirectory>
        <reportsDirectory>/home/ist/apache-tomcat-7.0.59/webapps/REPO/app17apr02/app17apr02/1.0/app17apr02/headstart/sartifacts/surefire-reports</reportsDirectory>
        <classpathDependencyExcludes>
            <classpathDependencyExclude>org.apache.tika:tika-app</classpathDependencyExclude>
        </classpathDependencyExcludes>
        <forkCount>3</forkCount>
        <reuseForks>true</reuseForks>
        <argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
    </configuration>
    <dependencies>
        <dependency>
            <groupId>org.hibernate.javax.persistence</groupId>
            <artifactId>hibernate-jpa-2.1-api</artifactId>
            <version>1.0.0.Final</version>
        </dependency>
    </dependencies>
</plugin>

如果需要更多信息,请与我们联系。 我尝试过使用不同的JAP 2.x罐子,因为SO上的许多答案都说它是JPA jar的问题,并尝试了不同的可靠版本,如2.18.x,2.19.x. 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

表#index()方法已在2.1版中添加,因此您使用的jar是正确的。 在classpath中可能还添加了一些其他jar,它也有@Table注释,例如persistence-api-1.0.jar或其他一些jar。检查您的课程路径并删除/排除这些罐子。

您可能需要hibernate-entitymanager依赖

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>5.1.0.Final</version>
        <scope>runtime</scope>
    </dependency>