Realmente no sabía qué poner de manera diferente como título de una pregunta ...
Tengo 3 módulos de maven. El primero es el módulo principal y simplemente envuelve los módulos secundarios. Nada sofisticado. En el segundo módulo tengo una clase de prueba que es abstracta y tiene dos métodos.
En el tercer módulo tengo una clase de prueba que hereda la clase abstracta del segundo módulo.
Cuando intento construir esto con maven, aparece un error de compilación que dice que no puede encontrar un símbolo que sea esa clase abstracta del segundo módulo. Lo que es interesante es que no obtengo ningún error de compilación en eclipse.
Este es un pedazo de pom del tercer módulo:
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>SecondModule</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<build>
<defaultGoal>install</defaultGoal>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
</plugin>
<!-- to generate the MANIFEST-FILE of the bundle -->
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<instructions>
<Import-Package>*</Import-Package>
<Export-Package></Export-Package>
<Embed-Dependency>SecondModule</Embed-Dependency>
</instructions>
</configuration>
</plugin>
</plugins>
Este es el error que obtengo:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:testCompile (default-testCompile) on project ThirdModule: Compilation failure: Compilation failure:
[ERROR] D:/workspace/project/ThirdModule/src/test/java/org/rrrrrrr/ssssss/thirdmodule/ConcreteTest.java:[7,56] cannot find symbol
[ERROR] symbol: class AbstractTest
[ERROR] location: package org.rrrrrrr.ssssss.secondmodule
¿Qué me estoy perdiendo?
Las clases de prueba (clases dentro de src / test) no se agregan a la ruta de clases automáticamente cuando agrega una dependencia. Solo se incluyen las clases que están en src / main.
Para agregar dependencia en las clases de prueba, también debe especificarlo explícitamente especificando el tipo como test-jar en la sección de dependencia. Esta debería ser la dependencia definida en el pom.xml del módulo 3.
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>SecondModule</artifactId>
<version>${project.version}</version>
<type>test-jar</type> <!-- add dependency to test jar -->
</dependency>
También es una buena idea asegurarse de que el SecondModule genere test-jar. De lo contrario, cualquiera que necesite compilar ThirdModule necesitaría compilar SecondModule también. Por defecto, maven no empaqueta las clases de prueba en un contenedor. Para decirle a maven que haga esto, agregue los objetivos: jar y test-jar a las ejecuciones de maven-jar-plugin. De esta forma se generarían tanto el tarro original como el de prueba.
Aquí está el esquema pom.xml para el segundo módulo que ilustra esto.
<project>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>jar</goal>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras