persistence.xml 在 mvn 编译期间需要
persistence.xml needed during mvn compilation
场景是这样的,
我正在尝试编译一个具有一些持久性 classes 的 Maven 项目。我在 src\main\resources\
下有 persistence.xml
。这编译得很好,但是我得到 运行-time error for persistence not found 如果我手动将 persistence.xml 移动到 jar 的 META-INF
目录下(xml 文件是打包在 jar 的根目录下)。
现在,如果我将 persistence.xml
移动到 src\main\resources\META-INF
下,我会得到奇怪的编译时错误
Fatal error compiling: java.lang.RuntimeException:
javax.annotation.processing.FilerException: Attempt to recreate a file
for type my.package.EntityClassName_
这个EntityClassName
可以是我的任何一个实体class。
我只想打包persistence.xml到jar的META-INF目录下。
有人可以指出我错过了什么吗?
如果重要的话,我正在使用 1.6 版本的 maven 编译器源和目标。
编辑:这个项目有一个父 Maven 项目。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.some.domain</groupId>
<artifactId>p-parent</artifactId>
<version>1.0.0</version>
<packaging>pom</packaging>
<modules>
<module>m1</module>
<module>m2</module>
<module>m3</module>
</modules>
<properties>
<maven.compiler.source>1.6</maven.compiler.source>
<maven.compiler.target>1.6</maven.compiler.target>
</properties>
<scm>
<connection>scm:git:https://some.place/project.git</connection>
</scm>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>javax.persistence</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>org.eclipse.persistence.jpa.modelgen</artifactId>
<version>2.4.2</version>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.1.0.6.0</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
本项目的pom
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.some.domain</groupId>
<artifactId>p-parent</artifactId>
<version>1.0.0</version>
</parent>
<artifactId>m2</artifactId>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>javax.persistence</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>org.eclipse.persistence.jpa.modelgen</artifactId>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
</dependency>
</dependencies>
</project>
它是通过使用 -proc:none 作为编译器参数解决的。
场景是这样的,
我正在尝试编译一个具有一些持久性 classes 的 Maven 项目。我在 src\main\resources\
下有 persistence.xml
。这编译得很好,但是我得到 运行-time error for persistence not found 如果我手动将 persistence.xml 移动到 jar 的 META-INF
目录下(xml 文件是打包在 jar 的根目录下)。
现在,如果我将 persistence.xml
移动到 src\main\resources\META-INF
下,我会得到奇怪的编译时错误
Fatal error compiling: java.lang.RuntimeException: javax.annotation.processing.FilerException: Attempt to recreate a file for type my.package.EntityClassName_
这个EntityClassName
可以是我的任何一个实体class。
我只想打包persistence.xml到jar的META-INF目录下。 有人可以指出我错过了什么吗?
如果重要的话,我正在使用 1.6 版本的 maven 编译器源和目标。
编辑:这个项目有一个父 Maven 项目。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.some.domain</groupId>
<artifactId>p-parent</artifactId>
<version>1.0.0</version>
<packaging>pom</packaging>
<modules>
<module>m1</module>
<module>m2</module>
<module>m3</module>
</modules>
<properties>
<maven.compiler.source>1.6</maven.compiler.source>
<maven.compiler.target>1.6</maven.compiler.target>
</properties>
<scm>
<connection>scm:git:https://some.place/project.git</connection>
</scm>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>javax.persistence</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>org.eclipse.persistence.jpa.modelgen</artifactId>
<version>2.4.2</version>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.1.0.6.0</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
本项目的pom
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.some.domain</groupId>
<artifactId>p-parent</artifactId>
<version>1.0.0</version>
</parent>
<artifactId>m2</artifactId>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>javax.persistence</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>org.eclipse.persistence.jpa.modelgen</artifactId>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
</dependency>
</dependencies>
</project>
它是通过使用 -proc:none 作为编译器参数解决的。