我在 pom 中有一个具有以下依赖项的网络应用程序:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.9.1.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.1.9.Final</version>
<scope>test</scope>
</dependency>
使用此配置,我在 junit 测试中收到以下错误:
java.lang.ClassFormatError:类文件 javax/persistence/Persistence 中非本机或抽象方法中的缺失代码属性
我在这里找到了有关此错误的一些信息。因此,我删除了“javaee-web-api”依赖项。
之后我得到编译错误'包 javax.persistence 不存在',等等。
因此,我将“hibernate-entitymanager”的范围更改为默认(编译)。
工作 pom(依赖项)如下所示:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.9.1.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.1.9.Final</version>
</dependency>
现在一切正常,除了生成的战争包含我不想要的休眠 jar。
任何建议如何解决这个问题,正确的maven pom?