Как использовать JPA-сущности в качестве зависимости от maven - PullRequest
0 голосов
/ 11 июля 2019

Я получил в многомодульном-maven-проекте проект лица, в котором есть несколько классов Entity и DAO.Также есть несколько интеграционных тестов, которые я хотел бы разделить в собственном проекте под названием entity-IT.Теперь я поставил entity-проект в качестве зависимости от entites-IT-project, но если я запускаю сборку, появляется сообщение об ошибке, подобное этому:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:testCompile (default-testCompile) on project entities-IT: Compilation failure
[ERROR] /some/path/to/project/entities-IT/src/it/java/com/example/persistence/dao/ExampleDaoIT.java:[25,38] cannot access com.example.persistence.ExampleEntity
[ERROR]   bad class file: /some/path/to/project/persistence/ExampleEntity.class
[ERROR]     illegal start of class file
[ERROR]     Please remove or make sure it appears in the correct subdirectory of the classpath.

Это странно, потому что в целевой папкеесть все упомянутые файлы .class, и структура папок также правильная.

Есть ли что-то, на что следует обратить внимание, если использовать Entities в качестве зависимости в другом проекте?

В pom.xmlВ проекте entity-project происходит генерация кода:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.7.0</version>
            <configuration>
            <source>1.8</source>
            <target>1.8</target>
            <compilerArguments>
                        <processor>org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor</processor>
            </compilerArguments>
        </configuration>
    </plugin>
    <plugin>
        <groupId>org.bsc.maven</groupId>
        <artifactId>maven-processor-plugin</artifactId>
        <version>2.2.4</version>
        <executions>
            <execution>
                <id>process</id>
                <configuration>
                            <outputDirectory>${project.build.directory}/generated-sources/metamodel</outputDirectory>
                <compilerArguments>
                    -Aeclipselink.persistencexml=${project.basedir}/src/main/java/META-INF/persistence.xml
                </compilerArguments>
                <processors>
<processor>org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor
                    </processor>
                </processors>
            </configuration>
        </execution>
    </executions>
</plugin>
</plugins>
...
</build>

, а затем я установил зависимость в IT-проекте entity:

<dependency>
     <groupId>example</groupId>
     <artifactId>entities</artifactId>
     <version>${parent.version}</version>
</dependency>

и запускаю тесты сОтказоустойчивый плагин:

<plugin>
     <groupId>org.codehaus.mojo</groupId>
     <artifactId>build-helper-maven-plugin</artifactId>
     <version>3.0.0</version>
     <executions>
          <execution>
               <id>add-integration-test-sources</id>
               <phase>generate-test-sources</phase>
               <goals>
                    <goal>add-test-source</goal>
               </goals>
               <configuration>
                    <sources>
                        <source>src/it/java</source>
                    </sources>
               </configuration>
           </execution>
           <execution>
                    <id>add-integration-test-resources</id>
                    <phase>generate-test-resources</phase>
                    <goals>
                        <goal>add-test-resource</goal>
                    </goals>
                    <configuration>
                         <resources>
                              <resource>
                                <filtering>true</filtering>
                                <directory>src/it/resources</directory>
                              </resource>
                         </resources>
                    </configuration>
           </execution>
      </executions>
</plugin>

<plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-failsafe-plugin</artifactId>
     <version>3.0.0-M3</version>
     <executions>
          <execution>
               <id>integration-test</id>
               <goals>
                    <goal>integration-test</goal>
                    <goal>verify</goal>
               </goals>
           </execution>
     </executions>
</plugin>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...