gpt4 book ai didi

java - 通过 POM 项目编译 EJB 模块时未生成实体元模型类

转载 作者:行者123 更新时间:2023-11-30 08:09:29 24 4
gpt4 key购买 nike

我有一个像这样的 Maven 项目结构:

main (POM project)
|-ejb (POM project)
| |-data1 (EJB module)
| |-data2 (EJB module)
| |-ejb-jsf-converters (Java application)
|-web (POM project)
| |-... (A bunch of Web applications)
|-ear (POM project)
|-web1-ear (Java EE7 EAR project)
|-web2-ear (Java EE7 EAR project)

我可以按照 data1、data2、ejb-jsf-converters、web 和最后 Ear 的顺序编译所有内容。之后我可以部署 web1-ear 和 web2-ear 并且一切正常。但必须按特定顺序编译所有内容很烦人。我希望能够只编译 main。

但我不能。

问题是我在 data1 中有很多实体。这些实体当然有很多元模型类。为了生成它们,我在 data1 的 pom.xml 中有这 2 个片段:

...
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>2.4.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>javax.persistence</artifactId>
<version>2.0.5</version>
<scope>provided</scope>
</dependency>
...
<plugin>
<groupId>org.bsc.maven</groupId>
<artifactId>maven-processor-plugin</artifactId>
<version>2.2.4</version>
<executions>
<execution>
<id>process</id>
<goals>
<goal>process</goal>
</goals>
<phase>generate-sources</phase>
<configuration>
<compilerArguments>-Aeclipselink.persistencexml=src/main/resources/META-INF/persistence.xml</compilerArguments>
<processors>
<processor>org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor</processor>
</processors>
</configuration>
</execution>
</executions>
</plugin>
...

当我编译main而不是data1时,突然找不到persistence.xml,并且没有生成或找到任何元模型类。我可以改变

<compilerArguments>-Aeclipselink.persistencexml=src/main/resources/META-INF/persistence.xml</compilerArguments>

<compilerArguments>-Aeclipselink.persistencexml=ejb/data1/src/main/resources/META-INF/persistence.xml</compilerArguments>

然后我就可以编译主项目了。但是当我这样做时,我不再可以编译 data1.那么就是data1找不到persistence.xml并生成元模型类。能够编译 main 很棒,但是每次我只想编译 data1 时都被迫编译 main 是很痛苦的。编译 main 的时间是编译 data1 的 10-15 倍。

我知道我可以通过指定绝对路径而不是相对路径来使其工作,但是许多不同的机器需要编译它。它们的绝对路径不会全部相同。

我考虑过使用环境变量,但我不确定它在所有情况下都能很好地工作。例如,当项目由 Jenkins 从属编译时。

我怎样才能完成这项工作,以便我可以按照我认为合适的方式编译 main 和 data1?

最佳答案

我成功了。我将依赖项更改为

<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>2.6.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>javax.persistence</artifactId>
<version>2.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>org.eclipse.persistence.jpa.modelgen.processor</artifactId>
<version>2.5.2</version>
<scope>provided</scope>
</dependency>

并删除

<compilerArguments>-Aeclipselink.persistencexml=src/main/resources/META-INF/persistence.xml</compilerArguments>

完全。它提示编译时缺少元模型类,但它确实有效,所以很明显,无论如何都会生成类。

关于java - 通过 POM 项目编译 EJB 模块时未生成实体元模型类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30599790/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com