Tengo un problema muy extraño con Maven y la ETP de Eclipse. Tengo un proyecto de varios módulos, llamémoslo project
. Se compone de dos módulos project-base
y project-web
. Tengo habilitada la resolución del espacio de trabajo (y funciona bien con muchos otros proyectos Maven muy similares).¿Por qué el complemento WTP implementa una dependencia de Maven como una carpeta, en lugar de un contenedor?
project-base
es una dependencia de project-web
y normalmente se implementa como un archivo jar. Sin embargo, durante varios días, que sigue siendo desplegado como una carpeta de clase en mi Tomcat locales, como se puede ver aquí:
Por lo tanto, mi Tomcat no reconoce ninguna de mis archivos de clase allí, porque les espera ser frascos, no carpeta. El sufijo -tests
proviene de la necesidad de tener la prueba desde la base en mi proyecto web. No creo que este sea el problema.
project-web
tiene tres dependencias que se resuelven desde el área de trabajo. Dos de ellos se despliegan correctamente, como jar, pero el tercero no.
project-base
's pom.xml se muestra aquí:
<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>
<artifactId>project</artifactId>
<groupId>com.company.project</groupId>
<version>4.0.0</version>
</parent>
<artifactId>project-base</artifactId>
<name>projectBase</name>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>windows-1251</project.build.sourceEncoding>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.2</version>
<executions>
<execution>
<goals>
<goal>jar</goal>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>2.4</version>
</plugin>
</plugins>
</build>
</project>
La dependencia project-base
tal como se define en project-web
se parece a esto:
<dependency>
<groupId>com.company.project</groupId>
<artifactId>project-base</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.company.project</groupId>
<artifactId>project-base</artifactId>
<version>${project.version}</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
no tengo una idea de por qué uno la dependencia se implementa de una manera tan extraña y no sé cómo solucionarlo. Limpié los proyectos, tomcat, rediseñé el proyecto web, purgué todo mi repositorio Maven, revisé todo el proyecto desde VCS, nada ayudó.
¿Qué podría hacer que Eclipse WTP despliegue esta dependencia como una carpeta en lugar de un archivo jar?
Aunque no explica ** por qué **, [esta pregunta] (http://stackoverflow.com/questions/8944278/m2eclipse-and-or-wtp-not-packaging-a-dependency-correctly) proporciona un trabajo que nos ayudó – chrisbunney
@chrisbunney ¡Gracias por la información! Intenté el truco, pero no funcionó para mí. Eliminé todos los archivos específicos de Eclipse y dejé que maven los regenerara, pero la situación no se modificó. – guerda